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 26f316d188 Removes deprecated minor compaction idle time (#4888)
26f316d188 is described below

commit 26f316d188873383a7322a64d64bf1d0c94dc0d5
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Tue Sep 17 12:12:18 2024 -0400

    Removes deprecated minor compaction idle time (#4888)
---
 .../org/apache/accumulo/core/conf/Property.java    |   8 --
 .../tserver/TabletServerResourceManager.java       |  17 +--
 .../tserver/memory/LargestFirstMemoryManager.java  |  52 ++-------
 .../tserver/memory/TabletMemoryReport.java         |  10 +-
 .../memory/LargestFirstMemoryManagerTest.java      | 129 +++++++++------------
 .../accumulo/test/ScanServerMaxLatencyIT.java      |  23 +---
 .../test/functional/ManyWriteAheadLogsIT.java      |   5 +-
 7 files changed, 77 insertions(+), 167 deletions(-)

diff --git a/core/src/main/java/org/apache/accumulo/core/conf/Property.java 
b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 670ff7d292..1947ea376e 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@ -865,14 +865,6 @@ public enum Property {
           + "server to see a write to a tablet server. The default value of 
this property is set to such a "
           + "high value that is should never cause a minor compaction.",
       "3.1.0"),
-  @Deprecated(since = "3.1.0")
-  @ReplacedBy(property = TABLE_MINC_COMPACT_MAXAGE)
-  TABLE_MINC_COMPACT_IDLETIME("table.compaction.minor.idle", "5m", 
PropertyType.TIMEDURATION,
-      "When the age of the youngest key value in a tablets in memory map 
exceeds this configuration, then"
-          + " a minor compaction may be initiated. There is no guarantee an 
idle tablet will be compacted."
-          + "This property was deprecated because the new property 
table.compaction.minor.age can offer the "
-          + " same functionality although it may cause more minor compactions 
than this property would have.",
-      "1.3.5"),
   TABLE_COMPACTION_DISPATCHER("table.compaction.dispatcher",
       SimpleCompactionDispatcher.class.getName(), PropertyType.CLASSNAME,
       "A configurable dispatcher that decides what compaction service a table 
should use.",
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
index fe8f33da5e..37037d2f6c 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
@@ -577,10 +577,9 @@ public class TabletServerResourceManager {
       }
     }
 
-    public void updateMemoryUsageStats(Tablet tablet, long size, long 
lastCommitTime, long mincSize,
+    public void updateMemoryUsageStats(Tablet tablet, long size, long mincSize,
         Timer firstWriteTimer) {
-      memUsageReports
-          .add(new TabletMemoryReport(tablet, lastCommitTime, size, mincSize, 
firstWriteTimer));
+      memUsageReports.add(new TabletMemoryReport(tablet, size, mincSize, 
firstWriteTimer));
     }
 
     public void tabletClosed(KeyExtent extent) {
@@ -686,7 +685,6 @@ public class TabletServerResourceManager {
     private final AtomicLong lastReportedSize = new AtomicLong();
     private final AtomicLong lastReportedMincSize = new AtomicLong();
     private final AtomicReference<Timer> firstReportedCommitTimer = new 
AtomicReference<>(null);
-    private volatile long lastReportedCommitTime = 0;
 
     public void updateMemoryUsageStats(Tablet tablet, long size, long 
mincSize) {
 
@@ -721,19 +719,12 @@ public class TabletServerResourceManager {
         report = true;
       }
 
-      long currentTime = System.currentTimeMillis();
-
-      if ((delta > 32000 || delta < 0 || (currentTime - lastReportedCommitTime 
> 1000))
-          && lastReportedSize.compareAndSet(lrs, totalSize)) {
-        if (delta > 0) {
-          lastReportedCommitTime = currentTime;
-        }
+      if ((delta > 32000 || delta < 0) && lastReportedSize.compareAndSet(lrs, 
totalSize)) {
         report = true;
       }
 
       if (report) {
-        memMgmt.updateMemoryUsageStats(tablet, size, lastReportedCommitTime, 
mincSize,
-            firstReportedCommitTimer.get());
+        memMgmt.updateMemoryUsageStats(tablet, size, mincSize, 
firstReportedCommitTimer.get());
       }
     }
 
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManager.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManager.java
index 42623f7027..8a6d1b939c 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManager.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManager.java
@@ -45,7 +45,6 @@ import org.slf4j.LoggerFactory;
 public class LargestFirstMemoryManager {
 
   private static final Logger log = 
LoggerFactory.getLogger(LargestFirstMemoryManager.class);
-  static final long ZERO_TIME = System.currentTimeMillis();
   private static final int TSERV_MINC_MAXCONCURRENT_NUMWAITING_MULTIPLIER = 2;
   private static final double MAX_FLUSH_AT_ONCE_PERCENT = 0.20;
 
@@ -63,14 +62,10 @@ public class LargestFirstMemoryManager {
   private static class TabletInfo {
     final KeyExtent extent;
     final long memTableSize;
-    final long idleTime;
-    final long load;
 
-    public TabletInfo(KeyExtent extent, long memTableSize, long idleTime, long 
load) {
+    public TabletInfo(KeyExtent extent, long memTableSize) {
       this.extent = extent;
       this.memTableSize = memTableSize;
-      this.idleTime = idleTime;
-      this.load = load;
     }
   }
 
@@ -138,13 +133,6 @@ public class LargestFirstMemoryManager {
     maxObserved = 0;
   }
 
-  @SuppressWarnings("deprecation")
-  protected long getMinCIdleThreshold(KeyExtent extent) {
-    TableId tableId = extent.tableId();
-    return mincIdleThresholds.computeIfAbsent(tableId, tid -> 
context.getTableConfiguration(tid)
-        .getTimeInMillis(Property.TABLE_MINC_COMPACT_IDLETIME));
-  }
-
   protected long getMaxAge(KeyExtent extent) {
     TableId tableId = extent.tableId();
     return mincAgeThresholds.computeIfAbsent(tableId, tid -> 
context.getTableConfiguration(tid)
@@ -174,8 +162,7 @@ public class LargestFirstMemoryManager {
     final List<KeyExtent> tabletsToMinorCompact = new ArrayList<>();
 
     LargestMap largestMemTablets = new LargestMap(maxMinCs);
-    final LargestMap largestIdleMemTablets = new 
LargestMap(maxConcurrentMincs);
-    final long now = currentTimeMillis();
+    final LargestMap oldMemTablets = new LargestMap(maxConcurrentMincs);
 
     long ingestMemory = 0;
     long compactionMemory = 0;
@@ -191,17 +178,15 @@ public class LargestFirstMemoryManager {
       }
 
       final long memTabletSize = ts.getMemTableSize();
+
       final long minorCompactingSize = ts.getMinorCompactingMemTableSize();
-      final long idleTime = now - Math.max(ts.getLastCommitTime(), ZERO_TIME);
-      final long timeMemoryLoad = timeMemoryLoad(memTabletSize, idleTime);
       ingestMemory += memTabletSize;
       if (minorCompactingSize == 0 && memTabletSize > 0) {
-        TabletInfo tabletInfo = new TabletInfo(tablet, memTabletSize, 
idleTime, timeMemoryLoad);
+        TabletInfo tabletInfo = new TabletInfo(tablet, memTabletSize);
         try {
           // If the table was deleted, getMinCIdleThreshold will throw an 
exception
-          if (idleTime > getMinCIdleThreshold(tablet)
-              || ts.getElapsedSinceFirstWrite(TimeUnit.MILLISECONDS) > 
getMaxAge(tablet)) {
-            largestIdleMemTablets.put(timeMemoryLoad, tabletInfo);
+          if (ts.getElapsedSinceFirstWrite(TimeUnit.MILLISECONDS) > 
getMaxAge(tablet)) {
+            oldMemTablets.put(memTabletSize, tabletInfo);
           }
         } catch (IllegalArgumentException e) {
           Throwable cause = e.getCause();
@@ -216,7 +201,7 @@ public class LargestFirstMemoryManager {
           throw e;
         }
         // Only place the tablet into largestMemTablets map when the table 
still exists
-        largestMemTablets.put(timeMemoryLoad, tabletInfo);
+        largestMemTablets.put(memTabletSize, tabletInfo);
       }
 
       compactionMemory += minorCompactingSize;
@@ -241,10 +226,9 @@ public class LargestFirstMemoryManager {
       // compaction
       if (memoryChange >= 0 && ingestMemory + memoryChange > 
compactionThreshold * maxMemory) {
         startMinC = true;
-      } else if (!largestIdleMemTablets.isEmpty()) {
+      } else if (!oldMemTablets.isEmpty()) {
         startMinC = true;
-        // switch largestMemTablets to largestIdleMemTablets
-        largestMemTablets = largestIdleMemTablets;
+        largestMemTablets = oldMemTablets;
         log.debug("IDLE minor compaction chosen");
       }
     }
@@ -257,10 +241,9 @@ public class LargestFirstMemoryManager {
         for (TabletInfo largest : lastEntry.getValue()) {
           toBeCompacted += largest.memTableSize;
           tabletsToMinorCompact.add(largest.extent);
-          log.debug(String.format("COMPACTING %s  total = %,d ingestMemory = 
%,d",
-              largest.extent.toString(), (ingestMemory + compactionMemory), 
ingestMemory));
-          log.debug(String.format("chosenMem = %,d chosenIT = %.2f load %,d", 
largest.memTableSize,
-              largest.idleTime / 1000.0, largest.load));
+          log.debug(String.format("COMPACTING %s  total = %,d ingestMemory = 
%,d chosenMem = %,d",
+              largest.extent.toString(), (ingestMemory + compactionMemory), 
ingestMemory,
+              largest.memTableSize));
           if (toBeCompacted > ingestMemory * MAX_FLUSH_AT_ONCE_PERCENT) {
             break outer;
           }
@@ -297,15 +280,4 @@ public class LargestFirstMemoryManager {
 
     return tabletsToMinorCompact;
   }
-
-  protected long currentTimeMillis() {
-    return System.currentTimeMillis();
-  }
-
-  // The load function: memory times the idle time, doubling every 15 mins
-  static long timeMemoryLoad(long mem, long time) {
-    double minutesIdle = time / 60000.0;
-
-    return (long) (mem * Math.pow(2, minutesIdle / 15.0));
-  }
 }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/TabletMemoryReport.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/TabletMemoryReport.java
index 00339d9711..1f1f7cc9fe 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/TabletMemoryReport.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/memory/TabletMemoryReport.java
@@ -27,15 +27,13 @@ import org.apache.accumulo.tserver.tablet.Tablet;
 public class TabletMemoryReport implements Cloneable {
 
   private final Tablet tablet;
-  private final long lastCommitTime;
   private final long memTableSize;
   private final long minorCompactingMemTableSize;
   private final Timer firstWriteTimer;
 
-  public TabletMemoryReport(Tablet tablet, long lastCommitTime, long 
memTableSize,
-      long minorCompactingMemTableSize, Timer firstWriteTimer) {
+  public TabletMemoryReport(Tablet tablet, long memTableSize, long 
minorCompactingMemTableSize,
+      Timer firstWriteTimer) {
     this.tablet = tablet;
-    this.lastCommitTime = lastCommitTime;
     this.memTableSize = memTableSize;
     this.minorCompactingMemTableSize = minorCompactingMemTableSize;
     this.firstWriteTimer = firstWriteTimer;
@@ -49,10 +47,6 @@ public class TabletMemoryReport implements Cloneable {
     return tablet;
   }
 
-  public long getLastCommitTime() {
-    return lastCommitTime;
-  }
-
   public long getElapsedSinceFirstWrite(TimeUnit unit) {
     return firstWriteTimer == null ? 0 : firstWriteTimer.elapsed(unit);
   }
diff --git 
a/server/tserver/src/test/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManagerTest.java
 
b/server/tserver/src/test/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManagerTest.java
index 35b2459e95..b24ff2ab0b 100644
--- 
a/server/tserver/src/test/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManagerTest.java
+++ 
b/server/tserver/src/test/java/org/apache/accumulo/tserver/memory/LargestFirstMemoryManagerTest.java
@@ -43,8 +43,6 @@ import org.junit.jupiter.api.Timeout;
 @Timeout(60)
 public class LargestFirstMemoryManagerTest {
 
-  private static final long ZERO = LargestFirstMemoryManager.ZERO_TIME;
-  private static final long LATER = ZERO + MINUTES.toMillis(20);
   private static final long ONE_GIG = 1024 * 1024 * 1024;
   private static final long ONE_MEG = 1024 * 1024;
   private static final long HALF_GIG = ONE_GIG / 2;
@@ -69,108 +67,99 @@ public class LargestFirstMemoryManagerTest {
     List<KeyExtent> tabletsToMinorCompact;
     // nothing to do
     tabletsToMinorCompact =
-        mgr.tabletsToMinorCompact(tablets(t(k("x"), ZERO, 1000, 0), t(k("y"), 
ZERO, 2000, 0)));
+        mgr.tabletsToMinorCompact(tablets(t(k("x"), 1000, 0), t(k("y"), 2000, 
0)));
     assertEquals(0, tabletsToMinorCompact.size());
     // one tablet is really big
     tabletsToMinorCompact =
-        mgr.tabletsToMinorCompact(tablets(t(k("x"), ZERO, ONE_GIG, 0), 
t(k("y"), ZERO, 2000, 0)));
+        mgr.tabletsToMinorCompact(tablets(t(k("x"), ONE_GIG, 0), t(k("y"), 
2000, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("x"), tabletsToMinorCompact.get(0));
-    // one tablet is idle
-    mgr.currentTime = LATER;
     tabletsToMinorCompact =
-        mgr.tabletsToMinorCompact(tablets(t(k("x"), ZERO, 1001, 0), t(k("y"), 
LATER, 2000, 0)));
-    assertEquals(1, tabletsToMinorCompact.size());
-    assertEquals(k("x"), tabletsToMinorCompact.get(0));
-    // one tablet is idle, but one is really big
+        mgr.tabletsToMinorCompact(tablets(t(k("x"), 1000, 0), t(k("y"), 2000, 
0)));
+    assertEquals(0, tabletsToMinorCompact.size());
     tabletsToMinorCompact =
-        mgr.tabletsToMinorCompact(tablets(t(k("x"), ZERO, 1001, 0), t(k("y"), 
LATER, ONE_GIG, 0)));
+        mgr.tabletsToMinorCompact(tablets(t(k("x"), 1001, 0), t(k("y"), 
ONE_GIG, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("y"), tabletsToMinorCompact.get(0));
     // lots of work to do
     mgr = new LargestFirstMemoryManagerUnderTest();
     mgr.init(context);
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
HALF_GIG, 0),
-        t(k("b"), ZERO, HALF_GIG + ONE_MEG, 0), t(k("c"), ZERO, HALF_GIG + (2 
* ONE_MEG), 0),
-        t(k("d"), ZERO, HALF_GIG + (3 * ONE_MEG), 0), t(k("e"), ZERO, HALF_GIG 
+ (4 * ONE_MEG), 0),
-        t(k("f"), ZERO, HALF_GIG + (5 * ONE_MEG), 0), t(k("g"), ZERO, HALF_GIG 
+ (6 * ONE_MEG), 0),
-        t(k("h"), ZERO, HALF_GIG + (7 * ONE_MEG), 0),
-        t(k("i"), ZERO, HALF_GIG + (8 * ONE_MEG), 0)));
+    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), 
HALF_GIG, 0),
+        t(k("b"), HALF_GIG + ONE_MEG, 0), t(k("c"), HALF_GIG + (2 * ONE_MEG), 
0),
+        t(k("d"), HALF_GIG + (3 * ONE_MEG), 0), t(k("e"), HALF_GIG + (4 * 
ONE_MEG), 0),
+        t(k("f"), HALF_GIG + (5 * ONE_MEG), 0), t(k("g"), HALF_GIG + (6 * 
ONE_MEG), 0),
+        t(k("h"), HALF_GIG + (7 * ONE_MEG), 0), t(k("i"), HALF_GIG + (8 * 
ONE_MEG), 0)));
     assertEquals(2, tabletsToMinorCompact.size());
     assertEquals(k("i"), tabletsToMinorCompact.get(0));
     assertEquals(k("h"), tabletsToMinorCompact.get(1));
     // one finished, one in progress, one filled up
     mgr = new LargestFirstMemoryManagerUnderTest();
     mgr.init(context);
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
HALF_GIG, 0),
-        t(k("b"), ZERO, HALF_GIG + ONE_MEG, 0), t(k("c"), ZERO, HALF_GIG + (2 
* ONE_MEG), 0),
-        t(k("d"), ZERO, HALF_GIG + (3 * ONE_MEG), 0), t(k("e"), ZERO, HALF_GIG 
+ (4 * ONE_MEG), 0),
-        t(k("f"), ZERO, HALF_GIG + (5 * ONE_MEG), 0), t(k("g"), ZERO, ONE_GIG, 
0),
-        t(k("h"), ZERO, 0, HALF_GIG + (7 * ONE_MEG)), t(k("i"), ZERO, 0, 0)));
+    tabletsToMinorCompact =
+        mgr.tabletsToMinorCompact(tablets(t(k("a"), HALF_GIG, 0), t(k("b"), 
HALF_GIG + ONE_MEG, 0),
+            t(k("c"), HALF_GIG + (2 * ONE_MEG), 0), t(k("d"), HALF_GIG + (3 * 
ONE_MEG), 0),
+            t(k("e"), HALF_GIG + (4 * ONE_MEG), 0), t(k("f"), HALF_GIG + (5 * 
ONE_MEG), 0),
+            t(k("g"), ONE_GIG, 0), t(k("h"), 0, HALF_GIG + (7 * ONE_MEG)), 
t(k("i"), 0, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("g"), tabletsToMinorCompact.get(0));
     // memory is very full, lots of candidates
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
HALF_GIG, 0),
-        t(k("b"), ZERO, ONE_GIG + ONE_MEG, 0), t(k("c"), ZERO, ONE_GIG + (2 * 
ONE_MEG), 0),
-        t(k("d"), ZERO, ONE_GIG + (3 * ONE_MEG), 0), t(k("e"), ZERO, ONE_GIG + 
(4 * ONE_MEG), 0),
-        t(k("f"), ZERO, ONE_GIG + (5 * ONE_MEG), 0), t(k("g"), ZERO, ONE_GIG + 
(6 * ONE_MEG), 0),
-        t(k("h"), ZERO, 0, 0), t(k("i"), ZERO, 0, 0)));
+    tabletsToMinorCompact =
+        mgr.tabletsToMinorCompact(tablets(t(k("a"), HALF_GIG, 0), t(k("b"), 
ONE_GIG + ONE_MEG, 0),
+            t(k("c"), ONE_GIG + (2 * ONE_MEG), 0), t(k("d"), ONE_GIG + (3 * 
ONE_MEG), 0),
+            t(k("e"), ONE_GIG + (4 * ONE_MEG), 0), t(k("f"), ONE_GIG + (5 * 
ONE_MEG), 0),
+            t(k("g"), ONE_GIG + (6 * ONE_MEG), 0), t(k("h"), 0, 0), t(k("i"), 
0, 0)));
     assertEquals(2, tabletsToMinorCompact.size());
     assertEquals(k("g"), tabletsToMinorCompact.get(0));
     assertEquals(k("f"), tabletsToMinorCompact.get(1));
     // only have two compactors, still busy
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
HALF_GIG, 0),
-        t(k("b"), ZERO, ONE_GIG + ONE_MEG, 0), t(k("c"), ZERO, ONE_GIG + (2 * 
ONE_MEG), 0),
-        t(k("d"), ZERO, ONE_GIG + (3 * ONE_MEG), 0), t(k("e"), ZERO, ONE_GIG + 
(4 * ONE_MEG), 0),
-        t(k("f"), ZERO, ONE_GIG, ONE_GIG + (5 * ONE_MEG)),
-        t(k("g"), ZERO, ONE_GIG, ONE_GIG + (6 * ONE_MEG)), t(k("h"), ZERO, 0, 
0),
-        t(k("i"), ZERO, 0, 0)));
+    tabletsToMinorCompact =
+        mgr.tabletsToMinorCompact(tablets(t(k("a"), HALF_GIG, 0), t(k("b"), 
ONE_GIG + ONE_MEG, 0),
+            t(k("c"), ONE_GIG + (2 * ONE_MEG), 0), t(k("d"), ONE_GIG + (3 * 
ONE_MEG), 0),
+            t(k("e"), ONE_GIG + (4 * ONE_MEG), 0), t(k("f"), ONE_GIG, ONE_GIG 
+ (5 * ONE_MEG)),
+            t(k("g"), ONE_GIG, ONE_GIG + (6 * ONE_MEG)), t(k("h"), 0, 0), 
t(k("i"), 0, 0)));
     assertEquals(0, tabletsToMinorCompact.size());
     // finished one
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
HALF_GIG, 0),
-        t(k("b"), ZERO, ONE_GIG + ONE_MEG, 0), t(k("c"), ZERO, ONE_GIG + (2 * 
ONE_MEG), 0),
-        t(k("d"), ZERO, ONE_GIG + (3 * ONE_MEG), 0), t(k("e"), ZERO, ONE_GIG + 
(4 * ONE_MEG), 0),
-        t(k("f"), ZERO, ONE_GIG, ONE_GIG + (5 * ONE_MEG)), t(k("g"), ZERO, 
ONE_GIG, 0),
-        t(k("h"), ZERO, 0, 0), t(k("i"), ZERO, 0, 0)));
+    tabletsToMinorCompact =
+        mgr.tabletsToMinorCompact(tablets(t(k("a"), HALF_GIG, 0), t(k("b"), 
ONE_GIG + ONE_MEG, 0),
+            t(k("c"), ONE_GIG + (2 * ONE_MEG), 0), t(k("d"), ONE_GIG + (3 * 
ONE_MEG), 0),
+            t(k("e"), ONE_GIG + (4 * ONE_MEG), 0), t(k("f"), ONE_GIG, ONE_GIG 
+ (5 * ONE_MEG)),
+            t(k("g"), ONE_GIG, 0), t(k("h"), 0, 0), t(k("i"), 0, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("e"), tabletsToMinorCompact.get(0));
 
     // many are running: do nothing
     mgr = new LargestFirstMemoryManagerUnderTest();
     mgr.init(context);
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
HALF_GIG, 0),
-        t(k("b"), ZERO, HALF_GIG + ONE_MEG, 0), t(k("c"), ZERO, HALF_GIG + (2 
* ONE_MEG), 0),
-        t(k("d"), ZERO, 0, HALF_GIG), t(k("e"), ZERO, 0, HALF_GIG), t(k("f"), 
ZERO, 0, HALF_GIG),
-        t(k("g"), ZERO, 0, HALF_GIG), t(k("i"), ZERO, 0, HALF_GIG), t(k("j"), 
ZERO, 0, HALF_GIG),
-        t(k("k"), ZERO, 0, HALF_GIG), t(k("l"), ZERO, 0, HALF_GIG), t(k("m"), 
ZERO, 0, HALF_GIG)));
+    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), 
HALF_GIG, 0),
+        t(k("b"), HALF_GIG + ONE_MEG, 0), t(k("c"), HALF_GIG + (2 * ONE_MEG), 
0),
+        t(k("d"), 0, HALF_GIG), t(k("e"), 0, HALF_GIG), t(k("f"), 0, HALF_GIG),
+        t(k("g"), 0, HALF_GIG), t(k("i"), 0, HALF_GIG), t(k("j"), 0, HALF_GIG),
+        t(k("k"), 0, HALF_GIG), t(k("l"), 0, HALF_GIG), t(k("m"), 0, 
HALF_GIG)));
     assertEquals(0, tabletsToMinorCompact.size());
 
     // observe adjustment:
     mgr = new LargestFirstMemoryManagerUnderTest();
     mgr.init(context);
     // compact the largest
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
QGIG, 0),
-        t(k("b"), ZERO, QGIG + 1, 0), t(k("c"), ZERO, QGIG + 2, 0)));
+    tabletsToMinorCompact = mgr.tabletsToMinorCompact(
+        tablets(t(k("a"), QGIG, 0), t(k("b"), QGIG + 1, 0), t(k("c"), QGIG + 
2, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("c"), tabletsToMinorCompact.get(0));
     // show that it is compacting... do nothing
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
QGIG, 0),
-        t(k("b"), ZERO, QGIG + 1, 0), t(k("c"), ZERO, 0, QGIG + 2)));
+    tabletsToMinorCompact = mgr.tabletsToMinorCompact(
+        tablets(t(k("a"), QGIG, 0), t(k("b"), QGIG + 1, 0), t(k("c"), 0, QGIG 
+ 2)));
     assertEquals(0, tabletsToMinorCompact.size());
     // not going to bother compacting any more
