Uploaded image for project: 'Bookkeeper'
  1. Bookkeeper
  2. BOOKKEEPER-671

PerChannelBookieClient#channelDisconnected can error out other channel's requests

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.2.1
    • None
    • bookkeeper-client
    • None

    Description

      Consider the following.

      1. Client calls connect() [state=CONNECTING]
      2. Client calls disconnect() before connect finishes [state=DISCONNECTED]
      3. Client calls connect() [state=CONNECTING]
      4. Connect completes, client writes request [state=CONNECTED]
      5. 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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ikelly Ivan Kelly
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: