Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Activate Gossip Migration #804

Open
dnwiebe opened this issue Jul 27, 2024 · 1 comment
Open

Activate Gossip Migration #804

dnwiebe opened this issue Jul 27, 2024 · 1 comment

Comments

@dnwiebe
Copy link

dnwiebe commented Jul 27, 2024

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
@kauri-hero
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 📋 Backlog
Development

No branches or pull requests

2 participants