[ 
https://issues.apache.org/jira/browse/AVRO-848?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Holger Hoffstätte updated AVRO-848:
-----------------------------------

    Description: 
Duringt testing for AVRO-842 I noticed that exceptions seem to be handled 
differently between the different transeiver types. To duplicate run my 
CrashTest example from AVRO-842 against the SaslSocketServer with the root 
logger set to INFO and the log.error() in the catch block disabled, and you'll 
see:

[07-01 10:58:22] INFO  org.apache.avro.ipc.SocketServer: starting /0.0.0.0
[07-01 10:58:22] INFO  h2o.avro.bugs.CrashTest$MyServiceImpl: doSomething()
[07-01 10:58:22] INFO  org.apache.avro.ipc.SocketServer: stopping /0.0.0.0
[07-01 10:58:22] INFO  org.apache.avro.ipc.SaslSocketTransceiver: closing to 
0.0.0.0/0.0.0.0:16221

There are no spurious exceptions bubbling up, as it should be: propagated or 
handled exceptions should never be logged as anything but DEBUG, and 
preferrably not at all.

However with the NettyTransceiver against the NettyServer and the root log 
level set to WARN (to silence INFO messages from Netty) we see the following:

java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at 
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:384)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:354)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:276)
        at 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        at 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
[07-01 11:01:53] WARN  org.apache.avro.ipc.NettyTransceiver: Unexpected 
exception from downstream.
java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
~[na:1.6.0_26]
        at 
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 
~[na:1.6.0_26]
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:384)
 ~[netty-3.2.4.Final.jar:na]
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:354)
 ~[netty-3.2.4.Final.jar:na]
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:276)
 ~[netty-3.2.4.Final.jar:na]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 [na:1.6.0_26]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
[na:1.6.0_26]
        at java.lang.Thread.run(Thread.java:662) [na:1.6.0_26]


Two things to note here:

- the first stack trace is not loggged but seems to be a System.err dump, maybe 
because the exception was uncaught (ending up being handled by the thread 
group?) or there is a printStackTrace() somewhere; I could not immediately find 
the cause when I had a quick look.

- the second exception is logged by NettyTransceiver and I'd argue that it 
should not be, since:
a) the SaslSocketTransceiver does not do it
b) WARN is misleading since the exception has been caught and will be propagated
c) the exception might be handled properly upstream with no reason to alert the 
logfile authorities ;)



  was:
Duringt testing for AVRO-842 I noticed that exceptions seem to be handled 
differently between the different transeiver types. To duplicate run my 
CrashTest example from AVRO-842 against the SaslSocketServer with the root 
logger set to INFO and the log.error() in the catch block disabled, and you'll 
see:

[07-01 10:58:22] INFO  org.apache.avro.ipc.SocketServer: starting /0.0.0.0
[07-01 10:58:22] INFO  h2o.avro.bugs.CrashTest$MyServiceImpl: doSomething()
[07-01 10:58:22] INFO  org.apache.avro.ipc.SocketServer: stopping /0.0.0.0
[07-01 10:58:22] INFO  org.apache.avro.ipc.SaslSocketTransceiver: closing to 
0.0.0.0/0.0.0.0:16221

There are no spurious exceptions bubbling up, as it should be: propagated or 
handled exceptions should never be logged as anything but DEBUG, and 
preferrably not at all.

However with the NettyTransceiver against the NettyServer and the root log 
level set to WARN (to silence INFO messages from Netty) we see the following:

java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at 
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:384)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:354)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:276)
        at 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        at 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
[07-01 11:01:53] WARN  org.apache.avro.ipc.NettyTransceiver: Unexpected 
exception from downstream.
java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
~[na:1.6.0_26]
        at 
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 
~[na:1.6.0_26]
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:384)
 ~[netty-3.2.4.Final.jar:na]
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:354)
 ~[netty-3.2.4.Final.jar:na]
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:276)
 ~[netty-3.2.4.Final.jar:na]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 [na:1.6.0_26]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
[na:1.6.0_26]
        at java.lang.Thread.run(Thread.java:662) [na:1.6.0_26]


Two things to note here:

- the first stack trace is not loggged but seems to be a System.err dump, maybe 
because the exception was uncaught (ending up being handled by the thread 
group?) or there is a printStackTrace() somewhere; I could not immediately find 
the cause when I had a quick look.

- the second exception is logged by NettyTransceiver and I'd argue that it 
should not be, since:
a) the SaslSocketServer does not do it
b) WARN is misleading since the exception has been caught and will be propagated
c) the exception might be handled properly upstream with no reason to alert the 
logfile authorities ;)




> Duplicate/confusing exception logging in NettyTransceiver
> ---------------------------------------------------------
>
>                 Key: AVRO-848
>                 URL: https://issues.apache.org/jira/browse/AVRO-848
>             Project: Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.5.1
>            Reporter: Holger Hoffstätte
>
> Duringt testing for AVRO-842 I noticed that exceptions seem to be handled 
> differently between the different transeiver types. To duplicate run my 
> CrashTest example from AVRO-842 against the SaslSocketServer with the root 
> logger set to INFO and the log.error() in the catch block disabled, and 
> you'll see:
> [07-01 10:58:22] INFO  org.apache.avro.ipc.SocketServer: starting /0.0.0.0
> [07-01 10:58:22] INFO  h2o.avro.bugs.CrashTest$MyServiceImpl: doSomething()
> [07-01 10:58:22] INFO  org.apache.avro.ipc.SocketServer: stopping /0.0.0.0
> [07-01 10:58:22] INFO  org.apache.avro.ipc.SaslSocketTransceiver: closing to 
> 0.0.0.0/0.0.0.0:16221
> There are no spurious exceptions bubbling up, as it should be: propagated or 
> handled exceptions should never be logged as anything but DEBUG, and 
> preferrably not at all.
> However with the NettyTransceiver against the NettyServer and the root log 
> level set to WARN (to silence INFO messages from Netty) we see the following:
> java.net.ConnectException: Connection refused: no further information
>       at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
>       at 
> sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
>       at 
> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:384)
>       at 
> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:354)
>       at 
> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:276)
>       at 
> org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
>       at 
> org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:662)
> [07-01 11:01:53] WARN  org.apache.avro.ipc.NettyTransceiver: Unexpected 
> exception from downstream.
> java.net.ConnectException: Connection refused: no further information
>       at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
> ~[na:1.6.0_26]
>       at 
> sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 
> ~[na:1.6.0_26]
>       at 
> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:384)
>  ~[netty-3.2.4.Final.jar:na]
>       at 
> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:354)
>  ~[netty-3.2.4.Final.jar:na]
>       at 
> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:276)
>  ~[netty-3.2.4.Final.jar:na]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>  [na:1.6.0_26]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>  [na:1.6.0_26]
>       at java.lang.Thread.run(Thread.java:662) [na:1.6.0_26]
> Two things to note here:
> - the first stack trace is not loggged but seems to be a System.err dump, 
> maybe because the exception was uncaught (ending up being handled by the 
> thread group?) or there is a printStackTrace() somewhere; I could not 
> immediately find the cause when I had a quick look.
> - the second exception is logged by NettyTransceiver and I'd argue that it 
> should not be, since:
> a) the SaslSocketTransceiver does not do it
> b) WARN is misleading since the exception has been caught and will be 
> propagated
> c) the exception might be handled properly upstream with no reason to alert 
> the logfile authorities ;)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to