Ivan Kelly created BOOKKEEPER-671:
-------------------------------------
Summary: PerChannelBookieClient#channelDisconnected can error out
other channel's requests
Key: BOOKKEEPER-671
URL: https://issues.apache.org/jira/browse/BOOKKEEPER-671
Project: Bookkeeper
Issue Type: Bug
Affects Versions: 4.2.1
Reporter: Ivan Kelly
Fix For: 4.3.0
Consider the following.
# Client calls connect() [state=CONNECTING]
# Client calls disconnect() before connect finishes [state=DISCONNECTED]
# Client calls connect() [state=CONNECTING]
# Connect completes, client writes request [state=CONNECTED]
# channelDisconnected() from previous disconnect() called
The #channelDisconnected() call will then error out the write request. This is
due to the fact that the outstanding request map belongs to the
PerChannelBookieClient, rather than to the channel, even though they should
belong to the socket on which they were sent out on.
The solution would be to move the completions into the ChannelHandlerContext.
At the same time, we can get rid of the separate read and add lists. This
information can be in the keys. Perhaps this fix can be done as part of the
transaction id changes.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira