This topic explains how to upgrade VMware Tanzu GemFire from version 9 to version 10.

Tanzu GemFire version 10 and version 10.1 introduce changes for version 9 applications and version 10 applications.

Updating your applications will likely require more intervention than only recompiling them.

In general, you will experience better performance and reliability if your clients and servers both run the latest versions of their software.

Overview of Changes

VMware GemFire versions 10 and 10.1 contain a number of new features and improvements, including the following:

Upgrades from version 10 to version 10.1

Upgrades from version 9 to version 10

VMware GemFire also includes functionalities that are implemented extensions that are downloaded separately, including the following:

Segmented Disk Store

GemFire version 10.1 includes a new disk store implementation, the segmented disk store. The segmented disk store improves the disk store read and write performance and recovery speed. Beginning with GemFire version 10.1, all new disk stores are created as segmented while existing disk stores continue to operate as non-segmented. To realize the performance enhancements, all disk stores should be upgraded to segmented disk stores. Segmented disk stores have the potential to utilize more disk space at runtime, so considerations should be made for adjusting any max-oplog-size settings you may have on existing disk store configurations.

For more information about disk stores, see Defining and Configuring Disk Stores, or for upgrading existing disk stores, see the gfsh upgrade offline-disk-store command.

New Connection Limit Settings

Version 10.1 adds two parameters to more precisely tune client connections to the server that implement single-hop operations to and from partitioned regions. The new parameters are max-connections-per-server and min-connections-per-server. They take effect when pr-single-hop-enabled=true, overriding the settings of max-connections and min-connections. Because pr-single-hop-enabled=true is the client pool’s default setting, the new per-server parameters are also in effect by default.

For legacy applications, a conversion formula is applied to convert existing max-connections and min-connections settings to equivalent max-connections-per-server and min-connections-per-server settings. See Configuring Client Single-Hop Access to Partitioned Regions for details.

Secure Peer-to-Peer Communication

In version 10, all message traffic between GemFire servers uses TCP sockets for better security, performance and maintainability. In earlier versions, the UDP protocol and the JGroups library were used for some communications between cluster members, primarily for membership operations such as join/leave requests and heartbeats.

Beginning with version 10, all member-to-member communications use TCP/IP. The JGroups library is distributed with GemFire version 10 to support upgrades from earlier versions.

Deprecated UDP-related Configuration Settings

The following UDP related configuration settings are deprecated in 10.0:

  • udp-dhalgo
  • udp-fragment-size
  • udp-recv-buffer-size
  • udp-send-buffer-size
  • disable-tcp
  • mcast-port
  • mcast-address
  • mcast-flow-control
  • mcast-recv-buffer-size
  • mcast-send-buffer-size
  • mcast-ttl

Deprecated Region Attribute

The following region attributed is deprecated in 10.0:

  • multicast-enabled

Additional Properties

The following properties are added in 10.0:

  • use-udp-membership-messenger - Defaults to false.

    Setting this property to true will cause GemFire 10 to use the older UDP based messaging that was used in prior versions. Setting this property is not necessary for rolling upgrades from GemFire 10. It should only be used if there is a reason to continue using UDP instead of TCP with GemFire 10.

Removing the JGroups Library

With Tanzu GemFire version 10, the JGroups library is still included in order to support rolling upgrades from Tanzu GemFire version 9. However, if all servers are running GemFire 10, it is possible for a user to remove the JGroups library without impacting the system.

You may wish to remove the JGroups library from GemFire, due to CVEs in the version of JGroups that is shipped with GemFire. The code related to these CVEs is not used in GemFire, so they do not represent a security risk to GemFire customers, but CVE scanners still flag JGroups as vulnerable.

To run GemFire without JGroups, following these steps:

  1. Set the system property gemfire.disable-udp=true.

  2. Remove the JGroups .jar library from the /lib directory, i.e.: rm ./lib/jgroups-3.6.14.Final.jar

  3. Remove the JGroups dependency from module.xml files. In the file /moduleDescriptors/gemfire/main/module.xml, delete this line:

    <resource-root path="${gemfire.home}/lib/jgroups-3.6.14.Final.jar"/>
    

WAN Delta Replication

In version 10, WAN replication supports sending delta updates between distributed systems to improve the network speed and efficiency.

Improved JSON Support

The JsonDocumentFactory API replaces the JSONFormatter API. The JSONFormatter API has been deprecated in GemFire v10.

The JsonDocumentFactory API allows you to convert a JSON String into a binary form that can be stored in a GemFire region. GemFire accesses each field in the binary form without needing to re-parse JSON or deserialize the binary form. For information about using the JsonDocumentFactory API, see Adding JSON Documents to the GemFire Cache.

GemFire Search

VMware GemFire Search replaces Apache Lucene® in VMware GemFire version 10.

GemFire Search is a search engine that provides indexing and searching capabilities when used with VMware GemFire. GemFire Search is built using the widely-used Java full-text search engine Apache Lucene®. GemFire Search uses the Lucene name in syntax and APIs.

If the GemFire cluster is to be upgraded to GemFire 10 from an earlier version by restarting the cluster with its previously-generated cluster configuration, you must first use gfsh to destroy the Lucene indexes on persistent regions before restarting the cluster.

For more information about GemFire Search, see the VMware GemFire Search product documentation.

Product Default Changes

Default values for the following GemFire properties and class parameters have changed in GemFire version 10:

GemFire Property
or Parameter
Default Value Old default (v9 and earlier)
enable-time-statistics true false
socket-lease-time 1800000 milliseconds
(30 minutes)
60000 ms (1 min)
PoolFactory.DEFAULT_IDLE_TIMEOUT 120000 milliseconds
(2 minutes)
5000 milliseconds
(5 seconds)
CacheServer.DEFAULT_MAX_CONNECTIONS 1200 800

Classloader Isolation

GemFire v10 deploys JAR files using a classloader isolation model. JAR files are loaded into their own classloaders which are isolated from the rest of the system and from each other. Deployments are able to access classes from other deployed JAR files and from the system, but will look inside their own classloaders first before looking externally.

Classloader isolation is the default setting and is recommended for all new implementations. Chained classloading was the GemFire version 9 default, and is provided in support of legacy applications. Classloader isolation can be disabled using the flag –disable-classloader-isolation=true when starting members through gfsh using the start command.

Classloader Isolation Affects Embedded Servers and Locators

Processes that have embedded locators or servers must use the GemFire v10 class loader isolating module bootstrap method to gain new features, such as class loader isolation and GemFire Search. See Start a Locator Programmatically and Start a Server Programmatically for more details.

JDK Support

GemFire v10 is certified for use with JDK 8, JDK 11 and JDK 17. Starting with version 10.0, JDK 11 is the preferred JDK version. See Java Support for details.

JDK Recommended Version Minimum Version
8 latest u361
11 latest 11.0.18
17 latest 17.0.6

New Environment Variable: GEMFIRE_HOME

In GemFire version 10, the environment variable GEMFIRE_HOME points to the VMware GemFire top-level installation directory, superseding the deprecated GEODE_HOME environment variable.

check-circle-line exclamation-circle-line close-line
Scroll to top icon