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;