1 Technical Changes and Enhancements

This chapter describes the changes and enhancements made to the Oracle Coherence product for the 3.6.1 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.

https://support.oracle.com

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 Oracle Coherence for Java 3.6.1

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

1.2.1 Management and Monitoring Enhancements and Fixes

  • Fixed an issue where concurrent management invocable execution and CacheFactory.shutdown() caused a deadlock.

  • Fixed an issue where MBeans registered by SafeCluster were not unregistered when cluster stopped abnormally.

1.2.2 Partitioned Cache Enhancements and Fixes

  • Fixed an issue that can cause a filter-based invoke() method calls to hang when the filter throws an exception.

  • Fixed issue causing endless "Repeating *Request due to the re-distribution of PartitionSet{...}" messages during concurrent destroyCache() method calls.

  • Fixed an issue causing indices built by the IndexAwareExtractor method to not be transferred correctly during failback.

  • Fixed a bug that could result in indexes (and keySet iterators) becoming corrupt or missing entries under heavy eviction.

  • Fixed a bug that could cause spurious "null" aggregation results during a cache server shutdown.

  • Fixed an issue that could result in storage-disabled clients being unable to communicate with storage nodes.

  • Fixed an issue on sorted indices that could cause a NullPointerException during filter-based queries.

1.2.3 TCMP Enhancements and Fixes

  • Fixed an issue that caused well known address (WKA) clusters to combine or panic due to socket address re-use.

  • Increased the ping-timeout used by the IPMonitor class to accommodate some Windows environments.

  • The IpMonitor senior member ping on startup is now bypassed for co-located members, to accommodate some Windows environments.

  • Fixed an issue to ensure that default address selection is deterministic in multi-network interface card (NIC) environments.

1.2.4 Coherence*Extend Framework Enhancements and Fixes

  • Fixed an issue where abnormal termination of a cache service could cause Coherence*Extend clients to lose events.

  • Hardened the ProxyService class against exceptions thrown by custom proxy implementations.

  • Resolved an intermittent issue where a new TCMP/SSL connection could trigger a BufferOverflowException.

  • Fixed an issue that prevented clients from transparently reconnecting after being rejected by a proxy server.

  • Provided a more detailed exception message when a client fails to connect to a proxy server.

1.2.5 Coherence*Web Enhancements and Fixes

  • Fixed an issue causing the LimitFilter class to return an inconsistent set of results.

  • Coherence Web now supports IBM WebSphere 7.

  • Fixed the issue preventing session information for each session from being displayed in session tab.

  • The Session.isNew() method is not consistent with other session persistence types in WebLogic Server.

1.2.6 Management Framework Enhancements and Fixes

  • Fixed an issue that could lead to version dependency becoming orphaned if commit/rollback fails after updating entries but before releasing dependency.

1.2.7 Serialization Framework Enhancements and Fixes

  • Removed validation logic in Portable Object Format (POF) date deserialization that limited the year range to between 1582 and 2199.

  • Fixed the issue where AbstractInvocable result was not required to implement the Serializable interface.

  • Fixed the issue where CompositeKey had no entry in the coherence-pof-config.xml file.

1.2.8 Other Enhancements and Fixes

  • Fixed an issue with Coherence Query Language's backup and restore commands so that it now supports objects in Portable Object Format (POF).

  • Fixed race condition that could result in spurious wrong results appearing in a ContinuousQueryCache call.

  • Fixed an issue that results in NPE during cluster start up if the system parameter port-auto-adjust=false and the unicast listener port is unavailable.

  • Reduced contention on BackingMapManagerContext.getBackingMap() method.

  • Fixed an issue that could result in NullPointerException after Guardian recovery or termination.

  • Fixed issue causing the maintenance of sorted indices to be extremely slow.

  • Fixed an issue causing service-level Guardian configuration to be ignored.

  • Corrected the listener element definition in cache-config.dtd.

  • Fixed an issue that caused aggressive write-behind operations to miss one entry per batch.

1.3 Oracle Coherence for .NET 3.6.1

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

  • Fixed an issue where port PofExtractor failed to extract values from uniform collections to C++ and .NET.

  • Provided a more detailed exception message when a client fails to connect to a proxy server.

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

  • Fixed an issue that prevented clients from transparently reconnecting after being rejected by a proxy server.

  • Fixed an issue that prevented the EmbeddedResource class from being able to load assemblies installed in the GAC.

  • Optimized the PofHelper.ResizeArray() implementation.

  • Fixed an issue in CacheFactory that could cause an exception during concurrent EnsureLogger() calls.

  • Fixed an issue in the CoherenceSessionStore that caused an exception when accessing an expired session.

  • Added a new CompositeKey utility class.

  • Fixed an issue in PofStreamReader that prevented reading a uniform POF collection into a generic collection object.

  • Removed validation logic in POF date deserialization that limited the year range to between 1582 and 2199.

1.4 Oracle Coherence for C++ 3.6.1

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

  • Provided a more detailed exception message when a client fails to connect to a proxy server.

  • Added a new AbstractEvolvable base class for simplifying the creation of evolvable classes.

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

  • Fixed an issue that prevented the Managed<T> class from wrapping types with custom memory allocators.

  • Fixed an issue that prevented clients from transparently reconnecting after being rejected by a proxy server.

  • Fixed an issue that caused a segmentation fault (segfault) when creating a string from invalid UTF-8 input.

  • Fixed an issue that caused the truncation of a non-ASCII string when converted to a std::string.

  • Fixed incorrect POF mappings for the RequestTimeoutException and ConnectionException classes.

  • Added a new CompositeKey utility class.

  • Removed validation logic in POF date deserialization that limited the year range to between 1582 and 2199.

1.5 Known Problems and Workarounds

This section describes bugs that are know at the time of release.

1.5.1 Sharing Coherence*Web Sessions Between WebLogic Server and Other Application Servers

If you have a cluster with WebLogic Server nodes and nodes running other types of application servers, such as Apache Tomcat Server, then the session cookie created by WebLogic Server will not be decoded correctly by Coherence*Web on the other servers. This is because WebLogic Server adds a session affinity suffix to the cookie which is not part of the session ID stored in Coherence*Web. If the other application server type receives a request for the cookie, it will not be found and a new session cookie will be created.

To work around this problem, you must remove the session affinity suffix from the session ID when it is processed by the other application server.

For example, to allow Tomcat Server to remove the session affinity suffix:

  1. Create a subclass of the com.tangosol.coherence.servlet.tomcat55.CookieHelper class.

    For example, name the subclass CustomCookieHelper. Implement the decodeCookie and decodeUrl methods to remove the session affinity information from the session cookie, for example:

    package com.example;
     
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import com.tangosol.coherence.servlet.SessionHelper;
     
    public class CustomCookieHelper extends SessionHelper {
         protected static final char WLS_JVM_ID_SUFFIX = '!';
     
       public CustomCookieHelper(Factory factory, ServletContext ctx){
           super(factory, ctx);
       }
     
       public String decodeCookie(HttpServletRequest req){
           String sSessionId = super.decodeCookie(req);
           if (sSessionId != null){
               int ofSeparator = sSessionId.indexOf(WLS_JVM_ID_SUFFIX);
               if (ofSeparator >= 0){
                   sSessionId = sSessionId.substring(0, ofSeparator);
               }
           }
           return sSessionId;
       }
    }
    
  2. Create a subclass of the com.tangosol.coherence.servlet.tomcat55.DefaultFactory. For example, name the subclass CustomDefaultFactory. Overload the instantiateSessionHelper or the setSessionHelper method to use the CustomDefaultFactory class, for example:

    package com.example;
     
    import javax.servlet.ServletContext;
     
    import com.tangosol.coherence.servlet.SessionHelper;
     
    public class CustomDefaultFactory extends com.tangosol.coherence.servlet.api25.DefaultFactory {
         public SessionHelper instantiateSessionHelper(ServletContext ctx){
           CustomCookieHelper helper = new CustomCookieHelper(this, ctx);
           setServletContext(ctx);
           setSessionHelper(helper);
           return helper;
       }
     
       public String toString() {
           return "CustomDefaultFactory (2.5)\n" + indentString(getDescription(), "  ");
       }   }
     
    
  3. Configure the Web application on the Tomcat Server to use the CustomDefaultFactory. In the Web application's web.xml file, set the coherence-factory-class context parameter to CustomDefaultFactory, for example:

    <context-param>
       <param-name>coherence-factory-class</param-name>
       <param-value>com.tangosol.coherence.servlet.tomcat55.CustomDefaultFactory</param-value>
    </context-param>
    
  4. If you want to configure the session to share data across the applications, you must also configure the coherence-scopecontroller-class context parameter to use global scope, for example:

    <context-param>
       <param-name>coherence-scopecontroller-class</param-name>
       <param-value>com.tangosol.coherence.servlet.AbstractHttpSessionCollection$GlobalScopeController</param-value>
    </context-param>