This is an automated email from the ASF dual-hosted git repository.

kturner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new 1f18f66841 fixes hang in SplitIT due to dead compaction (#6299)
1f18f66841 is described below

commit 1f18f6684120ae8b23188d5ed98a5e19cdacd241
Author: Keith Turner <[email protected]>
AuthorDate: Mon Apr 6 16:08:30 2026 -0700

    fixes hang in SplitIT due to dead compaction (#6299)
    
    A test got stuck waiting for a table to go offline because of a dead
    compaction. Made the dead compaction detector run more frequently to
    handle this.  Left some logging that was added to track this down.
---
 .../org/apache/accumulo/core/clientImpl/TableOperationsImpl.java    | 6 +++++-
 test/src/main/java/org/apache/accumulo/test/functional/SplitIT.java | 3 +++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index 5680fa4f21..b19a82c07f 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -1398,13 +1398,17 @@ public class TableOperationsImpl extends 
TableOperationsHelper {
 
           if ((expectedState == TableState.ONLINE
               && (availability == TabletAvailability.HOSTED
-                  || (availability == TabletAvailability.ONDEMAND) && 
tablet.getHostingRequested())
+                  || availability == TabletAvailability.ONDEMAND && 
tablet.getHostingRequested())
               && (loc == null || loc.getType() == LocationType.FUTURE))
               || (expectedState == TableState.OFFLINE
                   && (loc != null || opid != null || 
!externalCompactions.isEmpty()))) {
             if (continueRow == null) {
               continueRow = tablet.getExtent().toMetaRow();
             }
+            log.trace(
+                "Waiting on tablet {} exectedState:{} availability:{} 
hostingRequested:{} loc:{} opid:{} compactions:{}",
+                tablet.getExtent(), expectedState, availability, 
tablet.getHostingRequested(), loc,
+                opid, externalCompactions.keySet());
             waitFor++;
             lastRow = tablet.getExtent().toMetaRow();
 
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/SplitIT.java 
b/test/src/main/java/org/apache/accumulo/test/functional/SplitIT.java
index b22d10ed29..2acdc478cc 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/SplitIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/SplitIT.java
@@ -105,6 +105,9 @@ public class SplitIT extends AccumuloClusterHarness {
   public void configureMiniCluster(MiniAccumuloConfigImpl cfg, Configuration 
hadoopCoreSite) {
     cfg.setProperty(Property.TSERV_MAXMEM, "5K");
     cfg.setMemory(ServerType.TABLET_SERVER, 384, MemoryUnit.MEGABYTE);
+    // Splitting a tablet w/ a compaction can result in a dead compaction. Run 
the detector more
+    // frequently to clean them up as they could cause tests to hang.
+    
cfg.setProperty(Property.COMPACTION_COORDINATOR_DEAD_COMPACTOR_CHECK_INTERVAL, 
"5s");
   }
 
   private String tservMaxMem;

Reply via email to