Version 1

    This process is used for installations making use of Infinispan as a remote grid, via REST.  This assumes an upgrade of the Infinispan grid, and not the client application.

    In the following description we will refer to the Source and Target clusters, where the Source cluster is the old cluster which is currently in use and the Target cluster is the new cluster to which the data will be migrated to.

     

    Steps

    1. Start a new cluster (Target Cluster) with the new version of Infinispan, using either different network settings or JGroups cluster name so that the old cluster (Source Cluster) and the new one don't overlap.
    2. For each cache to be migrated, the Target Cluster is configured with a RestCacheStore with the following settings:
      1. host and port should point to the Source Cluster
      2. path must point to the REST endpoint of the Source Cluster
    3. Configure clients to point to the Target Cluster instead of the Source Cluster, and one by one, restart each client node.  Gradually, all requests will be handled by the Target Cluster rather than the Source Cluster. The Target Cluster will lazily load data from the Source Cluster on demand via the RestCacheStore.
    4. Once all connections have switched to using the Target Cluster the keyset on the Source Cluster must be dumped. This can be achieved either via a JMX operation or via the CLI:
      1. JMX: invoke the recordKnownGlobalKeyset operation on the RollingUpgradeManager MBean on the Source Cluster for all of the caches that need to be migrated
      2. CLI: invoke the upgrade --dumpkeys command on the Source Cluster for all of the caches that need to be migrated (additionally the --all switch can be used to dump all caches in the cluster)
    5. At this point the Target Cluster needs to fetch all remaining data from the Source Cluster:
      1. JMX: invoke the synchronizeData operation specifying the "rest" parameter on the RollingUpgradeManager MBean on the Target Cluster for all of the caches that need to be migrated
      2. CLI: invoke the upgrade --synchronize=rest command on the Target Cluster for all of the caches that need to be migrated (additionally the --all switch can be used to synchronize all caches in the cluster)
    6. Once the above operation is complete, the RestCacheStore on the Target Cluster must be disabled as follows:
      1. JMX: invoke the disconnectSource operation specifying the "rest" parameter on the RollingUpgradeManager MBean on the Target Cluster for all of the caches that have been migrated
      2. CLI: invoke the upgrade --disconnectsource=rest command on the Target Cluster for all of the caches that have been migrated (additionally the --all switch can be used to disconnect all caches in the cluster)
    7. The Source Cluster can be decomissioned now.