1 Technical Changes and Enhancements

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

1.1 Oracle Coherence for Java 3.5

The following is a list of new features and improvements in Oracle Coherence 3.5:

New and Improved Coherence Data Grid Functionality

  • Prior to Coherence 3.5 off-heap based backing maps had a capacity limit of 2GB per node. Coherence 3.5 allows setting up backing map capacity on partition by partition base, dramatically increasing the total backing map capacity per 64bit JVM node.

  • Introduced POF-based value extractors and updaters (see PofExtractor and PofUpdater); this feature allows efficient using of partitioned cache queries, aggregations, and invocations without serialization and deserialization of corresponding values.

  • Added server side logic that uses the EntryProcessor.processAll() method to batch process multiple entries that belong to the same partition.

  • Added a "service guardian" functionality to identify and recover from server-side deadlocks.

  • Dramatically reduced the CPU consumption during the redistribution of backing maps with large number of entries, and performance of the partition-based queries.

  • Prior to Coherence 3.5, to ensure even distribution the number of partitions had to exceed a square of the number of storage-enabled nodes. This constraint has been removed.

  • Added several distribution-related PartitionEvent types that are delivered to preconfigured partition listeners.

  • Added ability to specify an AddressProvider for dynamic discovery of the Well-Known-Address (WKA) list, thus enabling dynamic reconfiguration of the WKA based on changes in the environment without cluster restart. This feature is particularly useful for operations in dynamic environments such as Amazon's EC2.

  • Added the ability to easily iterate query results on a partition-by-partition or member-by-member basis (see the com.tangosol.net.partition.PartitionedIterator class). This feature is particularly valuable for processing large result sets.

  • Added the ability to specify an AddressProvider for dynamic discovery of the Well-Known-Address (WKA) list and ProxyService's acceptor, thus enabling dynamic reconfiguration of the WKA and tcp-acceptor based on changes in the environment without cluster restart. This feature is particularly useful for operations in dynamic environments such as Amazon's EC2.

  • Added an automatic detection and resolution of multicast group disconnects.

Coherence*Web Enhancements

  • Hardened support for the Coherence*Extend-based deployment topology. See "Configuring Coherence*Web with Coherence*Extend" in the "User's Guide for Oracle Coherence*Web" for complete details.

  • Added various optimizations and fixed several issues with the Coherence*Web WebLogic SPI implementation. See the "User's Guide for Oracle Coherence*Web" for more details.

  • Fixed several issues with HttpSession-related lifecycle event dispatching.

  • Added a new application-scoped locking mode to better support complex application deployments. See "Session Locking Modes" in the "User's Guide for Oracle Coherence*Web" for more details.

  • Optimized the performance of HttpSession access for Web applications with read-mostly access patterns.

  • Optimized the performance of the split session mode update and invalidation operations.

  • Optimized the performance of the session reaper, dramatically reducing network and CPU utilization by moving the expired session detection into the data grid.

  • Added session affinity support for Tomcat.

  • Coherence*Web 3.5 has been certified on WebLogic Server 11g (10.3.1) and 10.3. See "Required Patch Levels for Coherence*Web 3.5" for details.

WebLogic Portal Integration

  • Certified the PortalCacheProvider with WebLogic Portal 9.2 and 10.2+.

Other Enhancements and Fixes

  • Added index support for Replicated, Local and Continues Query caches.

  • Reduced memory usage by indexes.

  • Add support for unit calculator to "external-scheme" (SerializationMap).

  • Added support for the KeyAssociatedFilter for the Coherence*Extend clients.

  • Introduced the new com.tangosol.util.BinaryEntry interface that provides access to entry's data in internal (Binary) format to entry processors and aggregators.

  • Improved performance of default hybrid eviction strategy for local caches.

  • Improved multiple object handling in the HibernateCacheStore.

  • Hardened the ownership conflict resolution algorithm for partitioned services.

  • Made deserialization routines in DistributedCache service more robust, preventing custom processor serialization failure to cause the service failure.

    As of Coherence 3.5, the PortableObject interface no longer extends Serializable interface.

  • Added a local-only configuration setting that allows custom MBeans to be registered without the nodeId attribute.

  • Added a work around the WebSphere 6.1 MBean name mangling, which prevented MBean re-registering during application re-deployment.

  • Turned the remote JMX management feature on by default.

  • Fixed a concurrency issue in the ConfigurablePofContext.

  • Fixed a potential deadlock caused by concurrent NamedCache.destroy() calls.

  • Allowed the network filters to be configured for the Cluster service.

  • Fixed a serialization-related regression in the ReplicatedCache service causing it to return Binary object.

  • Fixed a regression for the key-based map removeMapListener API during redistribution.

  • Allowed non-serializable objects to be used in ReplicatedCache service with custom Serializers.

Backward Compatibility

The AbstractExtractor implementation has an additional ability to operate against the java.util.Map.Entry instead of just the value. This allows any sub-classed to extract a desired value using all available information on the corresponding Map.Entry object and is intended to be used in advanced custom scenarios, when application code must look at both key and value at the same time or can make some very specific assumptions regarding to the implementation details of the underlying Entry object. The only impact of that change is that custom subclasses of the EntryExtractor have to change the parameter signature for the extractFromBinary() method.

1.2 Oracle Coherence for .NET 3.5

Other Enhancements and Fixes:

  • Introduced POF-based value extractors and updaters (in Tangosol.Util.Extractor namespace). This feature allows efficient using of partitioned cache queries, aggregations and invocations without serialization and deserialization of corresponding values.

  • Added index support for the Local and Continuous Query caches.

  • Added support for the KeyAssociatedFilter.

  • Improved performance of default hybrid eviction strategy for local caches.

  • Fixed a concurrency issue in the ConfigurablePofContext.

1.3 Oracle Coherence for C++ 3.5

Additional Platform Support

  • Solaris on SPARC, x86, x64

  • Apple OS X on x64

Performance Improvements

  • Optimized memory management for short lived heap objects.

  • Added automatic thread based escape analysis.

  • Significantly reduced the cost of reference counting.

  • Significantly optimized RTTI-based cast operations.

  • Dramatically reduced contention for the Socket read/write operations.

  • Added coherence::lang::FinalHandle, FinalView, and FinalHolder for reduced cost thread-safe data member reads.

Other Enhancements and Fixes

  • Introduced POF-based value extractors and updaters (PofExtractor and PofUpdater in coherence/util/extractor namespace); this feature allows the efficient use of partitioned cache queries, aggregations, and invocations without serialization and deserialization of corresponding values.

  • Added index support for the Local and Continues Query caches.

  • Added coherence::util::extractor::TypedExtractor for local and remote ReflectionExtractor functionality

  • Added support for the coherence::util::filter::KeyAssociatedFilter.

  • Added the coherence::util::ArrayList class.

  • Added stack trace support on Windows Vista.

  • Added OOME and memory corruption detection for Arrays.

  • Removed coherence-debug shared library; release library is now suitable for linking with debug applications.