Hi all,

Re: https://issues.jboss.org/browse/ISPN-3318
Re: https://docs.jboss.org/author/display/ISPN/Rolling+upgrades

I've been thinking about this migration stuff, and I came to the conclusion 
that for anyone that wants to migrate cache store data and are using Hot Rod or 
REST, they should use existing rolling upgrade system. That'll give them the 
ability directly (thanks to cache.keySet() returning keys in cache store) to 
fetch all data from the cache store, in the old format, and be able to apply to 
new cluster, in new format, without the need of extra code to deal with cache 
store lower level details.

The big question is though, how to migrate cache store data for those embedded 
caches. If you extrapolate what I said above, the question might really be: how 
to do rolling upgrades of embedded/library mode caches. 

The main problem here is that you could think of configuring the target cluster 
with cache store details of the source cluster, but this won't work: Infinispan 
6.0 cannot read Infinispan 5.x cache stores. All the classes and formats for 
Infinispan 5.x are gone from the source code in Infinispan 6.0. 

There's three ways to resolve this:

a) Bring back Infinispan 5.x classes to 6.0 to be able to read 5.x cache stores 
directly from 6.0.
b) Develop some code for Infinispan 5.x to dump cache store data into a file or 
somewhere in a given format and then read that from 6.0.
c) Use CLI to connect from new cluster to the old cluster and fetch all keys.

I think the easiest thing would be to do c), developing a CLISourceMigrator 
(implements org.infinispan.upgrade.SourceMigrator) to be able to read all keys 
from the source embedded cluster. However, I don't see anywhere in the CLI a 
command that returns back all keys. Upgrade with DUMPKEYS simply calls up the 
local SourceMigrator.recordKnownGlobalKeyset. We'd need such a command in 
Infinispan 5.x and 6.x, the former to send all keys and the latter to request 
them.

We'd also need a CLITargetMigrator which is pretty straightforward to do since 
once we have all keys, it's easy to loop through them and request them using 
CLI's Get operation.

@Tristan, you're the rolling upgrade meister, how does this sound? If we get 
this right, we'd not only get cache store migration, but also embedded/library 
cluster rolling upgrade.

Cheers,
--
Galder Zamarreño
[email protected]
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org


_______________________________________________
infinispan-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to