Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Abandoned
-
None
-
None
-
None
Description
There's an issue of handling newer versions of RFile and WALs in the middle of a rolling restart.
1. Server1 is restarted as the new version
2. Server1 writes some new data
3. Server1 dies
4. Server2 (still old version) gets the tablets from Server1
We need to ensure that there is control to limit the new software from writing out new versions of persistent files while there are still old versions of the software participating in the instance. It's similar to finalizing an upgrade: after we're sure that all of the servers have been upgraded and are functioning well, we can flip them over to using new messages/serialization that the old versions aren't aware of.
This problem gets much easier after we adopt Thrift/PB for serializing things because both of those can naturally read newer versions of messages they know about, ignoring the new fields.
Ideally, we should define an API which rolling restart (ACCUMULO-1454) can leverage, but there are many ways we could go about the "feature".