[ 
https://issues.apache.org/jira/browse/BOOKKEEPER-688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13787716#comment-13787716
 ] 

Sijie Guo commented on BOOKKEEPER-688:
--------------------------------------

[~rakeshr] 

what do you really want to fix in your new patch? please clarify. is it just 
the test case problem or is it a real issue in PerChannelBookieClient? If not a 
real issue in PerChannelBookieClient, why you want to change the implementation 
for a problematic test case? 

I don't see there is any issue in the steps in #channelDisconnected.

1) closeChannel first, so the following requests sent to the closedChannel will 
be error out.
2) errorOutStandingEntries is to error out all those already outstanding 
entries sent to that close channel.
3) state set to DISCONNECTED, so following requests will do reconnect.

putting 3) after 1) & 3) which will reduce the possibility of error out the 
entries that sent to new connected channel by mistake. if do the reverse as 
your patch, it increase the possibility of such mistake. 

> NPE exception in PerChannelBookieClient
> ---------------------------------------
>
>                 Key: BOOKKEEPER-688
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-688
>             Project: Bookkeeper
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Rakesh R
>            Assignee: Rakesh R
>             Fix For: 4.3.0
>
>         Attachments: 
> 0001-BOOKKEEPER-688-NPE-exception-in-PerChannelBookieClie.patch, 
> 0002-BOOKKEEPER-688-NPE-exception-in-PerChannelBookieClie.patch, 
> BOOKKEEPER-688_branch_4_2.patch, BOOKKEEPER-688_trunk.patch, 
> PerChannelBookieClient-ConnectionState-diagram.png
>
>
> NPE exception in PerChannelBookieClient:
> {code}
> 2013-10-04 11:56:34,526 - INFO  - 
> [NIOServerFactory-15099:NIOServerFactory$Cnxn@246] - Peer closed connection. 
> rc=-1 java.nio.channels.SocketChannel[connected local=/10.18.170.130:15099 
> remote=/10.18.170.130:53945]
> 2013-10-04 11:56:34,526 - INFO  - [Thread-93:PerChannelBookieClient@493] - 
> Disconnected from bookie channel [id: 0x006287d3, /10.18.170.130:53945 :> 
> /10.18.170.130:15099]
> 2013-10-04 11:56:34,526 - INFO  - [New I/O client worker 
> #90-3:PerChannelBookieClient$1@137] - Successfully connected to bookie: [id: 
> 0x01964fe8, /10.18.170.130:53951 => /10.18.170.130:15100]
> 2013-10-04 11:56:34,542 - INFO  - 
> [NIOServerFactory-15100:NIOServerFactory$Cnxn@246] - Peer closed connection. 
> rc=-1 java.nio.channels.SocketChannel[connected local=/10.18.170.130:15100 
> remote=/10.18.170.130:53951]
> 2013-10-04 11:56:34,542 - INFO  - [Thread-93:PerChannelBookieClient@493] - 
> Disconnected from bookie channel [id: 0x01964fe8, /10.18.170.130:53951 :> 
> /10.18.170.130:15100]
> 2013-10-04 11:56:34,542 - WARN  - [New I/O client worker 
> #90-3:PerChannelBookieClient@274] - Add entry operation failed
> java.lang.NullPointerException
>       at 
> org.apache.bookkeeper.proto.PerChannelBookieClient.addEntry(PerChannelBookieClient.java:258)
>       at 
> org.apache.bookkeeper.proto.BookieClient$2.operationComplete(BookieClient.java:138)
>       at 
> org.apache.bookkeeper.proto.BookieClient$2.operationComplete(BookieClient.java:1)
>       at 
> org.apache.bookkeeper.proto.PerChannelBookieClient$1.operationComplete(PerChannelBookieClient.java:173)
>       at 
> org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
>       at 
> org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:372)
>       at 
> org.jboss.netty.channel.DefaultChannelFuture.setSuccess(DefaultChannelFuture.java:316)
>       at 
> org.jboss.netty.channel.socket.nio.NioWorker$RegisterTask.run(NioWorker.java:767)
>       at 
> org.jboss.netty.channel.socket.nio.NioWorker.processRegisterTaskQueue(NioWorker.java:256)
>       at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:198)
>       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:885)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>       at java.lang.Thread.run(Thread.java:619)
> 4 Oct, 2013 11:56:34 AM org.jboss.netty.channel.DefaultChannelFuture
> WARNING: An exception was thrown by ChannelFutureListener.
> {code}
> Here the operation which is performed is
> step-1 addEntry asynchronously
> step-2 Immediately after adding the entry, close the bookie client



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to