[infinispan-dev] Fwd: Backward compatibility and rolling upgrades

Bela Ban bban at redhat.com
Wed May 16 09:11:45 EDT 2012


Configuration changes within the *same* version, such as going from 
NAKACK to NAKACK2, would also have to go through the mechanism you 
suggested.
Handling class loader issues alone will be tricky...

I thought about a simple&stupid approach: at the end of the day, all we 
care about is the data, in-memory and on-disk (cacheloaders). So how 
about the following:
- Cluster A is running on version 4
- Start a cluster B, running on version 5
- Slowly transfer the state of cluster A into B
- When done, switch the clients over to B. If the clients run inside the 
same JVM, activate them in cluster B
- Shut down cluster A


The state transfer from A to B would be similar to the non-blocking 
state transfer:
- Perhaps insert a new interceptor (at runtime) into all nodes in A
- Copy all modification in A to a queue
- Iterate over the data and send it to cluster B. This could potentially 
be done via Hot Rod.
- When done, send the queued data to B and clear the queue (short period 
of synchrionization here)


We would have to make sure that state on-disk (e.g. persisted via a 
cacheloader to a DB) would also get transferred. Hmm, maybe not, if 
Infinispan can handle data stored in version A from version B...

WDYT ?

-- 
Bela Ban, JGroups lead (http://www.jgroups.org)


More information about the infinispan-dev mailing list