-    mgr.currentTime += MINUTES.toMillis(1);
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(k("a"), ZERO, 
QGIG, 0),
-        t(k("b"), ZERO, QGIG + 1, 0), t(k("c"), ZERO, 0, QGIG + 2)));
+    tabletsToMinorCompact = mgr.tabletsToMinorCompact(
+        tablets(t(k("a"), QGIG, 0), t(k("b"), QGIG + 1, 0), t(k("c"), 0, QGIG 
+ 2)));
     assertEquals(0, tabletsToMinorCompact.size());
     // now do nothing
-    mgr.currentTime += MINUTES.toMillis(1);
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(
-        tablets(t(k("a"), ZERO, QGIG, 0), t(k("b"), ZERO, 0, 0), t(k("c"), 
ZERO, 0, 0)));
+    tabletsToMinorCompact =
+        mgr.tabletsToMinorCompact(tablets(t(k("a"), QGIG, 0), t(k("b"), 0, 0), 
t(k("c"), 0, 0)));
     assertEquals(0, tabletsToMinorCompact.size());
     // on no! more data, this time we compact because we've adjusted
-    mgr.currentTime += MINUTES.toMillis(1);
     tabletsToMinorCompact = mgr.tabletsToMinorCompact(
-        tablets(t(k("a"), ZERO, QGIG, 0), t(k("b"), ZERO, QGIG + 1, 0), 
t(k("c"), ZERO, 0, 0)));
+        tablets(t(k("a"), QGIG, 0), t(k("b"), QGIG + 1, 0), t(k("c"), 0, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("b"), tabletsToMinorCompact.get(0));
   }
@@ -190,8 +179,8 @@ public class LargestFirstMemoryManagerTest {
     // one tablet is really big and the other is for a nonexistent table
     KeyExtent extent = new KeyExtent(TableId.of("3"), new Text("j"), null);
     KeyExtent extent2 = new KeyExtent(TableId.of("2"), new Text("j"), null);
-    tabletsToMinorCompact = mgr.tabletsToMinorCompact(tablets(t(extent, ZERO, 
ONE_GIG, 0),
-        t(extent2, ZERO, ONE_GIG, 0), t(k("j"), ZERO, ONE_GIG, 0)));
+    tabletsToMinorCompact = mgr.tabletsToMinorCompact(
+        tablets(t(extent, ONE_GIG, 0), t(extent2, ONE_GIG, 0), t(k("j"), 
ONE_GIG, 0)));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(extent, tabletsToMinorCompact.get(0));
   }
@@ -204,31 +193,19 @@ public class LargestFirstMemoryManagerTest {
 
     // nothing to do
     tabletsToMinorCompact =
-        mgr.tabletsToMinorCompact(tablets(t(k("x"), ZERO, 1000, 0), t(k("y"), 
ZERO, 2000, 0)));
+        mgr.tabletsToMinorCompact(tablets(t(k("x"), 1000, 0), t(k("y"), 2000, 
0)));
     assertEquals(0, tabletsToMinorCompact.size());
 
     // a tablet that exceeds the configured max age should need to compact
     tabletsToMinorCompact =
-        mgr.tabletsToMinorCompact(tablets(t(k("x"), ZERO, 1000, 0, 
Duration.ofMinutes(14)),
-            t(k("y"), ZERO, 2000, 0, Duration.ofMinutes(16))));
+        mgr.tabletsToMinorCompact(tablets(t(k("x"), 1000, 0, 
Duration.ofMinutes(14)),
+            t(k("y"), 2000, 0, Duration.ofMinutes(16))));
     assertEquals(1, tabletsToMinorCompact.size());
     assertEquals(k("y"), tabletsToMinorCompact.get(0));
   }
 
   private static class LargestFirstMemoryManagerUnderTest extends 
