For me "compatibility level" looks like a complex and dangerous concept.
It really must be enough to have versioned protocol, when newer protocol fully understands older ones. And there is no need to store the protocol version with each object, because it must be enough to send it on handshake and store it to persistent storage metadata. The only issue here is that we are trying to marshal messages only once during a broadcast while with this approach we must make sure that such a reuse of bytes happens only when protocol is the same for all nodes or we must group receiver nodes by protocol version. Sergi 2015-09-30 12:03 GMT+03:00 Yakov Zhdanov <yzhda...@apache.org>: > >> 6) Node A restarts and meets unknown B-protocol. > > 6.1 Node A throws exception on start > 6.2 Or node A invalidates persistent store (ignores the prev state) > 6.3 Or user should have ability to specify converter somehow. Converter > logic should be provided with release of new protocol (with more recent > versions) so user can plug it in to older versions. > > Thoughts? > > --Yakov >