Pivotal GemFire 9.4 Release Notes

Pivotal GemFire 9.4 is based on Apache Geode version 1.5. Pivotal GemFire 9.4 and Apache Geode share a common set of documentation. Therefore, references to both GemFire and Apache Geode appear throughout this documentation; consider them equivalents.

What’s New in Pivotal GemFire 9.4

Pivotal GemFire 9.4 includes the following improvements:

  • Added support for arithmetic operators (mod, %, +, -, /, and *) in the WHERE clause of OQL queries.

  • Added a new API to destroy a gateway receiver within the GatewayReceiver interface.

  • There is a new Geode example that demonstrates expiration.

  • The Geode example on client security now uses SSL.

  • Improved the eviction algorithm’s performance to be more consistent.

  • When a transaction destroys a region entry on a region that has eviction, the region will now be available for garbage collection.

  • Backup code is now more modular and extendable for future plugins.

  • The ALL_KEYS or List parameter to the Region.registerInterest method has been deprecated. The Region interface API has been enhanced to include register interest methods specifically for all keys and a list of keys.

  • New and enhanced gfsh commands:

    • Attempting to connect an older version of gfsh to a newer version locator now fails.
    • You can supply arguments via gfsh while initializing a Declarable object.
    • There is a new gfsh command to create a JNDI binding.
    • You can set a custom expiry for create and alter region gfsh commands. The gfsh describe region command lists the custom expiry setting.
    • A gfsh connect command now infers the correct connection mechanism of HTTP or HTTPS.
    • The --template-region option of the gfsh create region command has been deprecated.

Installing Pivotal GemFire 9.4

You can download Pivotal GemFire 9.4 from the Pivotal GemFire product download page.

For details on how to install Pivotal GemFire 9.4, see Installing Pivotal GemFire.

Note that the file name extension for the compressed TAR file is .tar.gz (rather than .tgz).

Upgrading to Pivotal GemFire 9.4

To upgrade from an earlier version of GemFire to the current version, see Upgrading Pivotal GemFire.

When servers are upgraded to this GemFire version from a version prior to version 9.1.1, their authentication of client messages is disabled in order to facilitate rolling upgrades. If your clients are set up to send authenticated messages, the servers will honor those messages, but will not enforce authentication until you reinstate authentication on each of the upgraded servers.

To reinstate secure client/server messaging, restart each server with the geode.disallow-internal-messages-without-credentials system property set to true. For example:

gfsh>start server --name=server_name --dir=server_config_dir \

Resolved Issues

The GemFire 9.4.0 release is based on the Apache Geode 1.5 release. Here is a list of all issues resolved for Geode 1.5.

Issues Resolved in Pivotal GemFire 9.4.0

The following issues have been resolved in GemFire 9.4.0. Ticket numbers of the form GEODE‑NNNN can be inspected at the Apache Software Foundation site for Geode issues.

Gfsh Issues

GEODE-3540: Fixed a bug that prevented gfsh destroy gateway-sender from working properly.

GEODE-4061: The gfsh list members output indicates which member is the membership coordinator.

GEODE-4332: The gfsh start locator command with the --connect=false option no longer displays that the cluster configuration service is up and running.

GEODE-4354: The gfsh create region command option --skip-if-exists has been renamed to --if-not-exists.

GEODE-4373: Restored the gfsh describe region output to again show the accessor region description.

GEODE-4394: The gfsh put command option --skip-if-exists has been renamed to --if-not-exists.

GEODE-4787: Reinstated the management REST API endpoints for the gfsh create index and gfsh create region commands.

Other Management & Monitoring Issues

GEODE-800, GEM-1898: The class loading mechanism resolves classes found within nested jars.

GEODE-3974: Improved authorization permissions.

GEODE-4013, GEM-1821: Fixed a bug that caused the JVM to exit before completing the shutdown of a cache server with a server launcher.

GEODE-4287: Fixed a bug in which the gfsh session incorrectly disconnects after executing a function when connected to a JMX manager on a server.

GEODE-4309, GEODE-4320, GEM-1894: The redacting of arguments is properly applied to system properties.

GEODE-4604, GEM-1893: Fixed a bug in the permissions check with the REST API.

GEODE-4633: The peer-auth-init property is no longer deprecated.

GEODE-4691: The gfsh start locator command has more consistent behavior when auto-connecting with a security manager.

Storage Issues

GEODE-3554: The javadocs now document the risk of deadlock when invoking getAnyInstance() from within any CacheCallback implementation. Applications should instead use EntryEvent.getRegion().getCache(), RegionEvent.getRegion().getCache(), LoaderHelper.getRegion().getCache(), or TransactionEvent.getCache().

GEODE-4051: Eliminated a potential deadlock situation during bucket recovery when two servers have crashed at the same time.

GEODE-4573: Transactions no longer start unexpectedly, if the first operation is a query.

Queues & Queries Issues

GEODE-4184, GEM-1860: Fixed a problem in which index update threads were hanging and causing high CPU usage.

GEODE-4306, GEM-1880: Fixed an issue in which the expiration of data in the client side cache was not working as intended for entry-time-to-live.

GEODE-4744: Fixed a bug that caused an exception when security was enabled and the WHERE clause of an OQL query invoked a Region.get method.

Communications Issues

GEODE-3948: The new client property subscription-timeout-multiplier enables the timeout of a subscription feed with failover to another server.

GEODE-4094: Removed race condition in which the ClientHealthMonitor could cause a NullPointerException in ServerConnection.

GEODE-4147: Improved client load balancing logic by introducing variability in the quantity of time clients delay until checking again.

GEODE-4285, GEM-1146: Fixed a race condition when finding a PDX type during a get operation by adding a distributed lock and retrying.

GEODE-4450: Setting a client/server Diffie-Hellman algorithm no longer breaks client/server subscriptions.

GEODE-4511, GEM-384: Removed the automatic creation of client default pool, instantiating one only when it is required.

GEODE-4615, GEM-1902: Prevented a possible deadlock by disallowing adding a connection to the ConnectionMap when it is being closed.

GEODE-4632: Fixed a bug in member view handling that occurred when a new member coordinator is selected. Public encryption keys are now transferred from the old membership view to the new one.

GEODE-4672: Fixed a serialization property (validate-serializable-objects) that prevented startup under JDK 9.

Known Issues

The following known issues affect GemFire 9.4:

GEM-1197: If the initialization of a Spring container is not complete upon the start or restart of an embedded locator, deadlock can result. Avoid this issue by completing Spring container initialization before starting locators or servers; start GemFire processes in the Spring container’s startup event.


General support includes security vulnerability resolutions and critical bug fixes in all supported minor versions, while other maintenance is applied only to the latest supported minor release.

Obtaining and Installing Security Updates

New versions of Pivotal GemFire often include important security fixes, so Pivotal recommends you keep up to date with the latest releases.

For details about any security fixes in a particular release, see the Pivotal security page.