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

HRegion.internalObtainRowLock shouldn't wait forever

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 0.90.2
    • 0.90.4
    • None
    • None
    • Reviewed
    • Hide
      hbase.rowlock.wait.duration has been introduced which controls the duration in milliseconds waiting to acquire row lock.
      Default value is 30 seconds.
      If row lock cannot be acquired within this duration, no row lock would be obtained.
      Show
      hbase.rowlock.wait.duration has been introduced which controls the duration in milliseconds waiting to acquire row lock. Default value is 30 seconds. If row lock cannot be acquired within this duration, no row lock would be obtained.

    Description

      We just had a weird episode where one user was trying to insert a lot of data with overlapping keys into a single region (all of that is a separate problem), and the region server rapidly filled up all it's handlers + queues with those calls. Basically it wasn't deadlocked but almost.

      Worse, now that we have a 60 seconds socket timeout the clients were eventually getting the timeout and then retrying another call to that same region server.

      We should have a timeout on lockedRows.wait() in HRegion.internalObtainRowLock in order to survive this better.

      Attachments

        1. 3893-v2.txt
          4 kB
          Ted Yu
        2. 3893.txt
          4 kB
          Ted Yu

        Issue Links

          Activity

            People

              yuzhihong@gmail.com Ted Yu
              jdcryans Jean-Daniel Cryans
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: