3 Known Issues and Workarounds

Learn about the known issues at the time of release.

This chapter includes the following sections:

mvn Dependency Convergence Failures with Jackson

Issue

Resolving dependency convergence warnings with jackson modules when using coherence management, metrics and/or rest.

A developer using mvn enforcer plugin with dependencyConvergence rule will observe a number of jackson dependency warnings when using coherence-management, coherence-metrics and/or coherence-rest dependencies. There are discrepancies on jackson module versions to use between coherence modules, jackson and jersey modules.

Sample warning:

[Warning]
Dependency convergence error for
com.fasterxml.jackson.core:jackson-databind:2.9.9.2 paths to dependency are:
+-com.oracle.example-use:some-service:1.0-SNAPSHOT
+-com.oracle.coherence:coherence-rest:12.2.1-4-0-74841
+-com.fasterxml.jackson.core:jackson-databind:2.9.9.2
and
+-com.oracle.example-use:some-service:1.0-SNAPSHOT
+-com.fasterxml.jackson.core:jackson-databind:2.9.9
and
+-com.oracle.example-use:some-service:1.0-SNAPSHOT
+-com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.9
+-com.fasterxml.jackson.core:jackson-databind:2.9.9

Workaround

To resolve these discrepancies in versions, add the following to your mvn pom.xml <dependencies> element.

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.9.2</version>
      <exclusions>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
	
    <dependency>
      <groupId>com.fasterxml.jackson.jaxrs</groupId>
      <artifactId>jackson-jaxrs-base</artifactId>
      <version>2.9.9</version>
      <exclusions>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
	    </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
	    </exclusion>
      </exclusions>
    </dependency>
	
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-jaxb-annotations</artifactId>
      <version>2.9.9</version>
      <exclusions>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.glassfish.jersey.media</groupId>
      <artifactId>jersey-media-json-jackson</artifactId>
      <version>2.22.4</version>
      <exclusions>
	    <exclusion>
          <groupId>com.fasterxml.jackson.jaxrs</groupId>
          <artifactId>jackson-jaxrs-json-provider</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.jaxrs</groupId>
          <artifactId>jackson-jaxrs-base</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

Note:

This workaround must only be used for Coherence 12.2.1.4.0. This issue will be corrected in the next patch.

Changing the Partition Count When Using Active Persistence

Issue

The partition count cannot be changed when using active persistence. If you change a services partition count, then on restart of the services all active data is moved to the persistence trash and must be recovered after the original partition count is restored. Data that is persisted can only be recovered to services running with the same partition count.

Ensure that the partition count is not modified if active persistence is being used. If the partition count is changed, then a message similar to the following is displayed when the services are started:

<Warning> (thread=DistributedCache:DistributedCachePersistence, member=1):
Failed to recover partition 0 from SafeBerkeleyDBStore(...); partition-count
mismatch 501(persisted) != 277(service); reinstate persistent store from
trash once validation errors have been resolved

The message indicates that the change in the partition-count is not supported and the current active data has been copied to the trash directory.

Workaround

To recover the data:

  1. Shutdown the entire cluster.

  2. Remove the current active directory contents for the cluster and service affected on each cluster member.

  3. Copy (recursively) the contents of the trash directory for each service to the active directory.

  4. Restore the partition count to the original value.

  5. Restart the cluster.

Impact of Generics

When using generics with Federated Caching and Persistence, you must:

  • Ensure that federated caches across a federation are configured to use the same types as no runtime-type-checking is performed between clusters in a federation.

  • Ensure that recoverable caches are consistently configured to use the same types during restarts as no runtime-type-checking is performed.

Support for JVisualVM Plugin

The Coherence JvisualVM Plugin is supported for Coherence 3.7.1.X and above. Using the plugin to connect to older clusters is not supported.

Disable Inlining in Java Versions Greater than 8

When using Java versions greater than Java 8 (for examle, Java 11), one of the directives below should be provided as a JVM Option (on the command line). This step is to avoid a segmentation fault (SIGSEGV) that has been observed due to a compiler bug that is being worked on by the Java team.

Note:

Release 12.2.1.4 does not certify against versions above Java 8.
  • -XX:CompileCommand=exclude,com/tangosol/coherence/component/util/daemon/queueProcessor/service/Grid.onInterval
  • -XX:-Inline

The first option will exclude the problematic method from being inlined by the compiler while the latter will disable inlining altogether.