Details
-
Improvement
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
None
Description
Currently, schema migrations can be replayed from one node to another in any of three ways:
- a node processes a migration from a client, and pushes it to all live nodes (Migration.announce on the source)
- a node sees that another node's schema version is older than his (MigrationManager.onChange on the source)
- a node sees that his own schema version is older than another's and makes an explicit request (MigrationManager.onChange on the target, DefinitionsAnnounceVerbHandler on the source)
The last of these is an optimization that isn't worth the extra complexity – under normal conditions, the initial announce from the coordinator updates everyone, and in recovery situations the latency gain of #3 over #2 is only a few seconds.