|
With the recent write-only optimizations to elide the transaction actor and go directly to the shard, we no longer send the CreateTransaction message. Therefore, the TransactionProxy doesn't know the shard's version in order to handle compatibility.
We need the FindPrimaryShard message to return the shard leader's version. This can be maintained by the ShardManager - we just need to include the version with the LeaderStateChanged message and send a LeaderStateChanged message when the leader's version changes.
To obtain the leader's version, we can include it with the AppendEntries message. The follower should also send back it's version in the AppendEntriesReply which AbstractLeader can track in the FollowerInformation. This will also lay the groundwork for a newer-version leader to lead an older-version follower.
|