1 Technical Changes and Enhancements

This chapter describes the changes and enhancements made to the Oracle Coherence product for the 3.6 release. This document is accurate at the time of publication. Oracle updates the release notes periodically after the software release.

1.1 Download and Install the Latest Software Patch

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.

  1. Login to My Oracle Support.

  2. Click the Patches & Updates tab.

  3. Under the Patch Search tab, select Product or Family (Advanced Search), and select the Include all patches in a product family check box.

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

1.2 New and Improved Coherence Data Grid Functionality

The following new functionality has been added to the Coherence 3.6 release.

  • Introduced a new MVCC-based Transaction Framework that provides ACID transaction guarantees across partitions and caches even in the event of failure, and supports the use of NamedCache operations, queries, aggregation, and entry processors within the context of a transaction. The three components that are included are a <transactional-scheme> cache configuration element, a Connection-Based API and a fully XA-Compliant Resource Adapter.

  • Introduced the Coherence Query Language (CohQL) which provides a light-weight SQL-like syntax that can be used to perform cache operations on a Coherence cluster. The language can be used both programmatically and from a new command-line tool.

  • Introduced Quorum support which provides a mechanism that allows customers to configure how Coherence should behave at various service and/or cluster sizes.

  • Introduced the Coherence ASP.NET Session Management module which allows you to manage ASP.NET session state in a Coherence cluster in the same way Coherence*Web provides session management in JEE containers.

  • Added SSL support for Coherence*Extend and TCMP.

  • Introduced user-defined indexes, which can be used to control what entries are added to an index. User-defined indexes are typically used to reduce the memory and processing overhead required to maintain an index.

  • Introduced a new BinaryEntryStore interface, which is similar to the CacheStore, but operates on BinaryEntry objects. The interface allows implementations to use optimistic concurrency for database updates (using the OriginalValue accessor) and interoperate with the backing map by modifying the entry's value.

  • Added fast machine-level death detection (IPMonitor).

  • Added deterministic process-level death detection to TcpRing.

  • Added the BroadPartitioningStrategy implementation, for use with key association, that "spreads" the partition assignment for a given group based on a "span" value.

1.3 Oracle Coherence for Java 3.6

New features, improvements, and bug fixes have been added to these Oracle Coherence for Java components:

1.3.1 Coherence*Extend Enhancements and Fixes

The following is a list of new features, improvements, and bug fixes to Coherence*Extend for the 3.6 release. New Features

  • Added SSL support for Coherence*Extend. Enhancements

  • Optimized streaming of query results between cache servers and proxies.

  • Changed the default value of the reuse-address configuration element to true.

  • Fixed issue with PofBufferReader.getParentParser() accessor, where the wrong parent could be returned. Fixes

  • Fixed an issue in which a misconfiguration of network filters by clients could terminate the proxy service.

  • Hardened NamedCacheProxy.unregisterChannel() to protect against a concurrent release or destroy of the wrapped cache.

  • Fixed an issue in which WrapperSet.$KeySet.remove() could potentially result in multiple RemoveRequests.

  • Fixed an issue in which multiple network filters were being applied in inverse order for send and receive.

  • Hardened the TCPAccepter behavior when null is returned from the configured AddressProvider.

  • Initiator.openConnection() now respects the connect timeout setting.

1.3.2 Coherence*Web Enhancements and Fixes

