During a push, wouldn't you hit consistency issues with ongoing (applictaion-initiated) writes on the new cluster?

On 13 Feb 2013, at 09:09, Tristan Tarrant <ttarrant@redhat.com> wrote:

Hi all,

the current implementation of rolling upgrades is lacking in a few areas which I think warrant urgent attention in the scope of JDG 6.1 (i.e. for the 5.2.x-cycle):

  • support for rolling upgrades from JDG 6.0.x to JDG 6.1.x
  • efficiency of the bulk key synchronization (all keys are serialized into a single key which the target cluster uses to *suck* all data from the source cluster).


During the Infinispan 5.2 cycle I added support in RemoteCache+RemoteCacheStores to be able to fetch the entries complete with metadata (i.e. expiration/maxIdle). Unfortunately this feature is not available in Infinispan 5.1, and therefore the implementation may only be able to fetch naked key/values, losing mortality information.
To partially overcome this issue, and also to solve the above efficiency issue, I would like the synchronization phase of the rolling upgrade to be a push operation from the source cluster to the target cluster: instead of dumping the keyset into a single key, the source cluster would initiate a distributed task which would cycle through the entire keyset and PUT to the target cluster complete with the correct expiration information (if the source cluster uses JDG 6.1 this could probably be a GET, which would trigger the usual getWithMetadata).


Comments, thoughts.

Tristan

_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

--
Manik Surtani

Platform Architect, JBoss Data Grid