Pivotal GemFire Release Notes

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

GemFire v9.3.3 is patch release for GemFire v9.3 customers that incorporates bug fixes.

For detailed information on issues resolved in GemFire v9.3.3, see Issues Resolved in Pivotal GemFire 9.3.3.

Important: GemFire v9.3.3 is not intended as an upgrade target for users of GemFire version 8. Version 8 users should upgrade to v9.5, at minimum. Better yet, if you are migrating from an any earlier version of GemFire, we recommend that you upgrade to the latest release of the GemFire software.

What’s New in Pivotal GemFire 9.3

Pivotal GemFire 9.3 includes the following improvements:

  • New and enhanced gfsh commands to allow users to perform many operations from the command line that were previously available only via APIs, including:

    • New alter async-event-queue and delete async-event-queue commands
    • New eviction options for the create region command, including --eviction-action, --eviction-entry-count, eviction-max-memory, and eviction-object-sizer
    • An --if-exists option for the destroy disk-store, destroy gateway-sender, destroy index, and destroy region commands, so they can be run multiple times without throwing errors
    • Enhanced output for the describe region command includes information about async event queues and gateway senders
    • Enhanced list member output includes coordinator information
  • Lucene indexing for nested objects - see Apache Lucene Integration for details.

  • An optional asynchronous eviction algorithm that may be more efficient than the LRU scheme for many system configurations. (See the javadocs for org.apache.geode.internal.cache.eviction for details.) The asynchronous algorithm can be invoked by setting the gemfire.EvictionScanAsync property, and can be further tuned with the properties gemfire.EvictionScanMaxThreads and gemfire.EvictionScanThresholdPercent. For example:

  gfsh>start server --name=server1 --J=-Dgemfire.EvictionScanAsync=true \
    --J=-Dgemfire.EvictionScanMaxThreads=1 --J=-Dgemfire.EvictionScanThresholdPercent=10
  • Hash indexes and hash index APIs are deprecated; they are still operative, but will be removed in a future release. Improvements to one of the functional indexes (compact range index) reduce the memory consumption of that index and make it similar in size to a hash index, but the keys still are stored in memory. This compact range index is a good replacement for the hash index in most cases. Its read/write performance is also faster than that of the hash index.

Installing Pivotal GemFire 9.3

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

For details on how to install Pivotal GemFire 9.3, 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.3

Important: GemFire v9.3.3 is not intended as an upgrade target for users of GemFire version 8. Version 8 users should upgrade to v9.5, at minimum. Better yet, if you are migrating from an any earlier version of GemFire, we recommend that you upgrade to the latest release of the GemFire software.

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.3 release is based on the Apache Geode 1.4 release. Here is a list of all issues resolved for Geode 1.4.

Issues Resolved in Pivotal GemFire 9.3.3

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-5173, GEM-633, GEM-2159: Eliminated a NotSerializableException that occurred during a transaction when value recovery was disabled.

GEODE-5198, GEM-2039: Eliminated a race condition that resulted in an exception when loading a custom DataSerializer class.

GEODE-5255: Fixed a race condition that could lead to redundancy loss when nodes are being restarted during a rebalance operation.

GEODE-5278, GEM-2092: Fixed a synchronization issue that caused a CommitConflictException during server startup.

GEODE-5302, GEM-2046: Fixed a bug that resulted in a large number of spurious log messages due to compaction.

GEODE-5307, GEM-1835: Eliminated a server hang that occurred when a putAll operation intersected with the closing of a partitioned region.

GEODE-5646, GEM-2188: Fixed an error in client locator communications that could occur when a locator is shutting down.

GEODE-5649, GEM-2203: Fixed a bug that could lead to getAll() requests taking too long on a single client.

GEODE-6267, GEODE-6287, GEM-2352: Fixed server-side memory leaks that occurred during client departure.

GEODE-6344, GEM-2365: Fixed a source of spurious socket read timeout exceptions on client proxy reconnection requests by replacing existing proxies with new instances.

Issues Resolved in Pivotal GemFire 9.3.2

GEODE-92: Fixed a bug in which custom expiry code that called getValue() could cause a deadlock that resulted in no region operations completing. The previous fix for GEODE-92 did not cover all possibilities.

Issues Resolved in Pivotal GemFire 9.3.1

GEODE-4076, GEMNC-394: Restores the behavior of servers such that they again throw an AuthenticationRequiredException for clients that authenticate using the older security framework. The security framework incorrectly threw a GemfireSecurityException.

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

GEODE-4270: Removed a race condition where CacheClientProxy could be asked to authorize a message prior to receiving its security subject which lead to Anonymous User errors.

GEODE-4306: 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-4309, GEODE-4320, GEM-1894: The redacting of arguments is properly applied to system properties.

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

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

GEODE-4651, GEM-1889: Fixed a memory leak that occurred when entries were destroyed within a transaction but not cleaned up afterwards.

