Pivotal GemFire Release Notes

Pivotal GemFire 9.8 is based on Apache Geode version 1.9. Pivotal GemFire 9.8 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.8.10

Pivotal GemFire 9.8.10 is a maintenance release that resolves a variety of issues—see Issues Resolved in Pivotal GemFire 9.8.10 for more information.

What’s New in Pivotal GemFire 9.8

Pivotal GemFire 9.8 includes the following improvements:

  • Open JDK 11 compatibility
  • Reduce the overhead of internal statistics collection resulting in near linear scaling of updates. As a result, most apps should notice increased throughput of local get operations.
  • Improvements to recovery following unexpected network disconnections
  • Improvements to jndi-binding commands
  • Protections against Java and Native clients accessing internal regions inappropriately
  • Ability to configure appenders in log4j2.xml
  • An SSL improvement using Java non-blocking IO (NIO) has rendered the system property p2p.HANDSHAKE_POOL_SIZE unnecessary. The property is no longer supported.

New Features Introduced in GemFire 9.8.4

Some of the issues addressed GemFire version 9.8.4 resulted in the introduction of new capabilities:

  • The ability to specify that when an asynchronous event queue (AEQ) first starts, event processing should be paused. A resume command is provided to start event processing at the desired time.

  • The ability to replace Log4j with an alternative logging scheme

Pausing and Restarting AEQs

Pivotal Gemfire 9.8.4 includes new gfsh commands for creating or altering asynchronous event queues (AEQs) such that event processing is not immediately activated at AEQ creation or restart, but instead is paused until instructed to resume.

See the relevant gfsh Command Help entries for usage details:

GemFire 9.8.4 also introduced a related property, pause-event-processing, for the <async-event-queue> element in cache.xml. See <async-event-queue> for details.

Replacing Log4j with an Alternative Logging Scheme

A logging framework is broken out into two pieces: the API and the backend. The API provides the logger API for statements such as logger.info("Something happened here"). The backend provides appenders for writing those log statements to various destinations such as files, databases, logging servers, etc. GemFire normally uses log4j-api for the logger API and log4j-core for logging to and rolling the GemFire log file. Spring Boot and various libraries used by GemFire use slf4j for the logger API. To accommodate such alternatives, GemFire automatically includes the jar(s) to redirect slf4j log statements to the Log4j backend, log4j-core, so they get included in the GemFire log file.

If you also wish to use an alternative backend for logging, exclude log4j-core from your classpath.

Installing Pivotal GemFire 9.8

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

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

Upgrading to Pivotal GemFire 9.8

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

Reinstating Secure Messaging

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 \

Creating MBeans

Note: The fix for issue GEODE-7628/GEM-2747 introduces a new requirement: To create MBeans, a Security Manager must be enabled. This may affect applications upgrading from earlier versions. See Enable Security with Property Definitions for more information.

Resolved Issues

The GemFire 9.8 release is based on the Apache Geode 1.9 release. This section describes issue resolutions that significantly affect GemFire applications. For a list of all issues resolved in Geode 1.9, see the Geode 1.9 Release Notes. Ticket numbers of the form GEODE‑NNNN can be inspected at the Apache Software Foundation site for Geode issues.

Issues Resolved in Pivotal GemFire 9.8.10

GEODE-8483, GEM-3004: Introduced a correction to JCA transaction logic that restores the ability of the system to detect commit conflict exceptions in concurrent access situations.

GEODE-8564, GEM-3081: Fixed an exception thrown by an attempt to remove a managed connection that has already been invalidated. Corrected functionality to avoid unnecessary intermediary collection creations.

Issues Resolved in Pivotal GemFire 9.8.9

GEODE-6564, GEM-3001: Fixed a memory leak that occurred when a replicated region, configured with entry expiration, was cleared.

GEODE-6822, GEM-2987: Newly deployed JAR files are now associated with unique class loaders, eliminating a case in which objects defined in an already-loaded JAR would no longer compare correctly.

GEODE-8131, GEM-2938: Eliminated a point of contention in the alert logging system that could occasionally block cache operations.

GEODE-8259, GEM-2943: When a client performs a single-hop getAll() operation and encounters a serialization error, the operation is now re-tried.

GEODE-8287, GEM-2897, GEM-2950: Ironed out a recently-introduced problem that caused a degradation in performance for join queries or queries that use multiple indexes.

GEODE-8394: Fixed an issue in which putAll operations or put operations with large objects could result in data corruption if invoked without having a sufficiently large read-timeout. Subsequent get operations or queries could experience failures due to this corruption.

Issues Resolved in Pivotal GemFire 9.8.8

GEODE-8071, GEM-2896: Fixed a thread-type issue that caused locators to hang upon shutdown.

