Accumulo
  1. Accumulo
  2. ACCUMULO-2119

Ensure compactions don't block table deletion

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: 1.5.0
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      I was ingesting some data into an Accumulo instance. My TServer's heap was a little small – that, combined with a bug in my code that was writing very large keys, caused a minor compaction to take a very long time.

      I ultimately wanted to just delete the table and re-run my code with the bug fixed, but, despite the table trying to be deleted, it looked like that table operation was blocked until the minc finished. It seems plausible that we could interrupt that compaction, delete that in-memory map, and unload the tablet so we can delete it.

      It would be nice to interrupt the minor compaction when the table is trying to be deleted so we can actually delete the table. I'm not positive if the same thing happens with a major compaction, but I would assume so (if you're compacting a large tablet, you could also have to wait order of 10's of minutes for your deletion to occur).

        Issue Links

          Activity

          Hide
          Keith Turner added a comment -

          I think major compactions will be interrupted in this case. o.a.a.tserver.Compactor.CompactionEnv.isCompactionEnabled() is called during the compaction loop. Major compactions create a CompactionEnv object that checks if the tablet is closing or if major compactions were disabled. Minor compactions always return true for isCompactionEnabled(), this could possibly be changed.

          Show
          Keith Turner added a comment - I think major compactions will be interrupted in this case. o.a.a.tserver.Compactor.CompactionEnv.isCompactionEnabled() is called during the compaction loop. Major compactions create a CompactionEnv object that checks if the tablet is closing or if major compactions were disabled. Minor compactions always return true for isCompactionEnabled(), this could possibly be changed.
          Hide
          Josh Elser added a comment -

          That makes sense. This was a bit of a non-standard case as normally MinC's shouldn't be taking that long to complete (it seems very plausible that minc interruption was ignored for that reason), but it would certainly be a nice thing to have so you don't have to restart everything to get the deletion to take effect.

          Show
          Josh Elser added a comment - That makes sense. This was a bit of a non-standard case as normally MinC's shouldn't be taking that long to complete (it seems very plausible that minc interruption was ignored for that reason), but it would certainly be a nice thing to have so you don't have to restart everything to get the deletion to take effect.

            People

            • Assignee:
              Unassigned
              Reporter:
              Josh Elser
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:

                Development