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.
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:
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.
The following UDP related configuration settings are deprecated in 10.0:
The following region attributed is deprecated in 10.0:
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.
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:
Set the system property gemfire.disable-udp=true
.
Remove the JGroups .jar library from the /lib directory, i.e.: rm ./lib/jgroups-3.6.14.Final.jar
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"/>
In version 10, WAN replication supports sending delta updates between distributed systems to improve the network speed and efficiency.
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.
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.
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 |
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.
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.
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 |
GemFire v10 includes the following updates to Tomcat session management:
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.