dlmarion commented on issue #5393:
URL: https://github.com/apache/accumulo/issues/5393#issuecomment-2713830628

   > Looking through the code, I only saw the check to cancel a compaction done 
after the iterator used to read input files returned a key/value. If that 
iterator is filtering and never returns anything, then that is one possible 
thing that could hold it up. Maybe the compaction thread also needs to be 
interrupted, we made some changes like that for the scan threads where they set 
an atomic boolean to cancel and try to interrupt the thread.
   
   Looking at the code below, the `CompactionEnv` is passed to the 
`FileCompactor` and checked as you said above. But there is also a background 
thread that will interrupt the `FileCompactor` if the compaction is no longer 
enabled.
   
   
https://github.com/apache/accumulo/blob/9037d6112aced7c312a6cad31299809d83ae16e8/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableUtils.java#L557-L585
   
   > I modified the test in https://github.com/apache/accumulo/pull/5395 to 
sleep for 300 seconds instead of 3 seconds in the slow iterator to simulate an 
iterator filtering and not returning data. With that change the test times out 
and fails.
   
   I'm wondering if you should set the Manager goal state to SAFE_MODE in the 
IT to simulate a shutdown and unloading of user tablets. Also, I'm seeing in 
the `SlowIterator` that it's swallowing the `InterruptedException`, but setting 
the Thread's interrupted state, then calling next or seek. We are assuming that 
some other code is checking the Thread state, but it doesn't look like it's 
happening in this case. `FileCompactor.call` handles an 
`IterationInterruptedException`, maybe we should be throwing it in more places. 
From what I can tell looking at `TabletIteratorEnv.getTopLevelIterator`, the 
`MultiIterator` is the top-level iterator and it's not checking the Thread 
interrupt state.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@accumulo.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to