[rmi] supressStackTraces does not suppress suppressed exception

Stuart Marks stuart.marks at oracle.com
Wed Dec 9 02:26:30 UTC 2015


Hi Bernd,

How very interesting. Thanks for pointing this out. You're right, 
suppressStackTraces should probably also suppress the stack traces for 
suppressed exceptions. (Kind of funny given the names, but the word "suppress" 
is being used in two different senses here.)

I've filed this bug to track the issue:

https://bugs.openjdk.java.net/browse/JDK-8144968

I'm not sure if there's anything to be done about SQLWarning though.

s'marks


On 12/8/15 5:37 PM, ecki at zusammenkunft.net wrote:
> Hello
>
> I noticed that RMI servers honor the sun.rmi.server.suppressStackTraces system property only for the
> `cause` member, but not for the suppressed exception array. This seems to be not documented (and is most
> likely not wanted?)
>
> It looks like it does also not handle SQLWarning#getNextWarning() chains, but I guess this is not expected.
>
> With suppressed remote stacks:
>
> java.lang.Exception: suppressor
> at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
> at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
> at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162)
> at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:217)
> at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:171)
> at com.sun.proxy.$Proxy0.test(Unknown Source)
> at testl.RMIS.main(RMIS.java:54)
> Suppressed: java.lang.RuntimeException: suppresed
> at testl.RMIS$RemoteObj.test(RMIS.java:33)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
> at sun.rmi.transport.Transport$1.run(Transport.java:200)
> at sun.rmi.transport.Transport$1.run(Transport.java:197)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
> at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$255(TCPTransport.java:683)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/1626415735.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
> 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)
>
> Greetings
> Bernd
>



More information about the core-libs-dev mailing list