Launching Confluence 6.x with [ catalina jpda start ] crashes Confluence

I’m a little surprised that I cannot launch Confluence 6.1.x with “catalina.sh jpda start”, to enable remote socket debugging.

Anyone else? (I’d search JAC but its currently down)

I get a few startup excetpions in the log:

2017-04-20 09:15:26,975 INFO [localhost-startStop-1] [com.atlassian.confluence.lifecycle] init Confluence is ready to serve
2017-04-20 09:15:27,914 INFO [localhost-startStop-3] [atlassian.plugin.manager.DefaultPluginManager] shutdown Preparing to shut down the plugin system
2017-04-20 09:15:27,921 INFO [localhost-startStop-3] [atlassian.plugin.manager.DefaultPluginManager] shutdown Shutting down the plugin system
2017-04-20 09:15:29,126 WARN [Gemini Blueprint context shutdown thread1] [expose.jmx.schedule.JmxInstrumentSchedulerImpl] destroy atlassian-instrumentation-jmx expose scheduler stopped.
2017-04-20 09:15:31,104 ERROR [AtlassianEvent::CustomizableThreadFactory-1] [atlassian.confluence.event.ConfluenceEventDispatcher] run There was an exception thrown trying to dispatch event [com.atlassian.confluence.event.events.plugin.AsyncPluginFrameworkStartedEvent[source=com.atlassian.confluence.plugin.ConfluencePluginManager@44c7019]] from the invoker [com.atlassian.confluence.event.ConfluenceListenerHandlersConfiguration$TimingListenerHandler$1$1@28d3ad3b]
java.lang.RuntimeException: org/apache/shindig/gadgets/http/HttpResponseBuilder
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:41)
	at com.atlassian.confluence.event.ConfluenceListenerHandlersConfiguration$TimingListenerHandler$1$1.invoke(ConfluenceListenerHandlersConfiguration.java:69)
	at com.atlassian.confluence.event.ConfluenceEventDispatcher$VCacheRequestContextRunnableFactory$1.lambda$run$0(ConfluenceEventDispatcher.java:93)
	at com.atlassian.confluence.vcache.VCacheRequestContextOperations.lambda$doInRequestContext$0(VCacheRequestContextOperations.java:50)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:87)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:71)
	at com.atlassian.confluence.vcache.VCacheRequestContextOperations.doInRequestContext(VCacheRequestContextOperations.java:49)
	at com.atlassian.confluence.event.ConfluenceEventDispatcher$VCacheRequestContextRunnableFactory$1.run(ConfluenceEventDispatcher.java:93)
	at com.atlassian.confluence.event.ConfluenceEventDispatcher$1.run(ConfluenceEventDispatcher.java:61)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/apache/shindig/gadgets/http/HttpResponseBuilder

Manually modifying catalina.sh to inject the JPDA flags appears to work:

##next line added
CATALINA_OPTS="-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8765 $CATALINA_OPTS"

if [ "$1" = "debug" ] ; then

making the env:

type or paste code hereandy     16449  3102 99 09:28 pts/18   00:00:19 /usr/local/apps/jdk180/bin/java -Djava.util.logging.config.file=/usr/local/apps/atlassian/atlassian-confluence-6.1.0/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8765 -Dconfluence.context.path= -Dorg.apache.tomcat.websocket.DEFAULT_BUFFER_SIZE=32768 -Dsynchrony.enable.xhr.fallback=true -Xms1024m -Xmx1024m -XX:+UseG1GC -Datlassian.plugins.enable.wait=300 -Djava.awt.headless=true -XX:G1ReservePercent=20 -Xloggc:/usr/local/apps/atlassian/atlassian-confluence-6.1.0/logs/gc-2017-04-20_09-28-01.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=2M -XX:-PrintGCDetails -XX:+PrintGCDateStamps -XX:-PrintTenuringDistribution -Djava.endorsed.dirs=/usr/local/apps/atlassian/atlassian-confluence-6.1.0/endorsed -classpath /usr/local/apps/atlassian/atlassian-confluence-6.1.0/bin/bootstrap.jar:/usr/local/apps/atlassian/atlassian-confluence-6.1.0/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apps/atlassian/atlassian-confluence-6.1.0 -Dcatalina.home=/usr/local/apps/atlassian/atlassian-confluence-6.1.0 -Djava.io.tmpdir=/usr/local/apps/atlassian/atlassian-confluence-6.1.0/temp org.apache.catalina.startup.Bootstrap start

From running with “jpda start” I see the env injects a slightly different format of JPDA argument:

andy     17762  3102 99 09:33 pts/18   00:00:30 /usr/local/apps/jdk180/bin/java -Djava.util.logging.config.file=/usr/local/apps/atlassian/atlassian-confluence-6.1.0/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n -Dconfluence.context.path= -Dorg.apache.tomcat.websocket.DEFAULT_BUFFER_SIZE=32768 -Dsynchrony.enable.xhr.fallback=true -Xms1024m -Xmx1024m -XX:+UseG1GC -Datlassian.plugins.enable.wait=300 -Djava.awt.headless=true -XX:G1ReservePercent=20 -Xloggc:/usr/local/apps/atlassian/atlassian-confluence-6.1.0/logs/gc-2017-04-20_09-33-16.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=2M -XX:-PrintGCDetails -XX:+PrintGCDateStamps -XX:-PrintTenuringDistribution -Djava.endorsed.dirs=/usr/local/apps/atlassian/atlassian-confluence-6.1.0/endorsed -classpath /usr/local/apps/atlassian/atlassian-confluence-6.1.0/bin/bootstrap.jar:/usr/local/apps/atlassian/atlassian-confluence-6.1.0/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apps/atlassian/atlassian-confluence-6.1.0 -Dcatalina.home=/usr/local/apps/atlassian/atlassian-confluence-6.1.0 -Djava.io.tmpdir=/usr/local/apps/atlassian/atlassian-confluence-6.1.0/temp org.apache.catalina.startup.Bootstrap start

It appears the shipped version of tomcat is using a combination which breaks Confluence somehow:

-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8765 (mine, works)

-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n (jpda start, fails)

1 Like

This, still, with Confluence 6.3.1.

still, confluence 7.8.x

catalina.sh:

  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8000"
  fi