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.
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:
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.
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.
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 |
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.