GEODE-4704: Fixed a bug in which GatewaySender batch conflation can incorrectly conflate events causing out of order processing.

GEODE-4765, GEM-1918: Fixed an issue in which cluster configuration did not respond after a locator reconnected to the distributed system.

GEODE-4823, GEM-1936: Prevent tombstones from being added to an index during region initialization to avoid a lengthy initialization period.

GEODE-4867, GEM-1958: Ensure that the MAX_QUERY_EXECUTION_TIME system variable is honored during long queries to avoid hitting an out of memory exception.

GEODE-5559/GEM-2183: Decreased server startup time when recovering region data.

GEODE-5631, GEM-2195: Fixed a bug that could lead to increased memory footprint when using asynchronous event listeners.

GEODE-6215, GEM-2341: Fix a bug with the http session store that resulted in the session region not being created on all servers.

Issues Resolved in Pivotal GemFire 9.3.0

Gfsh Issues

GEODE-2676, GEM-1791: The gfsh show metrics command no longer throws a NullPointerException when invoked with a partitioned region.

GEODE-3843: The gfsh shutdown error message no longer suggests non-existent options.

GEODE-3973: Improved reliability by having the cluster configuration start synchronously when starting a locator.

GEODE-4078: Improved error reporting by displaying the full path when a locator view log cannot be opened.

Pulse Issues

GEODE-3857, GEM-1750: A Pulse login no longer fails after the second login.

GEODE-3941, GEODE-3951, GEM-1783: Pulse now cooperates with a SecurityManager implementation, no longer throwing a NullPointerException and a logout exception.

GEODE-4293: Pulse works correctly when the jmx-manager-password-file property is specified.

Other Management & Monitoring Issues

GEODE-3962: A starting server now uses more secure methods to obtain its cluster configuration from the locator.

GEODE-4029: Instituted measures to ensure consistency among deployed jars when multiple locators are in use.

GEODE-4097: The user can now specify the location of the geode-core JAR file in the classpath, overriding the hard-coded default location.

GEODE-4193, GEM-1863: Fixed password file security in JMX.

GEODE-4298, GEM-1862: Restored public API accessibility to the ServerLauncher.waitOnServer() method, which was inadvertently restricted in an earlier release.

Storage Issues

GEODE-3038: A server process no longer shuts down quietly when the path to the cache.xml file is incorrect. Now, an exception is thrown and logged when the cache.xml file is not found during cache creation.

GEODE-3521: Allows region set operations to bootstrap a transaction.

GEODE-3764: Instituted measures to prevent early idle expiration.

GEODE-3869, GEM-1838: Instituted measures to prevent early eviction.

GEODE-3976: Improved exception messages regarding attempts to allocate disk space beyond established thresholds.

GEODE-3996: CacheWriter methods that call EntryEvent.getOldValue now retrieve values that have been overflowed to disk.

GEODE-4033: An exception is now returned to the caller when a transaction Id is not found on the targeted server. This prevents multiple instantiations of the transaction state when the transaction is attempted on an alternate server.

GEODE-4099: Informational messages returned by size inquiries on partitioned regions have been changed from “warning” to “debug” level.

GEODE-3764, GEM-1766: Fixed a bug that allowed idle expiration to happen even if the potentially expiring entry had been accessed on a replicate. Replicate accesses are now checked before expiration is allowed to proceed. Those few applications that need to retain the less correct, legacy behavior can do so by setting the system variable geode.restoreIdleExpirationBehavior to true.

Lucene Issues

GEODE-3026: Removed the AsyncEventQueue for the Lucene index, if the region is not created.

GEODE-3953: Corrected equality comparisons of field name arrays.

GEODE-3954: Improved exception messages to meaningfully report field analyzers and field names in the presence of mismatched sizes.

Other Queues & Queries Issues

GEODE-3938: Allow query parameters within the to_date preset query function.

GEODE-3708: Added a separate iterator for MemoryIndexStore, which prevents duplicate results for join queries.

GEODE-3815: Entries are no longer incorrectly removed from the index map during parallel gateway queue conflation.

GEODE-3987, GEM-1811: Enforce gateway receiver uniqueness per member.

GEODE-4072: Fixed a race condition in the AckThreadReader shutdown.

Communications Issues

GEODE-3588, GEM-1869: Two restarts of a locator no longer results in a “split brain” condition.

GEODE-3780: A suspected member that fails an initial health check on a system restart is now reconsidered for membership when the system is functional.

GEODE-3923: The user can specify filters in the gemfire.properties file to specify objects that are eligible or ineligible for Java serialization.

GEODE-3964: Added an extra level of logging if a view does not come back during severe alert processing.

GEODE-4087: GemFire no longer sets the default SSLContext for the JVM.

GEODE-4165: Improved logging to display the full EventId when a mismatch is detected with that of the client.

Known Issues

The following known issues affect GemFire 9.3:

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.