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

Prevent temporary deadlocks when, during a scan with write operations, the region splits

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 0.2.0
    • 0.2.1, 0.18.0
    • None
    • None

    Description

      HBASE-804 was not about the good problem, this one is. Anyone that iterates through the results of a scanner and that rewrites data back into the row at each iteration will hit a UnknownScannerException if a split occurs. See the stack in the referred jira. Timeline :

      Split occurs, acquires a write lock and waits for scanners to finish
      The scanner in the custom code iterates and writes data until the write is blocked by the lock
      deadlock
      The scanner timeouts thus the region splits but the USE will be thrown when next() is called

      Inside a Map, the task will simply be retried when the first one fails. Elsewhere, it becomes more complicated.

      Attachments

        1. lock-sequencing.jpg
          621 kB
          Jim Kellerman
        2. locking-compatibility.jpg
          127 kB
          Jim Kellerman
        3. hbase-810-v1.patch
          11 kB
          Jean-Daniel Cryans

        Activity

          People

            Unassigned Unassigned
            jdcryans Jean-Daniel Cryans
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: