Java 11 Groundplex Upgrade: Clarify what reapply customizations means

Hi,

The SnapLogic documentation on upgrading groundplexes to Java 11 (https://docs-snaplogic.atlassian.net/wiki/spaces/SD/pages/850067457/Upgrading+Your+Groundplex+to+Java+11) mentions this:

For existing custom Groundplex instances, you must reapply the customizations after upgrading to Java 11.

  1. Does this mean that any snap packs that were installed must be reinstalled after upgrading to Java 11?

We attempted to upgrade some of our internal groundplexes to Java 11 and found that some of our pipelines stopped working: based on the stack traces that we are seeing it appears that a custom snap that we had installed stopped working and so the guess was that the Snap Pack needs to be reinstalled. The stack trace is included at the bottom of the message.

  1. If snap packs must be reinstalled after the Java 11 upgrade, is there a way of being able to this efficiently when multiple groundplexes must be upgraded?

The stack traces are as shown below:

com.snaplogic.cc.SnapCcException: Class definition not found for Snap[com.destinyweb.srs.DestinyOneAccount]: javax/xml/soap/SOAPException
at com.snaplogic.cc.shared.ClassRegistry.createClassById(ClassRegistry.java:264)
at com.snaplogic.cc.shared.ClassRegistryManager.createAccountClassFor(ClassRegistryManager.java:162)
at com.snaplogic.cc.shared.ClassRegistryManager.createAccountHolderFor(ClassRegistryManager.java:147)
at com.snaplogic.cc.snap.common.SnapManagerImpl.initialize(SnapManagerImpl.java:543)
at com.snaplogic.cc.service.SnapServiceImpl.initialize(SnapServiceImpl.java:281)
at com.snaplogic.cc.pipeline.visitor.InitializationVisitor.operateOn(InitializationVisitor.java:97)
at com.snaplogic.jpipe.core.graph.TrackingVisitor.visit(TrackingVisitor.java:37)
at com.snaplogic.jpipe.core.graph.SnapNode.accept(SnapNode.java:263)
at com.snaplogic.jpipe.core.graph.PipelineNode.perform(PipelineNode.java:363)
at com.snaplogic.cc.pipeline.PipelineManager.lambda$initialize$18(PipelineManager.java:3353)
at com.snaplogic.cc.util.CcUtil.time(CcUtil.java:58)
at com.snaplogic.cc.util.CcUtil.time(CcUtil.java:46)
at com.snaplogic.cc.pipeline.PipelineManager.initialize(PipelineManager.java:3353)
at com.snaplogic.cc.pipeline.PipelineManager.initializeForLocal(PipelineManager.java:3657)
at com.snaplogic.cc.pipeline.PipelineManager.initializeForLocal(PipelineManager.java:3597)
at com.snaplogic.cc.pipeline.PipelineManager.execute(PipelineManager.java:2215)
at com.snaplogic.snapi.pipeline.builder.PipelineExecutionBuilderImpl.execute(PipelineExecutionBuilderImpl.java:151)
at com.snaplogic.snaps.flow.PipeExec.executePipeline(PipeExec.java:1066)
at com.snaplogic.snaps.flow.PipeExec.process(PipeExec.java:839)
at com.snaplogic.snaps.flow.PipeExec.processSafely(PipeExec.java:596)
at com.snaplogic.snaps.flow.PipeExec.execute(PipeExec.java:499)
at com.snaplogic.cc.snap.common.SnapRunnableImpl.executeSnap(SnapRunnableImpl.java:818)
at com.snaplogic.cc.snap.common.SnapRunnableImpl.execute(SnapRunnableImpl.java:568)
at com.snaplogic.cc.snap.common.SnapRunnableImpl.doRun(SnapRunnableImpl.java:884)
at com.snaplogic.cc.snap.common.SnapRunnableImpl.access$000(SnapRunnableImpl.java:121)
at com.snaplogic.cc.snap.common.SnapRunnableImpl$1.run(SnapRunnableImpl.java:410)
at com.snaplogic.cc.snap.common.SnapRunnableImpl$1.run(SnapRunnableImpl.java:406)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/javax.security.auth.Subject.doAs(Subject.java:423)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
at com.snaplogic.cc.snap.common.SnapRunnableImpl.call(SnapRunnableImpl.java:405)
at com.snaplogic.cc.snap.common.SnapRunnableImpl.call(SnapRunnableImpl.java:121)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at com.snaplogic.cc.shared.ClassRegistry.createClassById(ClassRegistry.java:208)
... 37 more
Caused by: java.lang.ClassNotFoundException: javax.xml.soap.SOAPException
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:503)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:556)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at com.snaplogic.cc.SnapClassLoader.loadClass(SnapClassLoader.java:107)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:556)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 40 more
Suppressed: java.lang.ClassNotFoundException: javax.xml.soap.SOAPException
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
	at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:657)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:527)
	... 46 more

The reference to customizations meant that if the JRE 8 installation was modified in any way by the customer, those modifications would have to be applied again on the JRE 11 installation. Such modifications are not very common, the most common customization would be adding a custom endpoint certificate in the JRE SSL truststore cacerts.

No customer action is required for regular SnapPacks. They are downloaded on-demand as required.

If there is a custom snap which is having issues under JRE 11, it might have to be updated and rebuilt. There are some web services packaging related changes in Java 11. To fix that, add the below dependency in the pom.xml and rebuild the custom snap

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
        </exclusion>
    </exclusions>
</dependency>