LargestFirstMemoryManager {
 
-    public long currentTime = ZERO;
-
-    @Override
-    protected long currentTimeMillis() {
-      return currentTime;
-    }
-
-    @Override
-    protected long getMinCIdleThreshold(KeyExtent extent) {
-      return MINUTES.toMillis(15);
-    }
-
     @Override
     protected long getMaxAge(KeyExtent extent) {
       return MINUTES.toMillis(15);
@@ -272,8 +249,8 @@ public class LargestFirstMemoryManagerTest {
     return new KeyExtent(TableId.of("1"), new Text(endRow), null);
   }
 
-  private TabletMemoryReport t(KeyExtent ke, long lastCommit, long memSize, 
long compactingSize) {
-    return new TabletMemoryReport(null, lastCommit, memSize, compactingSize, 
null) {
+  private TabletMemoryReport t(KeyExtent ke, long memSize, long 
compactingSize) {
+    return new TabletMemoryReport(null, memSize, compactingSize, null) {
       @Override
       public KeyExtent getExtent() {
         return ke;
@@ -281,9 +258,9 @@ public class LargestFirstMemoryManagerTest {
     };
   }
 
-  private TabletMemoryReport t(KeyExtent ke, long lastCommit, long memSize, 
long compactingSize,
+  private TabletMemoryReport t(KeyExtent ke, long memSize, long compactingSize,
       Duration elapsedSinceFirstWrite) {
-    return new TabletMemoryReport(null, lastCommit, memSize, compactingSize, 
null) {
+    return new TabletMemoryReport(null, memSize, compactingSize, null) {
       @Override
       public KeyExtent getExtent() {
         return ke;
diff --git 
a/test/src/main/java/org/apache/accumulo/test/ScanServerMaxLatencyIT.java 
b/test/src/main/java/org/apache/accumulo/test/ScanServerMaxLatencyIT.java
index b6a0b81894..8e2fb7b796 100644
--- a/test/src/main/java/org/apache/accumulo/test/ScanServerMaxLatencyIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ScanServerMaxLatencyIT.java
@@ -57,16 +57,12 @@ public class ScanServerMaxLatencyIT extends 
ConfigurableMacBase {
     cfg.setProperty(Property.SSERV_CACHED_TABLET_METADATA_EXPIRATION, "2s");
   }
 
-  @SuppressWarnings("deprecation")
-  private static Property IDLE_MINC_PROP = 
Property.TABLE_MINC_COMPACT_IDLETIME;
-
   @Test
   public void testMaxLatency() throws Exception {
-    final String[] tables = this.getUniqueNames(4);
+    final String[] tables = this.getUniqueNames(3);
     final String table1 = tables[0];
     final String table2 = tables[1];
     final String table3 = tables[2];
-    final String table4 = tables[3];
 
     ExecutorService executor = Executors.newCachedThreadPool();
     try (var client = 
Accumulo.newClient().from(getClientProperties()).build()) {
@@ -81,30 +77,24 @@ public class ScanServerMaxLatencyIT extends 
ConfigurableMacBase {
       ntc.withInitialTabletAvailability(TabletAvailability.HOSTED);
       client.tableOperations().create(table2, ntc);
       ntc = new NewTableConfiguration();
-      ntc.setProperties(Map.of(IDLE_MINC_PROP.getKey(), "2s"));
-      ntc.withInitialTabletAvailability(TabletAvailability.HOSTED);
-      client.tableOperations().create(table3, ntc);
-      ntc = new NewTableConfiguration();
       ntc.setProperties(Map.of(Property.TABLE_MINC_COMPACT_MAXAGE.getKey(), 
"3s"));
       ntc.withInitialTabletAvailability(TabletAvailability.HOSTED);
-      client.tableOperations().create(table4, ntc);
+      client.tableOperations().create(table3, ntc);
 
       Timer timer = Timer.startNew();
 
       // Write to table4 once, this is different than the other tables that 
are continually being
       // written to. table4 should minor compact 3 seconds after this write.
-      writeElapsed(new SecureRandom(), client, table4, timer);
+      writeElapsed(new SecureRandom(), client, table3, timer);
       boolean sawDataInTable4 = false;
 
       List<Future<Void>> futures = new ArrayList<>();
       futures.add(executor.submit(createWriterTask(client, table1, timer)));
       futures.add(executor.submit(createWriterTask(client, table2, timer)));
-      futures.add(executor.submit(createWriterTask(client, table3, timer)));
 
       // wait for some data to be written
       Wait.waitFor(() -> readMaxElapsed(client, IMMEDIATE, table1) > 0
-          && readMaxElapsed(client, IMMEDIATE, table2) > 0
-          && readMaxElapsed(client, IMMEDIATE, table3) > 0);
+          && readMaxElapsed(client, IMMEDIATE, table2) > 0);
 
       long lastMaxSeen = -1;
       int changes = 0;
@@ -131,11 +121,8 @@ public class ScanServerMaxLatencyIT extends 
ConfigurableMacBase {
         // The other table does not have the setting to minor compact based on 
age, so should never
         // see any data for it from the scan server.
         assertEquals(-1, readMaxElapsed(client, EVENTUAL, table2));
-        // The background thread is writing to this table every 100ms so it 
should not be considered
-        // idle and therefor should not minor compact.
-        assertEquals(-1, readMaxElapsed(client, EVENTUAL, table3));
 
-        if (!sawDataInTable4 && readMaxElapsed(client, EVENTUAL, table4) != 
-1) {
+        if (!sawDataInTable4 && readMaxElapsed(client, EVENTUAL, table3) != 
-1) {
 
           assertTrue(
               timer.elapsed(TimeUnit.MILLISECONDS) > 3000
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/ManyWriteAheadLogsIT.java
 
b/test/src/main/java/org/apache/accumulo/test/functional/ManyWriteAheadLogsIT.java
index f497430ba1..aa2d54d298 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/ManyWriteAheadLogsIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/ManyWriteAheadLogsIT.java
@@ -55,9 +55,6 @@ public class ManyWriteAheadLogsIT extends 
AccumuloClusterHarness {
 
   private String walSize;
 
-  @SuppressWarnings("deprecation")
-  private static Property IDLE_MINC_PROP = 
Property.TABLE_MINC_COMPACT_IDLETIME;
-
   @Override
   public void configureMiniCluster(MiniAccumuloConfigImpl cfg, Configuration 
hadoopCoreSite) {
     // configure a smaller wal size so the wals will roll frequently in the 
test
@@ -69,7 +66,7 @@ public class ManyWriteAheadLogsIT extends 
AccumuloClusterHarness {
     // idle compactions may addess the problem this test is creating, however 
they will not prevent
     // lots of closed WALs for all write patterns. This test ensures code that 
directly handles many
     // tablets referencing many different WALs is working.
-    cfg.setProperty(IDLE_MINC_PROP, "1h");
+    cfg.setProperty(Property.TABLE_MINC_COMPACT_MAXAGE, "1h");
     cfg.getClusterServerConfiguration().setNumDefaultTabletServers(1);
     hadoopCoreSite.set("fs.file.impl", RawLocalFileSystem.class.getName());
   }

Reply via email to