Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-15221

HTableMultiplexer improvements (stale region locations and resource leaks)

Log workAgile BoardRank to TopRank to BottomAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • None
    • 1.2.0, 1.3.0, 1.1.4, 2.0.0
    • Client
    • None
    • Reviewed

    Description

      It looks like HTableMultiplexer has a couple of issues.

      Upon failing to send a Put to the appropriate RS, the Put is re-queued back into the system. Normally this is fine as such an exception is transient and the Put would eventually succeed. However, in the case where the Put was rejected because of a NotServingRegionException (e.g. split, balance, merge), the re-queuing of the Put will end up using the same cached HRegionLocation. This means that the Put will just be repeatedly sent back to the same RS over and over again, eventually being dropped on the floor. Need to invalidate the location cache (or make sure we refresh it) when we re-queue the Put.

      The internal ClusterConnection is also leaked. If a user creates many HTableMultiplexers, they'll eventually run into issues (memory, zk connections, etc) because they'll never get cleaned up. HTableMultiplexer needs a close method.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            elserj Josh Elser Assign to me
            elserj Josh Elser
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment