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.
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.
New features, improvements, and bug fixes have been added to these Oracle Coherence for Java components:
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.
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.
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.
Fixed an issue that could lead to version dependency becoming orphaned if commit/rollback fails after updating entries but before releasing dependency.
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.
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.
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.
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.
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.
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.
Removed validation logic in POF date deserialization that limited the year range to between 1582 and 2199.
This section describes bugs that are know at the time of release.
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:
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;
}
}
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(), " ");
} }
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>
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>