Upgrade to 0.20.0 sees KryoException

Hello,

I have been playing with a 3-node 0.19.0 zeebe cluster, and it worked really well. Thank you for this wonderful project. Now, after upgrading to 0.20.0 (updated docker image), all three brokers halt at the following error message. Looks like 0.20.0 is not compatible with snapshot data generated by 0.19.0. In general, is there a way to migrate existing data to a newer zeebe version, or do we have to wipe out existing data, and start afresh?

18:44:54.639 [] [raft-server-raft-atomix-partition-2-state] ERROR io.atomix.protocols.raft.impl.RaftServiceManager - RaftServer{raft-atomix-partition-2} - Expected to read snapshot, but caught a non recoverable error; blocking thread to avoid applying further entries and creating inconsistencies
com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 57
	at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:137) ~[kryo-4.0.2.jar:?]
	at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:693) ~[kryo-4.0.2.jar:?]
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:804) ~[kryo-4.0.2.jar:?]
	at io.atomix.utils.serializer.Namespace.lambda$null$2(Namespace.java:411) ~[atomix-utils-3.2.0-alpha4.jar:?]
	at com.esotericsoftware.kryo.pool.KryoPoolQueueImpl.run(KryoPoolQueueImpl.java:58) ~[kryo-4.0.2.jar:?]
	at io.atomix.utils.serializer.Namespace.lambda$deserialize$3(Namespace.java:409) ~[atomix-utils-3.2.0-alpha4.jar:?]
	at io.atomix.utils.serializer.KryoIOPool.run(KryoIOPool.java:45) ~[atomix-utils-3.2.0-alpha4.jar:?]
	at io.atomix.utils.serializer.Namespace.deserialize(Namespace.java:407) ~[atomix-utils-3.2.0-alpha4.jar:?]
	at io.atomix.utils.serializer.Serializer$1.decode(Serializer.java:76) ~[atomix-utils-3.2.0-alpha4.jar:?]
	at io.atomix.protocols.raft.impl.RaftServiceManager.initializeService(RaftServiceManager.java:693) ~[atomix-raft-3.2.0-alpha4.jar:?]
	at io.atomix.protocols.raft.impl.RaftServiceManager.installService(RaftServiceManager.java:550) ~[atomix-raft-3.2.0-alpha4.jar:?]
	at io.atomix.protocols.raft.impl.RaftServiceManager.install(RaftServiceManager.java:517) ~[atomix-raft-3.2.0-alpha4.jar:?]
	at io.atomix.protocols.raft.impl.RaftServiceManager.lambda$apply$12(RaftServiceManager.java:435) ~[atomix-raft-3.2.0-alpha4.jar:?]
	at io.atomix.utils.concurrent.SingleThreadContext$1.lambda$execute$0(SingleThreadContext.java:53) ~[atomix-utils-3.2.0-alpha4.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_212]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_212]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_212]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_212]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]

Hi @liuyu, thanks for reporting this!

You’re right, 0.20.0 is not compatible with the Raft snapshots produced by 0.19.0; it seems we missed listing a breaking change in the change log. To upgrade from 0.19.0 to 0.20.0 you unfortunately need to start fresh again, and I’m sorry to say there is currently no recommended way to migrate the data from one version to another.