4 Bugs Fixed and Enhancements in this Release

Learn about the bugs fixed and enhancements in this release.

This chapter includes the following section:

Oracle Coherence for Java

New features, improvements, and bug fixes added to Oracle Coherence for Java components.

Enhancements and Fixes for 14.1.1.2206

  • Removed support for Log4j version 1.x.
  • Fixed an issue where a Coherence LifecycleListener discovered using ServiceLoader can be registered twice and hence received events multiple times.
  • Fixed an issue where TcpRing.close.keys() may throw an unhandled ClosedSelectorException which can cause the Cluster service to terminate unexpectedly.
  • Added support for scale, stripping of trailing zeros, MathContext, and rounding mode to the BigDecimal aggregators.
  • Fixed an issue with Coherence docker image where the system property, coherence.serializer, does not take effect when used to specify a default serializer.
  • Added functionality to allow the list of included POF configuration files to be discoverable at runtime using Java ServiceLoader.
  • Added the ability to show the Coherence version without starting a cluster using java -jar coherence.jar --version.
  • Fixed an issue where the cluster service thread may be blocked on a member that is assuming the JMX cluster member role.
  • Fixed an issue where catching an entry processor event of type EXECUTED due to a call to invokeAll would pass an empty entry set event if at least one entry was successfully processed.
  • Added a REST endpoint to ClusterMemberResource to return the response of the reportEnvironment MBean operation of the ClusterNodeMBean, providing details about the Java environment and system properties.
  • Fixed an issue where the Coherence JsonSerializer could not serialize a string made up of a single backslash.
  • Fixed an issue in Topics where seeking to the tail for a subscriber did not actually move the subscriber's position.
  • Fixed an issue in NamedTopic Subscriber where a LockContentionException could be thrown when many subscribers are being created and polling for messages at the same time.
  • Fixed an issue in Subscriber Topic where CompletableFuture returned from calls to Subscriber.receieve() could fail to complete on an empty topic when the Subscriber was created with the CompleteOnEmpty option enabled.
  • Enabled the use of custom namespace handlers in the operational configuration file.
  • Fixed an issue when there are multiple cache factories in a JVM; the cache factory that created the proxy service may not be the one used by it, resulting in error finding the caches.
  • Fixed an issue where a PartitionedCache service may terminate due to an unhandled ClassCastException in PartitionedService$PartitionRecoverRequest$Poll.onResponse.
  • Fixed an issue where multiple Extend client sessions may be unable to access their caches created by different cache factories because the wrong cache factory and proxy were used on the server side.
  • Fixed a thread safety issue that can disrupt a joining member from joining the service in very rare cases.
  • Moved Coherence metrics functionality into the coherence.jar file, removing the requirement to use coherence-metrics.jar and removing the requirement for additional third-party dependencies when enabling Coherence metrics.
  • Fixed an issue with serializing classes annotated with PortableType that did not specify an ID.
  • Reduced the CPU utilization in sending backup messages.
  • Changed the default for Java lambda serialization mode to STATIC for Coherence production mode; See About Lambdas in a Distributed Environment to evaluate whether to alter your environment to work with STATIC mode or to explicitly configure lambda serialization to the DYNAMIC mode.
  • Fixed an issue where CacheStore.eraseAll() had no path to be called on the NamedCache bulk operations such as invokeAll(). With this fix, CacheStore.eraseAll() is called when NamedCache.invokeAll() is invoked with a "remove" processor, or when NamedCache.keySet().removeAll() or NamedCache.entrySet().removeAll() are called.
  • Fixed an issue in which PortableTypeGenerator was not generating the relevant code for RawDate and RawDateTime.
  • Improved cache operations to use an interruptible lock so that operations can be interrupted after the specified timeout.
  • Improved NearCache getOrDefault and computeIfAbsent to utilize the front map.
  • Removed the Coherence JVisualVM plug-in from distribution. Use the new Open Source VisualVM plug-in from https://github.com/oracle/coherence-visualvm.
  • Improved the ordering of startup messages in DefaultCacheServer to show the list of services last.
  • Fixed an issue where the ValueUpdater interface was not serializable and could cause certain lambda entry processors to fail to execute.
  • Fixed an issue in Coherence*Web where a NullPointerException may be thrown when performing operations such as AbstractHttpSessionModel.setAttribute() on a session that is being invalidated.
  • Fixed an issue where loaded entry from CacheStore had inconsistent entry-event type and the synthetic flag.
  • Added the reportEnvironment operation to the ClusterNode MBean to provide details about the Java environment and system properties.
  • Added default implementations to the CacheLoader and CacheStore interfaces for loadAll(), storeAll(), and eraseAll().
  • Improved persistence to recover data in parallel within a member/process, in addition to in parallel across the cluster. This feature enables the cluster, and more importantly the associated data, to be made available as quickly as possible.

Note:

Fixes from release 14.1.1.0.1 through 14.1.1.0.10 are also included. These fixes are available to view in the README document in the 14.1.1.2206 Feature Pack patch.

Enhancements and Fixes for 14.1.1.0

  • Fixed an issue where links returned by Management over REST may have incorrectly URL encoded path separators.
  • Fixed an issue where a NullPointerException may be thrown when resubmitting asynchronous cache requests internally.
  • Added restricted reflection access to a small subset of core JDK classes.
  • Fixed an issue where indexes are not recovered from persistence after a cluster restart.
  • Reverted changes to report-cache-effectiveness.xml due a performance regression.
  • Fixed an issue where service statistics from management over REST do not aggregate across all services. Queries such as coherence/management/services;field=StatusHA now return the correct result.
  • Updated Coherence REST examples to use Oracle JET instead of Bootstrap/AngularJS and jQuery.
  • Fixed an issue that would prevent Coherence Metrics from initializing due to a ClassCastException.
  • Fixed an issue where federation members may get stuck in the YIELDING state due to changes to cache entries, which expired before the changes were federated to destination participants.
  • Fixed an issue where a ConfigurableCacheFactory is initialized in a WebLogic server even if Coherence is not enabled.
  • Fixed an issue where a ClusterService is initialized when coherence-metrics.jar is added to the classpath.
  • Fixed an issue where the getOrDefault method of InvocableMap (and consequently NamedCache) and AsyncNamedCache did not conform to the java.util.Map contract. The default value should only be returned when the key is not present in the cache. However, the default value was also being returned when the key was present and mapped to null.
  • Fixed an issue where the AsynNamedCache.getAll() method did not conform to the com.tangosol.net.cache.CacheMap contract in that the returned Map contained entries for all of the requested keys instead of containing entries for only the requested keys that were present in the cache.
  • Fixed a typographical error in the management over REST API for /management/coherence/cluster/members/{memberId}/platform/g1SurvivorSpace.
  • Fixed an issue with the Persistence examples to ensure MBean registration is complete before starting the example.
  • Fixed an issue where a NullPointerException may be thrown in reportLastOwnership during simultaneous shutdown.
  • Fixed an issue where federation destination members may use heap memory inefficiently for storing cache entries, resulting in larger heap sizes than origin members for the same amount of cache data.
  • Fixed an issue where an OutOfMemoryError could be thrown for a ReadWriteBackingMap with registered MapListeners.
  • Fixed an issue where keys are deserialized if returned as keys in the Map that is returned by an EntryProcessor.processAll invocation.
  • Fixed an issue where Coherence fails to start when coherence-metrics.jar is added to the classpath and the extendedmbeanname property is set to true.
  • Fixed an issue where getAll() on a NearCache may return incorrect results for an *Extend client.
  • Fixed an issue in LimitFilter when used in deserialization via the WebLogic T3 protocol that could allow for arbitrary code execution.
  • Fixed an issue where getAll() on a NearCache may return incorrect results for an *Extend client.
  • Fixed an issue where an exception may not be thrown if a ContinuousQueryCache is in a disconnected state and fails to re-synchronize.
  • Updated the SFTP Snapshot Archiver example to use Apache Mina SSHD.
  • Fixed an issue where some of the default InvocableMap methods do not cause read-through from a CacheStore when they should.
  • Fixed an issue where there may be repeated logging of a message related to an unexpected EvictionApprover during partition transfer.
  • Allow persistent writes to be performed asynchronously.
  • Fixed an issue where a listener on a 12.2.1.0.x, 12.2.1.1.x, 12.2.1.2.x or 12.2.1.3.x Extend client NearCache may miss some events.
  • Fixed an issue where a NullPointerException may be thrown by Coherence*Web due to access to a session which is no longer valid when there is a high rate of sessions being invalidated.
  • Lowered the severity of the log message, which states that event interceptors are already registered when restarting a service.
  • Fixed an issue where a service may terminate due to IllegalArgumentException: unknown extent identifier being thrown during a rolling restart of an active persistence enabled cluster.
  • Fixed an issue where Berkeley DB configuration specified as init-params on the bdb-store-manager configuration element was being ignored.
  • Fixed an issue where connection migration may occur in a loop, without resolution.
  • Fixed an issue where the Maven enforcer dependencyConvergence rule would generate warnings concerning Jackson modules.
  • Fixed an issue where federation may end up in a high CPU usage busy-loop during a ReplicateAll operation.
  • Fixed an issue where persistence data loss may occur on cluster restart if a client service had ensured a cache before any storage member was started and there was no cache update operation while the cluster was running, prior to the restart.
  • Fixed an issue with management over REST API return values for MBean attributes, ensuring that the ObjectName key property with same name as attribute does not override its value.
  • Fixed an issue where the cluster service could be terminated due to an unhandled IllegalAccessException being thrown by the SlabBufferManager.
  • Fixed an issue where Coherence*Web threads may be stuck at com.tangosol.util.SegmentedConcurrentMap.lock.
  • Fixed a rare issue where destroying and recreating a partitioned cache may incorrectly throw an exception.
  • Fixed an issue where the service thread may be blocked in the journal congestion state during a rolling restart.
  • Added AverageReapQueueWaitDuration to the SessionReaper statistics which indicates the average time a reap task spends in queue, prior to being invoked.
  • Enhanced the Coherence*Web session reaper to operate on the back map when a NearCache is used to store HTTP sessions.
  • Enhanced federation to allow synthetic updates in a federation interceptor. The synthetic update will have different behavior depending on the federation event type: COMMITTING_LOCAL - the change will not be federated to other clusters and CacheStores will not be called. REPLICATING - setting the change synthetic is not allowed. An UnsupportedOperationException will be thrown. COMMITTING_REMOTE - the change will be applied as a synthetic change. CacheStores will not be triggered and federation will not forward the change to other clusters from this destination cluster.
  • Changed the Coherence REST example to use Oracle JET.
  • Federation internal caches are now excluded from persistence snapshots.
  • Fixed an issue where partition distribution may take longer than expected with the error message:
    Unreconcilable ownership conflict; conceding the ownership