GEODE-8174, GEM-2884: Fixed an issue that caused an incorrect ConcurrentModificationException to be thrown when using JTA transactions.

GEM-2849: GemFire uses jackson-databind version

Issues Resolved in Pivotal GemFire 9.8.7

GEODE-7628, GEM-2747: Block JMX Mbean creation when no SecurityManager interface is implemented.

GEODE-7728, GEM-2819: Fixed an exception thrown when executing an equi-join query and both fields are indexed.

GEODE-7750, GEODE-7760, GEODE-7796, GEM-2823, GEM-2821: Fixed an issue which could cause a locator to fail to restart properly, and also corrupted the cluster configuration.

Issues Resolved in Pivotal GemFire 9.8.6

GEODE-7593, GEM-2795: Fixed a memory leak in which indexes could retain references to serialized values when eviction should have released that memory.

Issues Resolved in Pivotal GemFire 9.8.5

GEODE-6551: Added validations to prevent corrupting the cluster configuration service when associating a non-persistent async-event-queue/gateway-sender to a persistent partition region.

GEODE-7241: Changed Maven Central Repository geode-web and geode-web-api artifacts from JARs to WARs to alleviate problems with building, publishing, and example scripts.

GEODE-7261, GEODE-7334, GEM-2705: Corrected CLASSPATH issues that prevented the developers REST API from starting. Changes included adding the spring-core JAR file, and removing JodaModule JAR and Spring 5.x JARs.

GEODE-7268, GEM-2692: Fixed a problem in which use of the gfsh alter region command to add gateway senders could cause server restart and recovery of persistent data to hang, citing problems with offline colocated regions.

GEODE-7465, GEM-2773: Fixed a problem in which an asynchronous event queue could fail to restart with a RegionDestroyedException due to incomplete cleanup of the queue at the time it was stopped.

GEODE-7373, GEM-2746: Corrected a JMX deserialization vulnerability by restricting the types of credentials considered acceptable.

GEODE-7473, GEM-2774: Fixed a memory leak in WAN gateway senders caused by accumulation of entry event objects.

Issues Resolved in Pivotal GemFire 9.8.4

GEODE-2644, GEODE-6122, GEODE-7050, GEODE-7058, GEM-2259: Made Log4j optional.

GEODE-7079: Fixed a restart timing issue that could occur when Asynchronous Event Distribution and Conflation are in effect.

GEODE-7080, GEM-2648: Fixed a bug in which export of an offline snapshot could fail if a deleted entry was detected in the region.

GEODE-7085: Allow extremely large region version values (greater than Integer.MAX_VALUE) when recovering from disk.

GEODE-7178: Restored the server’s compatibility with Native Client version 9.2+ ‘destroy’ operations, which had been inadvertently disabled in earlier versions of 9.8.

GEODE-7208, GEM-2698: Improved serialization to better support Lucene indexing on inherited fields.

Issues Resolved in Pivotal GemFire 9.8.3

GEM-2588: Fixed a performance issue resulting from a problem in peer-to-peer SSL communication when the cluster was configured with conserve-sockets disabled. This fix reverted a change from v9.8.0, GEM-2408/GEODE-6389.

GEODE-6651: Fixed a null-pointer error that occurred with transaction reads on partitioned regions.

GEODE-6721/GEM-2506: Corrected the behavior of the gfsh start locator command to honor a request specifying the secondary IP, instead of always using the host’s primary IP address.

GEODE-6806, GEM-2545: Improved OQL’s handling of joining multiple regions with indexes by preventing the LIMIT clause from being applied in intermediate execution steps.

GEODE-6808: Restored JSON backward compatibility.

GEODE-6851, GEM-2551: Prevented Pulse data browser from falsely showing that no data was found due to divison by zero.

GEODE-6904, GEM-2579: Fixed a problem in which members reconnecting after a network partition could start up without cluster configuration.

GEODE-6922, GEM-2550: Improved the retrieval of active sessions count by load-balancing the operations among multiple servers.

GEODE-6929, GEM-2590: Fixed an internal messaging problem that could cause customer logs to fill with spurious “Trying to reply twice to a message” errors.

Issues Resolved in Pivotal GemFire 9.8.2

GEODE-6823, GEM-2316: Fixed an issue during startup in which the initialization for org.apache.geode.distributed.DistributedLockService mistakenly reports the member is closing, causing initialization to hang.

GEODE-4958, GEM-2477: Changed logging when org.apache.geode.security.AuthenticationRequiredException is encountered to now log as a “warn” statement rather than throwing the exception with a call stack.

GEODE-6527, GEM-2511: Fixed an issue in which a member that creates a partitioned region can result in “java.lang.IllegalStateException: Incompatible CacheLoader. CacheLoader is null in partitionedRegion Parent on another datastore” when the partitioned region had previously been altered in another member to change the cache writer or cache loader.

GEODE-6767, GEM-2511: Fixed an issue in which a partitioned region that is colocated with another partitioned region is altered to change entry time-to-live or idle-timeout while rebalancing, causing a loss of full bucket redundancy.

GEODE-6821, GEM-2548: Fixed an issue where the shared P2P message reader blocked when processing a message on a region with a serial sender.

GEODE-6746: Fixed an issue where the log message “Your SSL configuration disables hostname validation. ssl-endpoint-identification-enabled should be set to true when SSL is enabled” was repeatedly printed at the warning level. The message now prints only once as an info-level message.

Issues Resolved in Pivotal GemFire 9.8.1

GEODE-6724: Fixed a bug that prevented more than one cluster from being formed when more than one locator was concurrently created.

GEM-2514: Added the geode-web JAR file to the gfsh-dependencies.jar file.

Issues Resolved in Pivotal GemFire 9.8.0

This list was updated on April 30, 2019.

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.

GEODE-2644: Provide ability to configure Geode appenders in log4j2.xml.

GEODE-3649: Added initialization of the PDX registry before attempting an auto-reconnect.

GEODE-5013, GEM-1964: Fixed a stack overflow issue with gfsh-initiated OQL queries and gets of JSON objects.

GEODE-5747, GEODE-6065: Improved the WAN gateway sender’s resilience in the face of intermittent DNS failures or unexpected socket resets in the underlying operating system.

GEODE-5959, GEM-2261: Fixed a performance issue related to execution of nested functions.

GEODE-6035, GEM-2272: Increased TCP/IP backlog defaults to enhance peer-to-peer connection formation.

GEODE-6064, GEM-2256: Protected SSL keystore password so it is no longer visible in plain text gfsh command results.

GEODE-6177, GEM-2324: Improved the gateway sender’s ability to re-authenticate upon reconnection following a dropped WAN connection.

GEODE-6205, GEM-2337: Modified the create disk-store command to save the absolute path name rather than the relative one.

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

GEODE-6244: Fixed a case in which a slowly responding member could mistakenly initiate disconnection of a better-responding member.

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

GEODE-6271, GEM-2356: Improved support of clients connected to multiple distributed systems by copying serialized types between clusters.

GEODE-6281, GEM-2344: Fixed a problem in which the utility that generates XML included entry values in the generated XML, causing Out of Memory errors during debugging operations.

GEODE-6304, GEM-2332: Improved the manner in which the Heap memory monitor tolerance counter is reset.

GEODE-6309, GEODE-6363: Modified the behavior of a restarting locator to try harder to find an existing cluster coordinator before assuming the role itself.

GEODE-6310, GEM-2334: Upgraded classpath version to control file descriptor consumption.

GEODE-6328, GEODE-6329, GEM-2376: Fixed issues with the gfsh show missing-disk-stores command, in which the command listed instances that were not missing or duplicate entries.

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

GEODE-6369: Terminated auto-reconnect attempts if reconnect is not possible.

GEODE-6389, GEM-2408: Improved propagation of entries to remote sites by disabling sharing of buffers in certain handshake contexts. (This change was reverted in v9.8.3.)

GEODE-6391, GEM-2386: Provided an event ID for the destroy region operation to avoid it being overlooked.

GEODE-6423, GEM-2410: Modified availability check following a network outage to honor member timeout setting before disconnecting.

GEODE-6451, GEODE-6522: Fixed a membership issue that could cause the server to hang during shutdown.

GEODE-6488, GEM-2400: Improved handling of query tasks so timed-out queries can be re-executed and multiple cancellation tasks will not be ignored.

GEODE-6522, GEM-2411: Fixed an issue with distributed system membership during shutdown operations that could cause a server to hang.

GEODE-6544, GEM-4883: Allowed retry of Pulse login following an unsuccessful login attempt.

GEODE-6559, GEM-2449: Modified auto-reconnect so it no longer loads outdated classes from cached JARs.

GEM-2261: Fixed a problem in which nested function calls resulted in a blocked thread.

GEM-2265: Modified multi-user security to use Pool APIs.

GEM-2271: Fixed a problem with portfolioIdIndex that led to the error “This method should not have been invoked.”

GEM-2299: Addressed slower performance of queries after v8 to v9 upgrade.

GEM-2367: Fixed an issue with a CPU surge during auto-reconnect on an under-provisioned system.

GEM-2396, GEM-2432, GEM-2436: Fixed reconnection issues following member shutdown.

GEM-2439: Fixed a problem encountered when using the REST API to invoke a parameterless function call.

GEM-2483: Fixed a problem in which locators consumed increasing amounts of memory over time.


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.