The following is a list of new features, improvements, and bug fixes to Coherence*Web for the 3.6 release. New Features

  • Introduced a Coherence*Web-specific report for the Reporter that consolidates the more relevant JMX statistics for managing and monitoring Coherence*Web.

  • Implemented session affinity for Tomcat 5.5 and JBoss.

  • Added support for restricting the return of session cookies over secure protocols only.

  • Implemented a Tomcat 6.0 DefaultFactory to support the Servlet 2.5 API. Enhancements

  • Added various optimizations and fixed several issues with session reaping.

  • Optimized session reaping by implementing parallel reaping routines.

  • Hardened deserialization routines involving SessionExpiryExtractor by using Binary decorations.

  • Added a new locking mode that allows concurrent updates to the session by way of a "last writer wins" policy.

  • Hardened support for single session ID referencing of a unique HttpSession instance in each Web application using WebLogic Server SPI.

  • Optimized WebLogic Server SPI session and session attribute event dispatching.

  • Optimized session cookie encoding.

  • Hardened AbstractHttpSessionCollection.isExistent() implementation for cases when session ID is null.

  • Introduced enforcement of consistent Coherence*Web configuration across Web applications that share session data.

  • Introduced ability for users to explicitly disable the automatic suspect attribute.

  • Introduced the ability to customize attribute serialization.

  • Introduced the ability to configure Coherence*Web to automatically print a thread dump on a node holding a session lock.

  • Optimized the update of session attributes when using the split session model.

  • Introduced a configuration parameter to allow session ownership to be lazily acquired.

  • Optimized flush behavior on the HttpSession model by deferring the flush until the last concurrent request completes.

  • Converted to using StringBuilder rather than StringBuffer.

  • Optimized logging.

  • Decoupled local session attributes from sticky session optimization.

  • Added the coherence-session-get-lock-timeout context parameter to configure lock timeouts for Coherence*Web.

  • Introduced the ability to override context parameters by using system properties. SPI-Specific Enhancements and Fixes

  • Changed the default locking model in the WebLogic Server SPI to be consistent with the default in non-SPI configurations.

  • Enabled session metric reporting in the WebLogic Server console using the SPI.

  • Enabled side-by-side deployment in WebLogic Server using the SPI. Fixes

  • Fixed the IllegalStateException: session is not in a 'active' state exception that could occur if thread locking is disabled and there are concurrent requests for the same session.

  • Fixed the issue where Coherence*Web would not honor the session-timeout value configured in the web.xml file.

  • Fixed a potential deadlock that could occur during remote include and forward when using Coherence*Web with the WebLogic Server SPI.

  • Fixed session ownership issues after executing WebLogic Server proprietary logout methods.

  • Introduced the caching of HttpSessions after application redeployment in WebLogic Server.

  • Fixed ClassNotFoundException that could occur if multiple Web applications were deployed when using application or EAR-scoped cluster nodes.

  • Hardened ServletRequestListener session exit behavior after it executes.

  • Fixed instances where JSP XML files could potentially be improperly encoded by the installer.

  • Hardened update rejections on sessions that have been concurrently invalidated when using the optimistic locking mode.

  • Fixed an issue regarding the management of non-serializable attribute retention.

  • Fixed ClassNotFoundException during session invalidation.

  • Fixed issue with JBoss and TagLibs caused by com.tangosol.coherence.servlet.api23.JspServlet not implementing _jspInit().

1.3.3 Management Framework Enhancements and Fixes

The following is a list of new features, improvements, and bug fixes to the management framework for the 3.6 release.

  • Added support for MBean notifications

  • Added ability to reduce the number of registered MBeans based on the name patterns

  • Added a new TransactionManagerMBean.

  • Added membership notifications to the ClusterMBean.

  • Added the MemberDeparted attribute to the ClusterMBean showing a list of recently departed members.

  • Added the QuorumStatus attribute to the ClusterNodeMBean and ServiceMBean.

  • Fixed ClassCastException when using DoubleSum.process with the Reporter.

  • Fixed the rolename attribute initialization issue that could occur when running with JRockit.

  • Hardened CacheMBean to insulate itself from the cache being concurrently destroyed.

  • Reduced the memory footprint for ClusterNodeMBean.

  • Fixed an issue with reporting negative values when services are restarted.

1.3.4 Security Framework Enhancements and Fixes

The following is a list of new features, enhancements and bug fixes to the security framework for 3.6.

  • Added pluggable identity handling between client and proxy to enable identity validation and custom security tokens.

  • Added subject scoping to automatically associate Subjects with remote cache and invocation service references.

  • Added ability to wrap remote cache service and remote invocation service to allow custom authorization code in the proxy.

  • Fixed bug that would ignore security exceptions for expired certificates.

  • Fixed concurrency bug in security framework when under heavy load.

1.3.5 Serialization Framework Enhancements and Fixes

The following is a list of new features, improvements, and bug fixes to the serialization framework for the 3.6 release.

  • Optimized PacketPublisher by replacing the use of streams with buffers.

  • Optimized aggregator and entry processor serialization by using LiteMap and LiteSet.

  • Added EnumPofSerializer.

  • Removed overly strict assertions from AbstractEvolvable.

  • Optimized Number deserialization in POF.

  • Fixed an issue with PofExtractor where it could fail to extract values from uniform collections.

  • Fixed issue with PofBufferReader.getParentParser() accessor, where the wrong parent could be returned.

1.3.6 Other Enhancements and Fixes

The following is a list of other improvements and bug fixes for the 3.6 release.

  • Allowed for a disabled guardian to monitor and log SLA violations.

  • Optimized configuration updates during distribution of partitions.

  • Minimized operating system level UDP socket contention.

  • Added a RegexFilter implementation.

  • Reduced index overhead for indices with high cardinality.

  • Added support for KeyExtractor-based filter to the ContinuousQueryCache.

  • Added the ability to determine which node a partition is backed up on.

  • Added support for custom filtering of the authorized hosts, determining if a host is allowed to join the cluster.

  • Optimized forward index by reusing previously extracted Collection references

  • Scaled-back the aggressiveness of write-delay after a failure.

  • Hardened the ReadWriteBackingMap implementation to protect the write-behind queue from excessive growth.

  • Changed the default setting for rollback-cachestore-failures to true.

  • Allowed the MachineId element to be specified as a string.

  • Improved cluster join protocol to enforce the cluster size limitation imposed by maximum packet size.

  • Optimized memory footprint for PacketPublisher.

  • Added ability to layer network protocol filters.

  • Optimized the handling of write-behind thread timeouts.

  • Added the ability to scroll through the history of commands in the command line tool.

  • Fixed a race condition during simultaneous service start (with ownership-disabled senior), which could potentially lead to ownership desynchronization.

  • Resolved race condition related to well-known and non-well-known members forming a cluster.

  • Fixed an issue where ServiceEvents were potentially not dispatched during a hard stop.

  • Fixed issue where a malformed or rogue SeniorMemberHeartbeat could result in cluster restart.

1.4 Oracle Coherence for .NET 3.6

The following is a list of new features, improvements, and bug fixes in Oracle Coherence for .NET 3.6:

1.4.1 New Features

  • Added SSL support for Coherence*Extend.

1.4.2 Other Enhancements and Fixes

  • Added connection-specific information to the ConnectionException class.

  • Improved the information reported when a ConnectionException occurs due to socket disconnect.

  • Optimized RemoteNamedCache.BinaryCache.Query() by using ImmutableMultiList.

  • Introduced the ability to associate identity with cache and service references.

  • Added an EnumPofSerializer.

  • Converted CacheEntry to a value type.

  • Fixed an issue where GetLocalHostAddress() could potentially return the IP address of a DNS Server.

  • Fixed the incorrect usage of IDisposable.

  • Fixed an issue where network filters were being applied in inverse order, for send and receive.

  • Initiator.OpenConnection() now respects the connect timeout setting.

  • Fixed issue with PofBufferReader getParentParser() accessor, where the wrong parent could be returned.

1.5 Oracle Coherence for C++ 3.6

The following is a list of new features, improvements, and bug fixes in Oracle Coherence for C++ 3.6:

1.5.1 New Features

  • Exposed TreeMap and Universally Unique Identifier (UUID) implementations.

  • Added support for Visual Studio 2010.

1.5.2 Other Enhancements and Fixes

  • Improved the information reported when a ConnectionException occurs upon socket disconnect.

  • Optimized the buffering of reads and writes to the underlying Socket in TcpInitiator::readMessageLength() and writeMessageLength().

  • Optimized RemoteNamedCache::BinaryCache::query() by using ImmutableMultiList.

  • Added static Array<T>::hashCode(const T*) helper.

  • Made GenericPrincipal class available in C++.

  • Fixed issue where network filters were being applied in inverse order for send and receive.

  • Initiator::openConnection() now respects the connect timeout setting.

  • Fixed potential deadlock between TcpInitiator and TcpReader during shutdown.

  • Fixed segmentation faults that could occur when unloading the Coherence library.

  • Fixed issue with PofBufferReader::getParentParser() accessor, where the wrong parent could be returned.