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

DFS errors during a read operation (get/scan), may cause write outliers

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Not A Problem
    • 0.89-fb, 0.95.2
    • 0.89-fb, 2.0.0
    • None
    • None

    Description

      This is a similar issue as discussed in HBASE-8228

      1) A scanner holds the Store.ReadLock() while opening the store files ... encounters errors. Thus, takes a long time to finish.

      2) A flush is completed, in the mean while. It needs the write lock to commit(), and update scanners. Hence ends up waiting.

      3+) All Puts (and also Gets) to the CF, which will need a read lock, will have to wait for 1) and 2) to complete. Thus blocking updates to the system for the DFS timeout.

      Fix:
      Open Store files outside the read lock. getScanners() already tries to do this optimisation. However, Store.getScanner() which calls this functions through the StoreScanner constructor, redundantly tries to grab the readLock. Causing the readLock to be held while the storeFiles are being opened, and seeked.

      We should get rid of the readLock() in Store.getScanner(). This is not required. The constructor for StoreScanner calls getScanners(xxx, xxx, xxx). This has the required locking already.

      Attachments

        1. 8942.094.txt
          1 kB
          Michael Stack
        2. 8942.096.txt
          1 kB
          Michael Stack
        3. HBase-8942.txt
          1 kB
          Liang Xie

        Activity

          People

            Unassigned Unassigned
            amitanand Amitanand Aiyer
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: