Keith Wall created QPID-7623:
--------------------------------
Summary: "SEVERE: RuntimeException while executing runnable"
reported by Guava to stderr if a state transition method throws exception
Key: QPID-7623
URL: https://issues.apache.org/jira/browse/QPID-7623
Project: Qpid
Issue Type: Bug
Components: Java Broker
Affects Versions: qpid-java-6.1, qpid-java-6.0
Reporter: Keith Wall
Priority: Minor
Fix For: qpid-java-7.0
As reported in QPID-7311, a state change that throws an exception, may cause a
warning like the following to be reported to stderr:
{noformat}
SEVERE: RuntimeException while executing runnable
com.google.common.util.concurrent.Futures$6@5b83d60e with executor
org.apache.qpid.server.configuration.updater.TaskExecutorImpl@2
c5a6012
org.apache.qpid.server.configuration.IllegalConfigurationException: Unable to
get certificate for 'test' from 'https://google.com'
at
org.apache.qpid.server.security.SiteSpecificTrustStoreImpl$2.call(SiteSpecificTrustStoreImpl.java:339)
at
org.apache.qpid.server.security.SiteSpecificTrustStoreImpl$2.call(SiteSpecificTrustStoreImpl.java:302)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at
java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:625)
at
org.apache.qpid.server.security.SiteSpecificTrustStoreImpl$2.call(SiteSpecificTrustStoreImpl.java:316)
... 5 more
{noformat}
The problem is a general one rather than being specific to SSTS.
The create exception handler involved code at lines
AbstractConfiguredObject.java:1083 unconditional re-raises the exception. The
exception then goes uncaught and is logged by Guava at line
ExecutionList.java:160. Guava's behaviour here is documented in
ListenableFuture.java:103.
Whilst ugly, this actually causes no functional harm. The child creation
error is still reported to the end user, and the child is still deregistered
from the parent. However, the appearance of the stack on stderr will cause
alarm to end-users.
The cause of the problem is AbstractConfiguredObject.java:1083. The
{{FutureCallback#onFailure}} impl should not be rethrowing the exception.
Setting returnValue's exception is sufficient.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]