Pivotal GemFire® v9.3

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.

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

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

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

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