This chapter describes the changes and enhancements made to the Oracle Coherence product for the 3.7.1 release. This document is accurate at the time of publication. Oracle updates the release notes periodically after the software release.
The Coherence documentation library can be found at the following URL:
For Oracle Coherence, patches contain the "full distribution" kit. That is, the patch contains the base product (in this case 3.7.1) plus the contents of the patch.
Patches are also cumulative. That is, each patch contains the contents of previous patches. For example, patch 5 contains the contents of patch 4, plus the contents of all previous patches.
Go to My Oracle Support to download the latest software patches.
See the README
file in the patch distribution for up-to-date information on the software fixes provided by the patch.
Login to My Oracle Support.
Click the Patches & Updates tab.
Under the Patch Search tab, select Product or Family (Advanced Search), and select the Include all patches in a product family check box.
Enter Oracle Coherence as the product, select the platform and release, and click Search.
The list of currently available patches for Oracle Coherence is returned.
Oracle Coherence 3.7.1 is the latest release of the industry's leading distributed in-memory data grid product. Coherence 3.7.1 contains many new features that help reduce complexity, ease integration, and accelerate time to market of scalable solutions.
Oracle Coherence 3.7.1 and higher is supported and certified on Java SE Development Kit (JDK) 7.
The release of Coherence 3.7.1 provides customers with greater flexibility in data grid client languages, reduced latency and increased throughput of network communication when deployed on Oracle Exalogic Elastic Cloud and significant performance improvements for seamlessly managing data across memory and disk-based solutions.
Oracle Coherence 3.7.1 introduces a new REST API, enabling customers to leverage popular client languages, such as PHP and Python, to access, manipulate and report on data stored in the Oracle Coherence data grid.
Oracle Coherence 3.7.1 leverages the Exabus technology exclusive to Oracle Exalogic Elastic Cloud to dramatically increase scalability and lower the latency of data grid operations. Combined with Exabus technology, Oracle Coherence 3.7.1 provides the next generation of massively scalable, low-latency data and state management for middleware applications.
Exabus is the high-speed communication (I/O) fabric that ties all Oracle Exalogic system components together and provides the foundation of Oracle Exalogic's extreme performance, reliability and scalability.
Exabus consists of unique hardware, software, firmware, device drivers and management tools and is built on Oracle's QDR InfiniBand technology.
Oracle Coherence 3.7.1 Elastic Data advancements provide more efficient memory and disk-based storage and improve data access performance, giving customers greater flexibility, expanded capacity and more efficiency of their existing infrastructure.
The Elastic Data feature of Oracle Coherence allows organizations to leverage both memory and disk-based devices for data grid storage, enabling near memory speed access to data, regardless of storage medium.
Oracle Coherence 3.7.1 includes significant optimizations to the journaling algorithms in Elastic Data, providing dramatically improved performance, reduced storage overhead requirements for server side operations and highly-efficient algorithms for data migration from RAM to disk.
Oracle Coherence 3.7.1 introduces the ability to analyze the efficiency of queries against data in Oracle Coherence by generating an ”explain plan” to describe the calculated effectiveness of each element of an Oracle Coherence query.
The Query Explain Plan facilitates troubleshooting and managing queries against large distributed data sets, decreases the cost of adoption, reduces complexity and simplifies configuration of scalable distributed data sets.
Oracle Coherence 3.7.1 is a component of Oracle Fusion Middleware 11g and is tightly integrated with the other products in Oracle's middleware stack and Oracle Exalogic Elastic Cloud.
Oracle Coherence 3.7.1 removes the requirement for a Java implementation of custom key classes used by Coherence*Extend .NET and C++ clients in many cases. A Java class may still be required for some grid features such as filters or queries.
Oracle Coherence 3.7.1 improves POF to support the use of object identities and references for user-defined objects. References can be used when a large number of sizeable objects are repeated multiple times or when objects use nested or circular data structures.
Oracle Coherence 3.7.1 adds POF annotation support to simplify the development of POF-serializable classes by allowing developers to mark their serializable classes, fields, and properties with the Portable
and PortableProperty
annotations.
New features, improvements, and bug fixes have been added to these Oracle Coherence for Java components:
Optimized Elastic Data to prioritize RAM availability to store the primary copies of data, by moving backup copies to or from RAM to flash when necessary.
Optimized Elastic Data overflow to flash devices by dramatically increasing concurrency.
Enhanced the Elastic Data feature to trigger its internal garbage collection as its remaining RAM capacity approaches zero. Also optimized the Elastic Data garbage collection to become less aggressive when the available capacity is plentiful.
Fixed an issue where executing single-threaded queries while performing write-behind could stall the cache.
Fixed an issue that could cause duplicate events to be received by a MapListener
following a failover with backup-count
> 1.
Fixed an issue that could result in an IllegalStateException
while a getAll()
operation is executed during re-distribution.
Fixed an issue where write-behind updates on an idle cache could be stalled until the next cache request.
Fixed an issue that caused missing backups/events when a non-Observable custom backing-map is used.
Fixed an issue that could cause an erroneous RequestPolicyException
(The current quorum policy prevents PartitionSet{...} from being recovered
).
Fixed an issue that caused ArrayIndexOutOfBounds
exception to be thrown during partition distribution.
Fixed a potential deadlock that could occur as a result of the getAll()
operation.
Fixed issue with multi-threaded putAll
operations in combination with invocations may stall the cache.
Fixed an issue that could result in failure to apply delta
warnings.
Fixed a regression introduced by 3.6.1 patch 3 which caused aggregations or invocations to skip some entries under a heavy load.
Fixed a deadlock that could occur during heavy eviction.
Optimized memory utilization during an aggregation eliminating the need to keep all the intermittent data for a specific member alive. WARNING: you may get errors performing an aggregation on a partially upgraded cluster when applying this fix to 3.7.0.
Fixed an issue that occurred when the departure of the (storage) senior member while a new member joined the partitioned cache service, resulted in a failure to create user map indices.
Fixed an issue where the delta was not applied when using backup-count-after-writebehind
and POF.
Fixed a deadlock that could occur during heavy eviction or write-behind.
Fixed an issue that prevents keys from one partitioned cache from being used as keys to a remote (Extend) partitioned cache.
Improved the way in which the MapListenerSupport
class handles filter-based listeners.
Fixed an issue where EntryProcessor
objects could be re-executed if the partition is transferred immediately after it is restored from backup.
Fixed an issue where removal of an entry with ConditionalIndex
fails in heterogeneous caches.
Introduced the ability to specify the local IP address as a subnet mask instead of an explicit IP address.
Added support for large clusters (>500 nodes) without the need for manual packet size configuration.
Reduced port allocation requirements for running TCMP over TCP.
Fixed an issue with over-utilization of the 64-kb buffers for multipoint packets.
Fixed MulticastTest
and DatagramTest
to parse for ipv6 literal addresses such as -local [fe80::216:3eff:fe35:eba3%eth0]:8888
.
Hardened TcpConnection.getDescription()
method against unexpected errors thrown from the Socket API.
Fixed a ClassCastException
that could corrupt operation of the DaemonPool$Daemon
.abandon
method.
Fixed an issue where client Members were not passed to the ProxyServiceLoadBalancer
.getMemberList()
method.
Improved performance of the ContinuousQueryCache
get
operation.
Fixed an issue with the ProxyService "server" load balancing policy that caused client connections to be incorrectly rejected.
Removed the requirement for a Java implementation of custom key classes used by Coherence*Extend .NET and C++ clients in many use cases. A Java class may still be required for some grid features such as filters or queries.
Key association is now processed on the Extend client by default. Existing client implementations (including Java clients) that rely on key association on the cluster must set the defer-key-association-check
parameter to force the processing of key classes on the cluster.
To force key association processing to be done on the cluster side, instead of by the Extend client, set the <defer-key-association-check>
element, within a <remote-cache-scheme>
element, in the client-side cache configuration to true
, for example:
<remote-cache-scheme> . . . <defer-key-association-check>true</defer-key-association-check> </remote-cache-scheme>
Removed the dependency on the optional Common.Logging
library from DefaultOperationalContext
.
Added a configuration option to suppress exceptions thrown during session invalidation.
Fixed the GlassFish SPI (ActiveCache for GlassFish) so that Coherence classes are no longer present in GlassFish after the Web application is undeployed.
Fixed coherence-session-weblogic-compatibility-mode
behavior across Web applications.
Fixed an issue that caused session attributes to be lost when configuring the SplitSessionModel
with coherence-enable-suspect-attributes
disabled.
Moved the session-cache-config.xml
file into coherence-web.jar
. It is no longer inside coherence-web-spi.war
and webInstaller.jar
.
The coherence-web.jar
file is now distributed in the coherence/lib
directory.
Fixed incorrect handling of null values in uniform arrays and collections.
Fixed a bug in the PofBufferWriter
class which caused an assertion while serializing collections containing null elements.
Optimized buffer allocation when using the SerializationHelper
class.
Improved POF to support the use of object identities and references for user-defined objects. References can be used when a large number of sizeable objects are repeated multiple times or when objects use nested or circular data structures.
Fixed an issue that caused POF extraction to fail with some compact "small" POF values, such as true
and false
.
POF annotation support simplifies the development of POF-serializable classes by allowing developers to mark their serializable classes and fields (either directly or by using their accessors) with the Portable
and PortableProperty
annotations.
Included TopLink Grid within the Coherence distribution.
Fixed an ArgumentException
thrown by the ContinuousQueryCache
.IsEventDeferred()
method when the supplied key was already recorded.
Fixed an EOFException
that occurred when calling the BinaryEntry.getOriginalValue
method.
Fixed an issue where the coherence.jar
file could remain in an application server's deployment directory after it has been undeployed.
Fixed an issue that could cause slow access to sorted indexes from range comparison filters.
Fixed a NullPointerException
(NPE) that could occur during distribution with backup-count=0
.
Fixed an issue causing an IllegalMonitorStateException
to be thrown by deadlock detection under heavy load.
Fixed a performance regression when calling addIndex
with entries that have duplicate values.
Fixed an issue where the guard timeout was not being honored when using Coherence*Extend.
Fixed XML validation issue that occurred when running with FMW applications.
Removed DTD files from Coherence (XSD is now used to validate configuration files).
The Coherence distribution now includes the jline.jar
file which is used with the query command line utility.
Fixed an issue where the XML Parser did not handle encoding correctly.
Added "escape" character support to the QueryHelper
-based LikeFilter
class.
New features, improvements, and bug fixes have been added to these Oracle Coherence for .NET components:
Oracle Coherence for .NET supports Microsoft .NET 2.0 and higher.
ASP.NET Session Provider Memory Leak: The root cause for this issue is a memory leak in the .NET4 framework. This leak is documented in http://support.microsoft.com/kb/2540745/en-gb
. Microsoft has also released a patch for this issue.
Fix a .Net SSL issue during simultaneous write operations.
Improved POF to support the use of object identities and references for user-defined objects. References can be used when a large number of sizeable objects are repeated multiple times or when objects use nested or circular data structures.
POF annotation support simplifies the development of POF-serializable classes by allowing developers to mark their serializable classes, fields, and properties with the Portable
and PortableProperty
attributes.
New features, improvements, and bug fixes have been added to these Oracle Coherence for C++ components:
Fixed an issue with C++ Coherence*Extend clients generating different POF key values for custom key classes containing 64 bit integers.
Added support for local execution of the ReflectionExtractor
and ReflectionUpdater
classes to C++.
Improved POF to support the use of object identities and references for user-defined objects. References can be used when a large number of sizeable objects are repeated multiple times or when objects use nested or circular data structures.
POF annotation support simplifies the development of POF-serializable classes by allowing developers to mark their serializable classes and fields (by using their accessors) with the Portable
and PortableProperty
annotations.
The following changes and enhancements have been made for the 3.7.1.1 release.
Added the missing security permissions in security.policy
.
Added support for service-level reliable transport selection, for example:
<distributed-scheme> ... <reliable-transport> datagram </reliable-transport> ... </distributed-scheme>
Resolved file descriptor leak in Exabus SocketBus.
Fixed an issue to make sure that the transaction timeout value is always reset when a connection is acquired from the pool. This ensures that transactions do not time out unexpectedly.
Fixed an issue with EntryProcessor
throwing an exception, which in turn caused the backup node to throw a NullPointerException
.
Fixed an issue where 0.0.0.0 (IP_ANY
) could not be used to listen on all IP addresses.
Fixed issue that caused an ConcurrentModficiationException
to be thrown during a partition transfer when Exabus is enabled.
Fixed an issue with a ConcurrentModificationException
or NegativeArraySizeException
being thrown when running index-backed queries.
Made the internal REST EntryProcessors
POF-serializable, to support exposing POF classes by using REST.
Fixed an issue where unindexed filtered invocations employed excessive locking.
Coherence now ignores a bad host name in authorized hosts, and logs a message.
Resolved a race condition which could result in a NullPointerException
during service shutdown.
Fixed an issue with Refresh Ahead when the object being updated is locked.
Fixed the incorrect Jersey library versions that appeared in the coherence-rest.jar
manifest file.
Fixed an issue with non-monotonic registrations of request SUIDs.
Modified the XSD to allow any XML element to be overridden by using a system-property.
Fixed an issue where Coherence cannot read its manifest file to obtain the version number.
Resolved flow control issue causing stuck nodes for services running on Exabus SocketBus.
Added the ability to set the service and worker thread priorities.
Resolved a service shutdown race condition which could result in an IllegalStateException
.
Fixed an issue that caused an infinite loop in TcpAcceptor
class.
Reduced memory consumption overhead for selective indices.
Fixed an issue with using LimitFilters
from Coherence*Extend clients.
The following changes and enhancements have been made for the 3.7.1.2 release.
The default value for coherence-session-weblogic-compatibility-mode
system property was incorrect. The default value has been changed to true
.
Fixed the issue that caused some Coherence*Web configuration options from being registered when configured by using system properties.
Fixed .NET ContinuousQueryCache
missing entries when the cache size is large.
Installing Coherence for .NET in quiet mode will no longer throw an error if Microsoft Help 2.x Runtime is not present.
Fixed a regression in ReadWriteBackingMap.getAll()
logic that could result in insertion of null values into the cache.
Fixed an issue that caused an assertion to be thrown for performing single key operations while backups are being transferred.
Preserved the entry expiry time across partition transfer or failover when the system property tangosol.coherence.distributed.strictexpiry
is specified as true
.
Fixed a regression causing incomplete results for queries that use indexes against collection-based extractors.
Fixed an issue that could result in data-loss with a multi-node failure.
Fixed an issue that caused put
requests to be blocked by eviction when storage is slow.
Resolved an issue where default SSL context was loaded in non-SSL configurations.
Fixed an issue where the aggregation test hangs during rolling restart for the tmb
.
Fixed an issue related to using ConditionalIndex
with PofExtractor
.
Fixed an issue where creating an index while performing queries could stall the cache service.
Optimized permission checking when the security framework is used such that running a server in a Subject
context (Subject.doAs
) will not require repeated authentications.
Fixed an issue that could raise backing map events out of order when ObservableHashMap
was used as a backing map.
Made C++ LimitFilter::m_vComparator
mutable, to better match how it is used.
Fixed the issue that caused the domain name of a custom MBean to be ignored and changed to "Coherence". The JMX domain name for custom MBeans registered by applications is now "retained". For more information, see Knowledge Module Doc ID 1392954.1, available from Oracle Support:
Added send-timeout support for Extend clients. The <request-timeout>
value in <initiator-config>
now limits the time to send the request, in addition to the prior behavior of limiting the time to receive the response.
Fixed an issue that caused nodes to stop due to "Incompatible BinaryDelta implementation" when a storage-disabled proxy joined a cluster with a different backup count.
Fixed an issue that could cause an assertion error when encountering extremely long communication delays during service startup.
Addressed partial network failures when running over Exabus Account for MessageBus
failure which occurs independent of network/process failure.
Reduced the cost of removing and recovering from timed-out members.
The following changes and enhancements have been made for the 3.7.1.3 release.
Fixed a deadlock that could occur during query evaluation in the presence of heavy concurrent updates.
Fixed an issue with ReplicatedCache
that could cause new service members to hold outdated lease information.
Fixed an issue that caused the aggregation of large data sets to spuriously miss partitions.
Fixed a regression causing incomplete results for queries that use indexes against collection-based extractors.
Fixed an issue that could result in an IllegalStateException
during the removeIndex
operation.
Fixed an issue with PacketPublisher
auto-throttling.
Coherence now allows the PacketSpeaker
to be disabled to reduce memory consumption in large WKA clusters.
Fixed Issue with IllegalMonitorState
being thrown while performing a query during rapid updates.
Fixed Coherence*Web to honor the JVM system property coherence.cache.configuration.path
.
Fixed a memory leak of pending invocation results, triggered by high EntryProcessor
load during a failover.
Resolved an issue in MessageBus
death-detection which could have lead to the wrong service member being terminated.
Improved the process of locating the MANIFEST.MF
file.
Optimized the IPMonitor
topology so that a single member on each machine performs outgoing pings.
Made PofExtractor
tolerant to null values.
Fixed an issue in the read-write backing map where put
requests could be blocked by eviction.
Removed a potential deadlock which could occur during Coherence*Extend client request timeout.
The following changes and enhancements have been made for the 3.7.1.4 release.
For all Extend Clients customers (Java, C++, and .NET), you must upgrade the cluster side before upgrading the Coherence*Extend client. This is due to the fix for the problem where incorrect results were being returned to an Extend client using a LimitFilter
when the Coherence cluster had more than one storage node.
Fixed an issue that caused the cachestore rolling restart to fail.
Implemented hashCode
method on the PartitionSet
interface.
Fixed an issue with the Asp.NET SessionCleanupListener
that caused an IllegalThreadStateException
to be thrown after a Cluster restart.
Made changes to Flash and RAM Journal to avoid running out of disk space. For more information, see "Additions and Corrections to Elastic Data Documentation".
An exception is no longer thrown when a duplicate HttpSessionListener
is added in a Web application.
Fixed registration of custom REST aggregators and processors.
Fixed an issue which caused the host-address
element under authorized-hosts
in operational configuration to be ignored.
Fixed an issue that could cause a client to be stuck waiting for re-distribution.
Reduced contention in PortalCacheProvider.get()
method during heavy concurrent access to the same key.
Added support for WebSphere Application Server 8 to Coherence*Web.
Fixed Coherence*Web to honor the JVM system property coherence.cache.configuration.path
.
Fixed an issue where incorrect results can be returned to an Extend client using a LimitFilter when the Coherence cluster has more than one storage node.
Fixed an issue which caused the custom service-failure-policy
configuration to be ignored.
Redirect logging to System.err
if the configured logger is backlogged to avoid an overflow of the log queue.
Restored the ability to specify the cache name used by the ASP.NET Session Provider with the "cacheName
" attribute. See "Specifying the Session Cache for Session Management".
Fixed missing cache event call-backs when using custom ExtractorEventTransformer
.
Fixed a potential NullReferenceException
during concurrent access to a session.
Fixed LockRecursionException
in AttributeHolder
when accessing session data in Web Session Model.
Fixed a crashing issue which could occur when registering POF Annotated classes.
Updated the Coherence for C++ distributions to include the header files for the NearCache
and LocalCache
classes.
Fixed an issue which could cause C++ Class and Allocation HeapAnalyzers
to crash during initialization.
The following changes and enhancements have been made for the 3.7.1.5 release.
Reduced additional memory overhead for running InvokeAll
operation on PartitionedCache
.
Fixed a memory leak caused by Daemon's internal usage of ThreadGroups
.
Fix Rolling upgrade issues for 3.7.1.4 and older releases.
Fixed an issue where an attempt to perform multiple invokeAll(colKeys, processor)
calls could produce AssertionException: Invalid heartbeat interval
exceptions.
Fixed an issue which could cause entrySet()
method to return a smaller result set if the indexed value is a collection or array.
Improved accuracy of machine death detection by IP monitor, reduced the possibilities of false positives.
Added throttling to avoid PacketPublisher
thread overwhelming the PacketSpeaker
.
Fixed an issue where Request.RequestStatus.WaitForResponse
throws ArgumentOutOfRangeException
instead of RequestTimeoutException
.
The following changes and enhancements have been made for the 3.7.1.6 release.
Fixed a potential core dump during application shutdown.
Fixed an issue that caused a cluster to be created if TCMP was disabled.
Coherence parser can now handle UTF-8 with BOM characters.
Fixed and issue manifesting in ClassCastException
with Proxy Server/Extend client when using Optimistic Cache Scheme.
Fixed an issue where WindowsFormsCacheListener
could hang processing events.
Fixed a memory leak in transactional caches with read operations and auto commit enabled.
Added a Coherence for C++ distribution for Solaris x86 32-bit for use with the STLport library.
Fixed NullReferenceException
during deserialize of a user defined object when <references-enabled>
is set to true
.
Fixed the session affinity token configuration in GlassFish SPI.
Fixed an issue where the AllFIlter
method was throwing an ArrayIndexOutOfBoundsException
when initialized with an empty filter array.
Resolved an issue which prevented an SSL handshake from completing on some IBM JDKs.
Fixed an issue where Coherence*Extend for C++ clients may not detect a connection being closed by the proxy service.
Fixed an issue where two members could be started on the same process when a cache server is auto-restarted.
Resolved an issue in which the packet publisher could overwhelm the packet speaker as a result of moderate to heavy packet loss.
Fixed an issue where the POF Object References feature may not work due to an uninitialized POF context.
Connection timeouts are now honored by .NET clients.
Fixed an issue which could cause Coherence Server OOM for off-heap backup.
Improved resiliency of an index when a cache entry causes an exception during index update. The index is no longer dropped, so that queries relying on the index continue to execute efficiently. Corrupted entries are excluded from query results.
The following changes and enhancements have been made for the 3.7.1.7 release.
Fixed java.lang.IllegalStateException: invalid minute offset
for non-standard timezone.
Fixed an issue that could cause SafeCluster.ensureLocalService()
to throw a NullPointerException
error
Fixed an issue that could cause a Coherence*Extend ContinuousQueryCache
to stop receiving events if the proxy server is restarted.
Fixed an issue that may cause a data loss during putAll()
operation from Extend clients that immediately follows a failover or cache creation.
Fixed an issue where Coherence*Extend clients can receive duplicate events when there is more than one listener configured.
Fixed an issue which could cause missing MapListener
events for certain kinds of expiry or eviction changes.
Fixed an issue with the default <connect-timeout>
value for Coherence .NET.
Fixed an issue where calling NamedCache.invoke
using POF/Extend with objects containing circular references throws java.lang.StackOverflowError
.
Fixed an issue where a Coherence for .NET Extend client may make repeated attempts to reconnect to a proxy server which has shut down.
JMX now reports the correct size for read-write-backing-map-scheme
cache.
Fixed "attempt to exit session" IllegalStateException
during concurrent invalidation by multiple session reapers.
Changed the Coherence for C++ thread dump handler to run as a detached thread.
Fixed an issue where a resource lock timeout during the getAll
, putAll
removeAll
operations could result in service failure.
Fixed flash journal max file size configuration so that it is not ignored.
Fixed an issue where a Coherence for C++ Extend client connection may not failover when a proxy server goes down.
Fixed an issue where ClassCastException
could be thrown when LimitFilter
is used with custom Comparator
.
Fixed an issue that caused $QuorumRollCall$Poll
to throw a NullPointerException
error.
Improved resiliency of an index when a cache entry causes an exception during an index update. The index is no longer dropped, so that queries relying on the index continue to execute efficiently. Corrupted entries are excluded from query results.
Remainders are now handled correctly for nested evolvable POF objects.
The following changes and enhancements have been made for the 3.7.1.8 release.
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.8
Changes and Enhancements for Oracle Coherence for Java 3.7.1.8
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.8
Changes and Enhancements for Oracle Coherence for C++ 3.7.1.8
Reminder: For all Extend Clients customers (Java, C++, and .NET), you must upgrade the cluster side before upgrading the Coherence*Extend client. This is in compliance with our client and proxy upgrade policy. While there are some patches where it may be possible to get away with not following this policy, it must be followed for this patch due to the fix for the issue where Filter Listeners were not receiving the correct number of Events. |
Fixed an issue with Extend clients receiving duplicate events in some cases for key and filter based listeners.
Fixed an issue where the ContinuousQueryCache
might not receive events after the proxy has been restarted.
Fixed a regression in the initial 3.7.1.8 patch with default distribution.
Fixed an issue that causes a NullPointerException
to be thrown during cluster formation, if the IpMonitor
is disabled.
Fixed an issue where a deadlock was seen between put
/clear
threads with ReplicatedCache
.
Fixed an issue avoiding unnecessary MemberSet
object creation.
Updated the Coherence*Web JspServlet
class to extend GenericServlet
so that instrumented JSPs work in Tomcat Server.
Fixed the IllegalStateException
which was thrown after a cache destroy/recreate operation was executed using an Extend client.
Fixed a race condition where setting the ClassLoader
on a service after it has been started would result in the service's serializer being temporarily set to null. Note that it is recommended that the ClassLoader
only be set prior to starting a service.
Fixed a potential race condition where a ConfigurablePofContext
could be used before it is fully initialized.
Fixed an issue when executing concurrent EntryProcessors
where a change made by one processor may not be visible to a subsequent processor.
Fixed an issue that caused excessive memory usage by lightly used near caches after a cluster disconnect and reconnect.
Fixed an entry expiry issue where the expiry reset byBinaryEntryStore
is ignored.
Fixed an issue where a new entry expiry set by a map trigger is ignored.
Fixed an OutOfMemoryIssue
that occurs immediately after a cluster member with a NearCache
configured with AUTO
or ALL
joins the cluster.
Fixed an issue with query operations resulting in CacheLoader
/ BinaryEntryStore#load
if entries concurrently expire from the backing map.
Display of JMX attribute MaxQueryDescription
(under StorageManager
) is now truncated to 1024 characters.
Fixed a java.lang.ArrayIndexOutOfBoundsException
that can occur when using LimitFilter
objects.
The Javadoc documentation for the methods RequestMaxDuration
, RequestAverageDuration
, RequestPendingCount
, RequestPendingDuration
of classes ServiceModel
and ServiceMBean
have been updated.
Fixed a memory leak caused by stopping and restarting the cluster multiple times in the same JVM.
Added a default constructor for CoherenceWebSessionData
for a specific customer requirement.
Added support for WebSphere Application Server 8.5 to Coherence*Web.
Fixed an issue where UUID.CompareTo()
may return the wrong result for certain IP addresses.
Coherence for .NET Extend connections now have correct timestamps in the proxy server log messages and connection MBeans.
Implemented a workaround for the issue where PofStreamWriter.WriteLocalDateTime()
recorded an incorrect value for certain DateTime
values. This issue was caused by a bug in TimeZone.CurrentTimeZone.GetUtcOffset()
in .NET Framework 4.5.
Fixed an issue where Coherence for C++ may read freed memory during a network address lookup.
Updated the Coherence for C++ header files so that applications can be compiled using GCC 4.7.
Fixed a C++ compiler error in NativeAtomic64.hpp
on Linux.
The following changes and enhancements have been made for the 3.7.1.9 release.
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.9
Changes and Enhancements for Oracle Coherence for Java 3.7.1.9
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.9
Changes and Enhancements for Oracle Coherence for C++ 3.7.1.9
Fixed an issue which caused duplicate delivery of transformed MapEvents
.
Introduced a LISTEN_LOGICAL
strategy for CachingMap
to listen to all back map events that are not synthetic deletes. A synthetic event could be emitted as a result of eviction or expiration. With this invalidation strategy, it is possible for the front map to contain cache entries that have been synthetically removed from the back (though any subsequent re-insertion will cause the corresponding entries in the front map to be invalidated).
Fixed an issue which could cause a cluster configured with WKA hostnames to be stopped by the guardian if the DNS becomes unavailable. This issue only affects WKA cluster configurations which rely on symbolic hostnames which require DNS resolution.
PofHelper.getPofTypeId()
will now return the correct type ID for user types that derive from ArrayList
.
Removed a NullPointerException
during Coherence*Web initialization in older versions (pre-10.3.3) of WebLogic
Fixed an issue where the PofHelper
method getPofTypeId()
was returning the incorrect type
id
for user types deriving from an ArrayList
.
Fixed an issue that could result in a NullPointerException
being thrown when registering a partial result during server failover.
Fixed an issue where custom proxies were not being called when ensuring and/or destroying a cache.
Fixed the display values for BufferPublishSize
and BufferReceiveSize
attributes of the ClusterNodeMBean
.
Added the management-config
configuration element extended-mbean-name
to reflect the member name in global MBean object names.
Added support for HttpOnly
cookie attribute in instrumented Coherence*Web web applications.
Added a Coherence*Web configuration parameter to replace stripped-off suffix with a new affinity suffix.
Fixed an issue that caused native memory (DirectByteBuffer
) to be allocated unnecessarily.
Fixed an issue with invalid reporter configuration leading to an unsafe state.
Binary keys will be re-used for key listener registrations.
Added ReducerAggregator
to Coherence for .NET and C++ so that the ReducerAggregator
can be invoked from these languages.
Fixed the Coherence for .NET library to look for the correct XML configuration elements for using network filters, like the gzip compression filter.
PofHelper.getPofTypeId()
will now return the correct type ID for user types that derive from ArrayList
.
Fixed adapter_map
/boxing_map
iterator initialization when the map size is 1.
Added ReducerAggregator
to Coherence for .NET and C++ so that the ReducerAggregator
can be invoked from these languages.
Improved performance by removing unnecessary mutex locking when accessing registered classes and serializers in the SystemPofContext
.
The following changes and enhancements have been made for the 3.7.1.10 release.
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.10
Changes and Enhancements for Oracle Coherence for Java 3.7.1.10
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.10
Fixed an InFilter
serialization issue.
Fixed an issue where integer value of -31 is not read properly by the POF serializer.
Hardened the handling of cache deactivation calls.
Fixed a custom Comparator
issue with proxy service load balancing.
Improved the sending of DiagnosticPackets
such that they are sent to both advertised and preferred ports.
Fixed an issue with Elastic Data in which an invalid binary exception is reported during an operation that directly or indirectly calls keySet.
Hardened the transactional cache handling of javax.transaction.xa.Xid
to allow non-serializable implementations.
Added a new session configuration in Coherence*Web which keeps a local instance of a session in addition to flushing the session to the distributed cache.
Added a new session configuration in Coherence*Web which keeps an local instance of a session in addition to flushing the session to the distribute cache. For more information, see "Getting Concurrent Access to the Same Session Instance".
Fixed an issue that could result in false incompatible WKA list warnings when host names are used in the WKA list
Fixed an issue causing NamedCache
iterators to return duplicate results to Extend clients from Standard edition clusters.
Fixed an issue where RWBM.flush()
could return before all data are flushed.
Fixed an issue that caused the unit calculator configuration to be ignored by the ReadWriteBackingMap
.
Fixed an issue resulting in deadlock between the thread starting the cluster and the thread starting a service.
Fixed an issue where listeners on Replicated Cache could not receive map events.
Fixed an issue which could cause client memory leak if partition distribution "stuck".
Fixed an issue with Filter
execution producing high memory overhead due to an unnecessary JMX statistic.
Fixed a potential session initialization issue in WebLogic Server during side-by-side deployment.
Fixed an issue where integer value of -31 is not read properly by the POF serializer.
Added support for Coherence*Web with Tomcat 7.x application servers.
Hardened the handling of cache misconfigurations by guarding against Null Pointer Exceptions (NPE) and Unsupported Operation Exceptions (UOE) to provide a more stable service.
Fixed an issue where type -29 is not read properly by the POF serializer.
Improved client certificate selection for SSL enabled Coherence*Extend connections.
Removed Coherence for .NET installer prerequisite on .NET Framework 2.0.
The following changes and enhancements have been made for the 3.7.1.11 release.
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.11
Changes and Enhancements for Oracle Coherence for Java 3.7.1.11
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.11
Changes and Enhancements for Oracle Coherence for C++ 3.7.1.11
Improved ConnectionException
to return the cause of the exception from the proxy server.
Reduced contention on the Proxy service for key-based requests that target the same keys.
Fixed an issue in ensureCache
which can result in client threads becoming stuck if the ensureCache
was unresponsive.
Fixed an issue where an Extend client doesn't receive delete events from a replicated cache.
Fixed a ConcurrentModificationException
that may occur in RefreshableAddressProvider
upon retrieving the next address when the last address in the list was rejected.
Fixed an issue in which we may duplicate the call to the CacheStore
on failover for a successfully stored entry.
Fixed an issue where IllegalStateException was thrown from CoherenceWebSessionContextImpl
while retrieving the session.
Hardened the PacketReciever
against randomly truncated, otherwise valid packets.
Fixed an issue where Coherence*Web on Tomcat 7.0 reported incorrect Tomcat version information in the log file.
Fixed an issue in which CacheMBean
may produce an exception if a non- ConfigurableCacheMap
instance is used as the front map.
Added ability to define MapTriggerListeners
for remote caches by using the <listener>
element.
Fixed an erroneous clean-up of locally stored session attributes.
Fixed a possible Guardian time out issue which might occur when restoring orphaned partitions.
Fixed Session Reaper to ensure that local attributes are cleaned up when session invalidation is initiated from a different node.
Fixed a potential AssertionException
in Coherence*Web during application undeploy.
Fixed an issue that could prevent a conditional index from correctly indexing an entry.
Fixed a potential race condition between a guarded thread timing out and the thread no longer being guarded for ReadWriteBackingMaps
.
Fixed an issue in the asynchronous SSL implementation that may cause a request to hang when SSL communication is enabled.
Added the "RACK-SAFE
" and "SITE-SAFE
" support for statusHA
and configured them to be displayed only when the partition assignment strategy is not legacy.
Added a SimplePrincipal
which derives from GenericPrincipal
. SimplePrincipal
uses the Identity.Name
property to determine object equality.
Fixed a .NET 4.5 framework issue with SynchronizedDictionary
.
Added ability to define MapTriggerListeners
for remote caches by using the <listener>
element.
Added "-mmacosx-version-min=10.4
" to the examples compilation commands to address link errors with Xcode 5.
Changed DetachFinalizer::set()
to detach from the old object with the old escaped flag.
Updated TypedMethod.hpp
so that Xcode (clang) no longer warns about unused functions in the file.
Fixed LiteSet
so that it can support more than two elements.
Fixed an issue with String::substring
prematurely ending a substring search.
The following changes and enhancements have been made for the 3.7.1.12 release.
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.12
Changes and Enhancements for Oracle Coherence for Java 3.7.1.12
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.12
Fixed a serialization buffer allocation performance issue.
Fixed an issue where a ConcurrentModificationException
may be thrown when invoking ConditionalRemove
on a ReplicatedCache
from an Extend client.
When using the Coherence Cache Provider with WebLogic Portal, the cache configuration may be set using a system property.
Changed the proxy service worker threads to close Coherence*Extend connections asynchronously when a connection will be closed due to an error.
Fixed NotSerializableException
in Coherence*Web for WebLogic Portal components during session invalidation.
Fixed an issue that could cause the index size from getUnits()
to become negative.
Updated PofValue.getValue()
API documentation to indicate that the type must be explicitly specified for primitive types.
Fixed an issue with events not being delivered to pre-3.7.1 Coherence*Extend clients.
During session invalidation, ConcurrentModificationException
is logged only when the logging level is set to FINEST
.
Reduced the contention when ReadWriteBackingMap
is subject to high load and evictions.
Fixed an event delivery issue for cache listeners registered with filters that use a PofExtractor
.
Updated PofValue.getValue()
API documentation to indicate that the type must be explicitly specified for primitive types.
Fixed an issue with events not being delivered to pre-3.7.1 Coherence*Extend clients.
Changed Coherence.dll
for Coherence.NET to have no diagnostic instrumentation overhead. Coherence.pdb
is still provided for debugging purposes.
The following changes and enhancements have been made for the 3.7.1.13 release:
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.13
Changes and Enhancements for Oracle Coherence for Java 3.7.1.13
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.13
Changes and Enhancements for Oracle Coherence for C++ 3.7.1.13
Fixed a concurrent access issue with UUIDs.
Fixed an issue with UpdaterProcessor
that could cause missing entry update in CacheStore
, BinaryEntryStore
, and Listeners
.
Fixed an issue where internal session attribute names are returned without stripping the InternalWLSAttribute
prefix.
Fixed a POF serialization issue for negative Dates with nonzero sub-seconds.
Fixed an issue where session attributes are mandated to implement java.io.Serializable
.
Implemented Servlet 3.1 feature which enables an application container to update the session ID after authentication.
Fixed memory leak in release cache.
Fixed an issue which could cause server to fail to join the cluster with tmbs
protocol.
Fixed an issue where internal session attribute names are returned without stripping the InternalWLSAttribute
prefix.
Fixed an issue which could cause TcpAcceptor
hang when decoding non-Coherence messages.
Improved POF date and time deserialization performance.
Fixed an issue where ReadWriteBackingMap
may unnecessarily log messages regarding an unexpected EvictionApprover
.
Fixed an issue where cmd
scripts shipped by Coherence fail to handle JAVA_HOME
path containing spaces and parenthesis.
Fixed memory leak in release cache.
Fixed an issue where MultiExtractor
was not using indexes for its ValueExtractor
.
Provided limited support for PofValueParser
and PofNavigator
when object identity/reference is enabled. If the user performs an unsupported function, then an UnsupportedOperationException
will be thrown.
Fixed an issue with RefreshableAddressProvider
in which previously unaccepted addresses may not be retried after successful connection.
Fixed msiexec /x coherence-net-3.7.1.*.msi /qb
to no longer show error message dialog.
Corrected an issue when iterating the entries, keys, or values of a ContinuousQueryCache
.
Provided limited support for PofValueParser
and PofNavigator
when object identity/reference is enabled. If the user performs an unsupported function, then an UnsupportedOperationException
will be thrown.
Fixed an issue where dependent threads of a Coherence service may fail to stop during service shutdown.
Fixed a typo in the guard macro for XorFilter.hpp
.
The following changes and enhancements have been made for the 3.7.1.14 release:
Changes and Enhancements for Oracle Coherence—All Platforms 3.7.1.14
Changes and Enhancements for Oracle Coherence for Java 3.7.1.14
Changes and Enhancements for Oracle Coherence for .NET 3.7.1.14
Changes and Enhancements for Oracle Coherence for C++ 3.7.1.14
Disabled POF object references for cache keys to prevent the possibility of two cache entries with the same key. For further details including potential upgrade issues, see "Upgrading to 3.7.1.14 or Higher".
Fixed an issue where asynchronous ownership is requested by WLS SPI code for Coherence*Web.
Improved SSL connect to include handshake in any configured connect timeout.
Fixed an issue where the ReportTime
column is missing in report-cache-size.xml
.
Added codecs for well known class types like ArrayList
, HashMap,
and so on.
Disabled POF object references for cache keys to prevent the possibility of two cache entries with the same key. For further details including potential upgrade issues, see "Upgrading to 3.7.1.14 or Higher".
Fixed a problem that caused unnecessary "unregister MBean" messages sent to a managed node after a cache is destroyed.
Fixed an issue when under high load using expiry or eviction resulting in AssertionExceptions
or deadlock.
Fixed the issue that cache entries over high-units are not correctly evicted.
Fixed an issue where addIndex()
run in a non-synchronized thread gave wrong results for a replicated cache.
Fixed an issue that could prevent the service or cluster from restarting after abnormal failure.
Fixed an issue where exception null
was seen upon stop of FlashJournalRM Daemon thread during service restart.
Fixed an issue where cache-server.sh
and coherence.sh
scripts were using CRLF characters for line endings.
Fixed an issue where daemon threads were not using the specified service classloader.
Fixed an issue where <cipher-suites>
element in cluster configuration caused SAXParseException
.
Fixed an issue where an ArrayIndexOutofBoundsException
is thrown from ClusterModel.getMemberIds()
call due to some of cluster members going down during the operation.
Resolved a stability issue on IBM J9 JVM when running Coherence on TCP.
Fixed an issue where invocation of QueryPlus.main
preceded by QueryHelper.createFilter
caused NullPointerException
.
Disabled POF object references for cache keys to prevent the possibility of two cache entries with the same key. For further details including potential upgrade issues, see "Upgrading to 3.7.1.14 or Higher".
Fixed an issue where SynchronizedDictionary.AcquireWriteLock()
may hide thread interrupts.
Fixed an issue where a client could end up with a thread stuck in a CPU busy loop if an error occurs while processing a message from the proxy server.
Fixed a concurrent access issue on CacheFactory
methods.
Added Class::getTypeInfo()
and Class::typeEquals()
methods.
Disabled POF object references for cache keys to prevent the possibility of two cache entries with the same key. For further details including potential upgrade issues, see "Upgrading to 3.7.1.14 or Higher".
Fixed an issue where CacheFactory::shutdown()
could hang waiting for the Logger
thread to close.
Updated some header files to address GCC 4.8 compilation warnings.
The following changes and enhancements have been made for the 3.7.1.15 release:
Fixed an issue where Coherence*Web does not save sessions to the cache when used with WebLogic servers that have the patch for bug 18057437.
Fixed an issue where HTTP sessions are not saved when Coherence*Web is being used by PeopleSoft applications.
Fixed an issue where a NIC with multiple IP addresses can trigger IpMonitor failures.
Fixed an issue where the SSL configuration password may be logged if an exception occurs due to invalid SSL configuration.
Fixed an issue where a non-SSL client could trigger a node to restart.
Fixed an issue where Coherence*web is creating a new session cache (by appending the appversion to the appname) for each version of an application.
Improved diagnostic logging on port binding failures when auto-adjust is disabled.
Fixed a potential concurrency issue with SafeClock.updateSafeTimeMillis()
which could result in thread hangs.
Hardened tmb against erroneous socket closures caused by interrupts or idle connections.
The following changes and enhancements have been made for the 3.7.1.16 release:
Fixed an issue where a PartitionedCache
service could be terminated due to a NullPointerException
being thrown in PartitionedCache$Storage.moveResourcesToPrimary()
.
Fix an issue where an IllegalArgumentException could be thrown when calling cache destroy while a partition transfer is in process.
Changed the default value of the system property "tangosol.coherence.publisher.yieldonflush
" to "false
" to address Coherence cluster performance issues in some environments.
Addressed an issue where threads accessing Coherence via Extend could have the interrupt status of a thread erroneously cleared.
Addressed an issue where an inconsistent configuration of the Coherence reliable transport setting could result in a NullPointerException.
Fixed an issue where a deadlock may occur in an *Extend client when the connection to the proxy server is closed.
Improved Coherence's management of off-heap DirectByteBuffers
to more closely couple their life-cycle to that of the garbage collector.
Added Windows TCP retransmission setting overrides to optimize.reg to help reduce false death detections by allowing the Coherence cluster members to be more tolerant of short network outages.
Added support for enabling or disabling specific SSL protocols within Coherence's SSL configuration.
Fixed an issue where an interrupted Cluster start operation can cause the Cluster service to fail to shutdown cleanly.
This section describes issues that are known at the time of release.
To prevent the possibility of two cache entries with the same key, POF object references are disabled for cache keys in release 3.7.1.14. This fix, in some cases, breaks compatibility with earlier 3.7.1.x releases. For partitioned caches, the serialized key format in 3.7.1.14 is different than keys that are generated with 3.7.1.13 and earlier when all of the following conditions are true:
The PartitionedCache
service is configured to use POF serialization.
The POF serializer is configured with object references enabled (<enable-references>
is set to true
). Object reference support is disabled by default.
One or more of the caches in the PartitionedCache
service contain entries with keys that are complex type objects (that is, an object class that does not have built-in POF support).
Note: Note that the 3.7.1.14 key format is now identical to what is used by release 12.1.2 and above. So, 3.7.1.14 Coherence*Extend clients may interact with a 12.1.2 or later version Coherence cluster. |
Starting with 3.7.1.14 and later releases, POF object references are disabled for cache key serialization to prevent a condition where key objects which are .equals()
equivalent but are not the same object (not ==
) can result in different serialized keys. This issue can cause duplicate entries for the same key and can also result in what appears to be missing, phantom, or inaccessible cache entries.
For cases where one or more of the previously mentioned conditions are not true, there are no issues with upgrading to 3.7.1.14. The normal upgrade process can be used. That is, perform a rolling restart, upgrade the cluster before the clients, and so on.
If all the conditions are true, then perform the following upgrade process:
If the Coherence cluster is 12.1.2 or above, and the upgrade is only being done to Coherence*Extend clients, then all 3.7.1.x clients should be upgraded to 3.7.1.14 at the same time. If they are not, then cache entries added by an older 3.7.1.x client may not be accessible by 3.7.1.14 (and 12.1.2 and above) clients and the cluster members.
If the Coherence cluster is 3.7.1.x (3.7.1.0 - 3.7.1.13), then the cluster must first be shutdown prior to patching. All data must be reloaded so that the keys are in the correct serialized format. In other words, a rolling restart is not possible. In addition, all 3.7.1.x Coherence*Extend clients must be upgraded. Older 3.7.1.x version Coherence*Extend clients may not be able to access data in the cluster and any data inserted by older clients may not be accessible by 3.7.1.14 Coherence*Extend clients and cluster members. In terms of ordering, the 3.7.1.x cluster must be upgraded to 3.7.1.14 first then followed by upgrading the 3.7.1.x Coherence*Extend clients.
When building C++ applications with Apple OS X 10.9 (Mavericks), you must compile with the command g++
(as opposed to CC
) and you must use the parameter -mmacosx-version-min=10.4
.
The use of object identity and references has the following limitations:
Object references are only supported for user-defined object types.
Evolvable objects are not able to use object references.
Objects that have been written out with a POF context that does not support references cannot be read by a POF context that supports references. The opposite is also true.
POF objects that use object identity and references cannot be queried using POF extractors. Instead, use the ValueExtractor
API to query object values or disable object references.
The following features have been deprecated or removed from the Coherence 3.7.1 release.
DTD files have been removed from the Coherence distribution. XSD is now used to validate configuration files.
Support for the symmetric and PKCS encryption filters has been removed in this release of Oracle Coherence. Compression filters and custom network filters are still supported. You can find documentation for network filters in the 3.7.0 release of the Oracle Coherence Developer's Guide.