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.

In general, you will have best performance and reliability if clients and servers both run the latest versions of their respective software.

Overview of Changes

VMware GemFire version 10 contains a number of new features and improvements, including:

VMware GemFire also includes functionalities that are implemented as separately-downloadable extensions, including:

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

Updated Tomcat Sessions Caching

GemFire v10 includes the following updates to Tomcat session management:

  • The Tomcat extension has been updated to support Tomcat Version 10. Tomcat 10 introduces support for Jakarta EE 9.
  • Support for Tomcat versions 8.5 and 9 has been retained.
  • Support for unsupported Tomcat versions 7 and 8 has been removed.
  • Support for TC Server has been removed.

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