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

Do not collect deleted KVs when they are still in use by a scanner.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.94.0, 0.95.0
    • None
    • None
    • Reviewed

    Description

      I noticed this because TestAtomicOperation.testMultiRowMutationMultiThreads fails rarely.
      The solution is similar to HBASE-2856, where expired KVs are not collected when in use by a scanner.


      What I pieced together so far is that it is the scanning side that has problems sometimes.

      Every time I see a assertion failure in the log I see this before:

      2012-03-12 21:48:49,523 DEBUG [Thread-211] regionserver.StoreScanner(499): Storescanner.peek() is changed where before = rowB/colfamily11:qual1/75366/Put/vlen=6,and after = rowB/colfamily11:qual1/75203/DeleteColumn/vlen=0

      The order of if the Put and Delete is sometimes reversed.

      The test threads should always see exactly one KV, if the "before" was the Put the thread see 0 KVs, if the "before" was the Delete the threads see 2 KVs.

      This debug message comes from StoreScanner to checkReseek. It seems we still some consistency issue with scanning sometimes

      Attachments

        1. 5569.txt
          0.7 kB
          Lars Hofhansl
        2. 5569-v2.txt
          3 kB
          Lars Hofhansl
        3. 5569-v3.txt
          5 kB
          Lars Hofhansl
        4. 5569-v4.txt
          6 kB
          Lars Hofhansl
        5. TestAtomicOperation-output.trunk_120313.rar
          19 kB
          Nicolas Liochon

        Issue Links

          Activity

            People

              larsh Lars Hofhansl
              larsh Lars Hofhansl
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: