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 usingServiceLoader
can be registered twice and hence received events multiple times. - Fixed an issue where
TcpRing.close.keys()
may throw an unhandledClosedSelectorException
which can cause theCluster
service to terminate unexpectedly. - Added support for scale, stripping of trailing zeros,
MathContext
, and rounding mode to theBigDecimal
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 toinvokeAll
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 thereportEnvironment
MBean operation of theClusterNodeMBean
, 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 aLockContentionException
could be thrown when many subscribers are being created and polling for messages at the same time. - Fixed an issue in
Subscriber
Topic whereCompletableFuture
returned from calls toSubscriber.receieve()
could fail to complete on an empty topic when theSubscriber
was created with theCompleteOnEmpty
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 unhandledClassCastException
inPartitionedService$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 usecoherence-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 withSTATIC
mode or to explicitly configure lambda serialization to theDYNAMIC
mode. - Fixed an issue where
CacheStore.eraseAll()
had no path to be called on theNamedCache
bulk operations such asinvokeAll()
. With this fix,CacheStore.eraseAll()
is called whenNamedCache.invokeAll()
is invoked with a "remove" processor, or whenNamedCache.keySet().removeAll()
orNamedCache.entrySet().removeAll()
are called. - Fixed an issue in which
PortableTypeGenerator
was not generating the relevant code forRawDate
andRawDateTime
. - Improved cache operations to use an interruptible lock so that operations can be interrupted after the specified timeout.
- Improved
NearCache getOrDefault
andcomputeIfAbsent
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 asAbstractHttpSessionModel.setAttribute()
on a session that is being invalidated. - Fixed an issue where loaded entry from
CacheStore
had inconsistententry-event
type and thesynthetic
flag. - Added the
reportEnvironment
operation to theClusterNode
MBean to provide details about the Java environment and system properties. - Added default implementations to the
CacheLoader
andCacheStore
interfaces forloadAll()
,storeAll()
, anderaseAll()
. - 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 ofInvocableMap
(and consequentlyNamedCache
) andAsyncNamedCache
did not conform to thejava.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 thecom.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 inreportLastOwnership
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 aReadWriteBackingMap
with registeredMapListeners
. - 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 aNearCache
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 aNearCache
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 aCacheStore
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 thebdb-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 theSlabBufferManager
. - 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 theSessionReaper
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. AnUnsupportedOperationException
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
Parent topic: Bugs Fixed and Enhancements in this Release