Performing a Rolling Upgrade

A rolling upgrade allows you to keep your existing distributed system running while you upgrade your members gradually.

Supported Versions for Rolling Upgrade

GemFire supports a rolling upgrade between minor versions. A minor version corresponds to an increment in the third place position in a version number. For example, you can perform a rolling upgrade from vFabric GemFire 6.6.0 to 6.6.1 or GemFire 6.6.1 to 6.6.4.

Rolling upgrade is not supported between major versions. A major version corresponds to an increment in either the second or the first position in a version number. For example, you cannot perform a rolling upgrade from vFabric GemFire 6.5 to 6.6 or a rolling upgrade from GemFire 6.6.4 to 7.0.

Note: Rolling upgrade applies only to the peer members or cache servers within a distributed system cluster. It does not apply to overall multi-site (WAN) or client-server deployments since the version interoperability is looser between clients and servers and between different WAN sites. See vFabric GemFire Version Compatibility Rules for more details on how different versions of GemFire can interoperate.

How to Perform a Rolling Upgrade

This section describes the process used to perform a rolling upgrade.

To upgrade each member process, perform the following steps:
  1. Install the new version of the software (alongside the older version of the software) on the node (either via JAR or RPM).
  2. Stop the process that you are upgrading.
  3. If you are using PDX and upgrading from GemFire 6.6.0 or 6.6.1 to GemFire 6.6.2 or 6.6.3, set the system property -Dgemfire.serializationVersion=6.6.0 or -Dgemfire.serializationVersion=6.6.1.
  4. Point the upgraded member to the new installation of GemFire and update the environment. For example, you may need to do one or more of the following tasks depending on your application's configuration:
    1. Update your classpath.
    2. Modify your applications to point to the new GemFire product tree location.
    3. Copy the gemfire.jar file out of the new GemFire product tree location and replace the existing gemfire.jar file in your application.
  5. Restart your process.
  6. Check for successful upgrade on the member.
  7. Upgrade the next member.
  8. After all members have been upgraded (including clients), you can remove the system property gemfire.serializationVersion from all members. Removing the system property will improve PDX serialization performance.

Rolling Upgrade Limitations

  • The shut-down-all command does not work in a mixed version environment. Do not use this command while performing a rolling upgrade.
  • Rolling upgrades should be performed during lower system activity to minimize risk of problems, such as:
    • Network partition detection may not work properly. If you are upgrading to vFabric GemFire 6.6.2 or later with network partition detection turned on, in the event that a network partition occurs and is detected by members running 6.6.2 or later, the members that are not running 6.6.2 may not receive the proper notification.
    • If any application code has been upgraded as well, any differences in application code may result in different or inconsistent behavior during the upgrade, especially if some nodes are running the old code and some are running the new code.