You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Gossip migration machinery in the Node is written, working, and unit-tested, but not yet complete. Two things remain to be done.
First, the existing architecture is inefficient. MigrationStep::migrate() returns a Result<Vec<u8>>, which means it must perform an unnecessary serialization step after its conversion; then this serialization must be deserialized by the caller. MigrationStep and the structure it fits into should be simplified to eliminate this extra serialization/deserialization cycle. This will require more generic-type manipulation than is currently done by the code; it's possible that early versions of Rust were incapable of this, and that's why the inefficiency was tolerated.
Second, each of these VersionedData structs must have a migration written for it (probably using the migrate_value! macro) that can migrate data from the future backward into the _0v1 versions. Without these migrations, the entire migration subsystem is useless.
DnsResolveFailed_0v1
ClientRequestPayload_0v1
ClientResponsePayload_0v1
Gossip_0v1
GossipFailure_0v1
NodeRecordInner_0v1
The text was updated successfully, but these errors were encountered:
Can consider a type of log that will instruct user that gossip version is not compatible
Would need to determine if this is feasible and when a Node determines it's gossip is out of date and would never encounter older Nodes to connect to
The Gossip migration machinery in the Node is written, working, and unit-tested, but not yet complete. Two things remain to be done.
First, the existing architecture is inefficient.
MigrationStep::migrate()
returns aResult<Vec<u8>>
, which means it must perform an unnecessary serialization step after its conversion; then this serialization must be deserialized by the caller.MigrationStep
and the structure it fits into should be simplified to eliminate this extra serialization/deserialization cycle. This will require more generic-type manipulation than is currently done by the code; it's possible that early versions of Rust were incapable of this, and that's why the inefficiency was tolerated.Second, each of these
VersionedData
structs must have a migration written for it (probably using themigrate_value!
macro) that can migrate data from the future backward into the_0v1
versions. Without these migrations, the entire migration subsystem is useless.DnsResolveFailed_0v1
ClientRequestPayload_0v1
ClientResponsePayload_0v1
Gossip_0v1
GossipFailure_0v1
NodeRecordInner_0v1
The text was updated successfully, but these errors were encountered: