3.1 Release Notes
The following is a list of new features and improvements in Tangosol Coherence 3.1:
- Coherence Management Framework Enhancements
- Coherence*Extend-JMS Enhancements
- Resolved potential serialization errors of some JMS Message classes when a JMS NamedCache stub is used as a CacheLoader by a LocalCache with an extremely aggressive expiration policy (COH-300).
- Significantly optimized synchronous MapEvent dispatching. This improvement greatly increases the performance of a NearCache backed by a JMS NamedCache stub.
- Optimized JMS NamedCache stub erase() and store() operations.
- Added the ability to override the default JMS Message time-to-live via the tangosol.coherence.jms.ttl system property. This property specifies the default time-to-live in milliseconds and defaults to 10000 (10 seconds).
- Added the ability to configure a JMS NamedCache proxy to be read-only via the tangosol.coherence.jms.readonly system property. If set to true, all JMS NamedCache proxy instances running within the JVM will reject any request from a JMS NamedCache stub that may potentially modify the contents of the target NamedCache.
- Added support for the complete set of NamedCache operations with the exception of lock() and unlock() to the JMS NamedCache stub. See the JavaDoc for the AdapterFactory class for additional details.
- Added the ability to map a cache name directly to a JMS caching scheme in a cache configuration descriptor file.
- Added support for remove() on a NearCache when a JMS NamedCache stub is used as the back map.
- Coherence*Web Enhancements
- Resolved an issue with the SplitHttpSessionCollection that caused HTTP session attributes larger than 512 bytes to be erroneously stored in the external HTTP session storage cache during the first request for a new HTTP session (COH-331).
- Resolved an issue with the Coherence*Web Installer that caused Servlet 2.4-specific schema attributes to be dropped from the <web-app> web.xml root element during installation (COH-347).
- Added support for the following containers:
- IronFlare Orion 2.0.x
- Added support for JSPs that extend a base Servlet class.
- Upgraded the Coherence*Web Installer Ant task to Ant 1.6.5.
- Improved the HttpSessionModel flush logic to more aggressively detect and flush potentially modified HTTP session attributes (COH-327).
- Tuned the default session cache configuration file to reduce memory consumption when using the SplitHttSessionCollection.
- Made the Coherence*Web Installer more resilient to malformed web.xml files (COH-343).
- Added a new HttpSessionManager MBean for managing and monitoring Coherence*Web installations. See the JavaDoc for the HttpSessionManager class for additional details.
- Berkeley DB External Caching Scheme
Coherence 3.1 introduces support for Berkeley DB backed overflow maps. When enabled within a Coherence overflow scheme any data overflowing a cache from this scheme will be moved into an on-disk Berkeley DB binary store. This functionality requires the Berkeley DB Java Edition class libraries which may be obtained separately. See the documentation for the <bdb-store-manager> element in the Coherence Cache Configuration User Guide for additional details.
- CacheProvider Implementation for BEATM
Coherence 3.1 includes a CacheProvider implementation for the WebLogic
Portal P13N CacheProvider SPI. See Using
Coherence and BEA WebLogic Portal in the Coherence User Guide for additional
- CacheProvider and CacheStore Implementations for Hibernate
Coherence 3.1 includes several options for integrating with Hibernate including
a Hibernate CacheProvider SPI implementation and a CacheStore
implementation that uses Hibernate. See Using
Coherence and Hibernate in the Coherence User Guide for additional details.
- Overflow Caching Enhancements
Coherence overflow caching functionality has been dramatically expanded:
- OverflowMap now supports the full CacheMap API, including expiry.
- Support for re-entrancy was added.
- Support for caching misses was added.
- Concurrency (and thus multi-threaded throughput) has been improved.
- A number of optimizations have been added for high-latency disk stores.
- The memory footprint of the overflow feature has been reduced in general, and a new overflow option has been added to support overflowing very large data sets to disk without using any additional memory.
See the documentation for the <overflow-scheme> element in the Coherence Cache Configuration User Guide for additional details.
- InvocableMap API
Coherence 3.1 introduces a new InvocableMap interface that is fully supported by all Coherence NamedCache implementations. An InvocableMap is a Map against which both entry-targeted processing and aggregating operations can be invoked. While a traditional model for working with a Map is to have an operation access and mutate the Map directly through its API, the InvocableMap allows that model of operation to be inverted such that the operations against the Map contents are executed by (and thus within the localized context of) a Map.
Use of the InvocableMap API is particularly useful in a distributed environment, because it enables the processing to be moved to the location at which the entries-to-be-processed are being managed, thus providing efficiency by localization of processing. Furthermore, the Partitioned Cache implementation of InvocableMap enables processing to be performed in parallel across all storage-enabled cluster nodes.
Several useful aggregator and processor implementations are also included:
- CommonJ WorkManager implementation
Coherence 3.1 includes an implementation of commonj.work.WorkManager interface based on the "The Timer and Work Manager for Application Servers" specification, which is a foundation of JSR 237: Work Manager for Application Servers. See the JavaDoc for the WorkManager class for additional details.
- Continuous Query Cache
Coherence 3.1 provides a feature that combines a query result with a continuous stream of related events that maintain the query result in a real-time fashion. This capability is called Continuous Query. See the JavaDoc for the ContinuousQueryCache class for additional details.
- Configuration Enhancements
- Tuned the default cluster protocol settings to increase network throughput. See this forum thread for additional details.
- Added the ability to perform a graceful cluster shutdown via the Coherence shutdown hook. See the documentation for the <shutdown-listener> configuration element in the Coherence Operational Configuration User Guide for additional details.
- Added the ability to name a cluster. This name is used to identify and prevent unintentional cluster address collisions.
- Added logic to identify and prevent unintentional address collision between WKA and non-WKA clusters.
- Added debug-level log messages that show the location of the various configuration files used by Coherence.
- Added the ability to implement and configure a custom LocalCache eviction policy. See the documentation for the <eviction-policy> element in the Coherence Cache Configuration User Guide for additional details.
- Added the ability to implement and configure a custom LocalCache unit calculation algorithm. Two default implementations are included. The FIXED unit calculator assigns an equal weight of 1 to all cached objects. The BINARY unit calculator assigns a Binary object a weight equal to the number of bytes of memory required to cache the object and is useful for limiting the size of a Binary backing map based upon the actual amount of memory consumed by the map. See the documentation for the <unit-calculator> element in the Coherence Cache Configuration User Guide for additional details.
- Other Enhancements
- Resolved a synchronization issue with the readUTF() method on the Binary class that could potentially cause an exception to be thrown on a client thread during heavy concurrent cache access (COH-359) . See this forum thread for additional details.
- Made the partitioned cache service more resilient to CacheStore or custom backing map failures during putAll() or removeAll() operations. See this forum thread for additional details (COH-323).
- Improved parallel query and keySet() performance for partitioned caches during heavy concurrent use.
- Increased aggressiveness of the partitioned cache re-distribution algorithm during servers fail-back.
- Optimized the InvocationService.execute() implementation for "fire and forget" use cases.
- Added full expiry support to external backing map implementations.
- Fixed an issue where entry-specific expiry information would be reset to the default expiry during failover (COH-276).
- Prevented the replicated cache from raising a ConcurrentModificationException under heavy load (COH-384). See this forum thread for additional details.
- Added unicast test utility for network testing.
- Improved Javadoc readability.
- Other performance improvements and bug fixes.