This is an automated email from the ASF dual-hosted git repository.
dlmarion 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 dfacaf42f8 Fix OnDemand tablet unloading ITs, renamed tablet unloader
default impl (#5909)
dfacaf42f8 is described below
commit dfacaf42f87423b0ad4e8133984b3f5abbad2c8d
Author: Dave Marion <[email protected]>
AuthorDate: Tue Sep 23 10:01:15 2025 -0400
Fix OnDemand tablet unloading ITs, renamed tablet unloader default impl
(#5909)
Modified two ITs that set table properties in the Mini
configuration. Instead, set the table properties on the
tables. Renamed the default OnDemandTabletUnloader
implementation.
Co-authored-by: Christopher Tubbs <[email protected]>
---
core/src/main/java/org/apache/accumulo/core/conf/Property.java | 3 ++-
...etUnloader.java => LastAccessTimeOnDemandTabletUnloader.java} | 5 +++--
...erTest.java => LastAccessTimeOnDemandTabletUnloaderTest.java} | 8 ++++----
.../org/apache/accumulo/test/functional/ManagerAssignmentIT.java | 8 ++++++--
.../test/functional/OnDemandTabletUnloadingFlakyAmpleIT.java | 9 +++++++--
.../accumulo/test/functional/OnDemandTabletUnloadingIT.java | 6 ++++--
6 files changed, 26 insertions(+), 13 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 d9583e84ca..ed35c8683f 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
@@ -1003,7 +1003,8 @@ public enum Property {
TABLE_COMPACTION_CONFIGURER_OPTS("table.compaction.configurer.opts.", null,
PropertyType.PREFIX,
"Options for the table compaction configuror.", "2.1.0"),
TABLE_ONDEMAND_UNLOADER("tserver.ondemand.tablet.unloader",
- "org.apache.accumulo.core.spi.ondemand.DefaultOnDemandTabletUnloader",
PropertyType.CLASSNAME,
+
"org.apache.accumulo.core.spi.ondemand.LastAccessTimeOnDemandTabletUnloader",
+ PropertyType.CLASSNAME,
"The class that will be used to determine which on-demand Tablets to
unload.", "4.0.0"),
TABLE_MAX_MERGEABILITY_THRESHOLD("table.mergeability.threshold", ".25",
PropertyType.FRACTION,
"A range of tablets are eligible for automatic merging until the
combined size of RFiles reaches this percentage of the split threshold.",
diff --git
a/core/src/main/java/org/apache/accumulo/core/spi/ondemand/DefaultOnDemandTabletUnloader.java
b/core/src/main/java/org/apache/accumulo/core/spi/ondemand/LastAccessTimeOnDemandTabletUnloader.java
similarity index 92%
rename from
core/src/main/java/org/apache/accumulo/core/spi/ondemand/DefaultOnDemandTabletUnloader.java
rename to
core/src/main/java/org/apache/accumulo/core/spi/ondemand/LastAccessTimeOnDemandTabletUnloader.java
index 5716f7a34d..339c4cb96a 100644
---
a/core/src/main/java/org/apache/accumulo/core/spi/ondemand/DefaultOnDemandTabletUnloader.java
+++
b/core/src/main/java/org/apache/accumulo/core/spi/ondemand/LastAccessTimeOnDemandTabletUnloader.java
@@ -27,9 +27,10 @@ import org.apache.accumulo.core.data.TableId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DefaultOnDemandTabletUnloader implements OnDemandTabletUnloader {
+public class LastAccessTimeOnDemandTabletUnloader implements
OnDemandTabletUnloader {
- private static final Logger LOG =
LoggerFactory.getLogger(DefaultOnDemandTabletUnloader.class);
+ private static final Logger LOG =
+ LoggerFactory.getLogger(LastAccessTimeOnDemandTabletUnloader.class);
public static final String INACTIVITY_THRESHOLD =
"table.custom.ondemand.unloader.inactivity.threshold.seconds";
private static final String TEN_MINUTES =
Long.toString(MINUTES.toSeconds(10));
diff --git
a/server/tserver/src/test/java/org/apache/accumulo/tserver/DefaultOnDemandTabletUnloaderTest.java
b/server/tserver/src/test/java/org/apache/accumulo/tserver/LastAccessTimeOnDemandTabletUnloaderTest.java
similarity index 91%
rename from
server/tserver/src/test/java/org/apache/accumulo/tserver/DefaultOnDemandTabletUnloaderTest.java
rename to
server/tserver/src/test/java/org/apache/accumulo/tserver/LastAccessTimeOnDemandTabletUnloaderTest.java
index 3db9c0e3e8..78e1b3fd75 100644
---
a/server/tserver/src/test/java/org/apache/accumulo/tserver/DefaultOnDemandTabletUnloaderTest.java
+++
b/server/tserver/src/test/java/org/apache/accumulo/tserver/LastAccessTimeOnDemandTabletUnloaderTest.java
@@ -34,7 +34,7 @@ import java.util.Set;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.dataImpl.KeyExtent;
-import org.apache.accumulo.core.spi.ondemand.DefaultOnDemandTabletUnloader;
+import
org.apache.accumulo.core.spi.ondemand.LastAccessTimeOnDemandTabletUnloader;
import
org.apache.accumulo.core.spi.ondemand.OnDemandTabletUnloader.UnloaderParams;
import org.apache.accumulo.core.tabletserver.UnloaderParamsImpl;
import org.apache.accumulo.core.util.cache.Caches;
@@ -44,7 +44,7 @@ import org.apache.accumulo.server.conf.TableConfiguration;
import org.apache.hadoop.io.Text;
import org.junit.jupiter.api.Test;
-public class DefaultOnDemandTabletUnloaderTest {
+public class LastAccessTimeOnDemandTabletUnloaderTest {
@Test
public void evaluationTest() {
@@ -59,7 +59,7 @@ public class DefaultOnDemandTabletUnloaderTest {
expect(context.getCaches()).andReturn(Caches.getInstance()).anyTimes();
expect(context.getConfiguration()).andReturn(tconf);
expect(context.getTableConfiguration(tid)).andReturn(tconf);
- expect(tconf.get(DefaultOnDemandTabletUnloader.INACTIVITY_THRESHOLD))
+
expect(tconf.get(LastAccessTimeOnDemandTabletUnloader.INACTIVITY_THRESHOLD))
.andReturn(inactivityTimeSeconds);
expect(tconf.newDeriver(anyObject())).andReturn(Map::of).anyTimes();
Map<KeyExtent,Long> online = new HashMap<>();
@@ -75,7 +75,7 @@ public class DefaultOnDemandTabletUnloaderTest {
ServiceEnvironmentImpl env = new ServiceEnvironmentImpl(context);
UnloaderParams params = new UnloaderParamsImpl(tid, env, online,
onDemandTabletsToUnload);
- DefaultOnDemandTabletUnloader unloader = new
DefaultOnDemandTabletUnloader() {
+ LastAccessTimeOnDemandTabletUnloader unloader = new
LastAccessTimeOnDemandTabletUnloader() {
@Override
protected long getCurrentTime() {
return currentTime;
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
index 95bd336da5..d4b5d9655a 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/ManagerAssignmentIT.java
@@ -56,6 +56,7 @@ import
org.apache.accumulo.core.client.admin.NewTableConfiguration;
import org.apache.accumulo.core.client.admin.TabletAvailability;
import org.apache.accumulo.core.client.admin.servers.ServerId;
import org.apache.accumulo.core.clientImpl.ClientContext;
+import org.apache.accumulo.core.clientImpl.Namespace;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Range;
@@ -75,7 +76,7 @@ import
org.apache.accumulo.core.metadata.schema.TabletOperationType;
import org.apache.accumulo.core.metadata.schema.TabletsMetadata;
import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.core.spi.ondemand.DefaultOnDemandTabletUnloader;
+import
org.apache.accumulo.core.spi.ondemand.LastAccessTimeOnDemandTabletUnloader;
import org.apache.accumulo.core.tabletserver.thrift.TabletStats;
import org.apache.accumulo.core.trace.TraceUtil;
import org.apache.accumulo.harness.SharedMiniClusterBase;
@@ -101,7 +102,6 @@ public class ManagerAssignmentIT extends
SharedMiniClusterBase {
cfg.setProperty(Property.GENERAL_THREADPOOL_SIZE, "10");
cfg.setProperty(Property.MANAGER_TABLET_GROUP_WATCHER_INTERVAL, "5s");
cfg.setProperty(Property.TSERV_ONDEMAND_UNLOADER_INTERVAL, "10s");
- cfg.setProperty(DefaultOnDemandTabletUnloader.INACTIVITY_THRESHOLD,
"15");
});
client = Accumulo.newClient().from(getClientProps()).build();
}
@@ -116,6 +116,10 @@ public class ManagerAssignmentIT extends
SharedMiniClusterBase {
public void before() throws Exception {
Wait.waitFor(() -> countTabletsWithLocation(client,
SystemTables.ROOT.tableId()) > 0);
Wait.waitFor(() -> countTabletsWithLocation(client,
SystemTables.METADATA.tableId()) > 0);
+ client.namespaceOperations().setProperty(Namespace.ACCUMULO.name(),
+ LastAccessTimeOnDemandTabletUnloader.INACTIVITY_THRESHOLD, "15");
+ client.namespaceOperations().setProperty(Namespace.DEFAULT.name(),
+ LastAccessTimeOnDemandTabletUnloader.INACTIVITY_THRESHOLD, "15");
}
@Test
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingFlakyAmpleIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingFlakyAmpleIT.java
index 5f69759552..2fc43ff3ab 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingFlakyAmpleIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingFlakyAmpleIT.java
@@ -20,11 +20,15 @@ package org.apache.accumulo.test.functional;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.util.Map;
+
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
+import org.apache.accumulo.core.client.admin.NewTableConfiguration;
import org.apache.accumulo.core.clientImpl.ClientContext;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.Mutation;
+import
org.apache.accumulo.core.spi.ondemand.LastAccessTimeOnDemandTabletUnloader;
import org.apache.accumulo.harness.SharedMiniClusterBase;
import org.apache.accumulo.minicluster.ServerType;
import org.apache.accumulo.test.ample.FlakyAmpleManager;
@@ -48,7 +52,6 @@ public class OnDemandTabletUnloadingFlakyAmpleIT extends
SharedMiniClusterBase {
cfg.getClusterServerConfiguration().setNumDefaultTabletServers(1);
cfg.setProperty(Property.MANAGER_TABLET_GROUP_WATCHER_INTERVAL, "1s");
cfg.setProperty(Property.TSERV_ONDEMAND_UNLOADER_INTERVAL, "3s");
-
cfg.setProperty("table.custom.ondemand.unloader.inactivity.threshold.seconds",
"3");
cfg.setServerClass(ServerType.TABLET_SERVER, rg ->
FlakyAmpleTserver.class);
cfg.setServerClass(ServerType.MANAGER, rg -> FlakyAmpleManager.class);
});
@@ -65,7 +68,9 @@ public class OnDemandTabletUnloadingFlakyAmpleIT extends
SharedMiniClusterBase {
String tableName = super.getUniqueNames(1)[0];
- c.tableOperations().create(tableName);
+ NewTableConfiguration ntc = new NewTableConfiguration();
+
ntc.setProperties(Map.of(LastAccessTimeOnDemandTabletUnloader.INACTIVITY_THRESHOLD,
"3"));
+ c.tableOperations().create(tableName, ntc);
var tableId = getCluster().getServerContext().getTableId(tableName);
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingIT.java
index b1df408c1d..1c03cf9948 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/OnDemandTabletUnloadingIT.java
@@ -47,6 +47,7 @@ import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.metadata.schema.TabletMetadata;
+import
org.apache.accumulo.core.spi.ondemand.LastAccessTimeOnDemandTabletUnloader;
import org.apache.accumulo.core.spi.scan.ConfigurableScanServerSelector;
import org.apache.accumulo.core.tabletserver.thrift.TabletStats;
import org.apache.accumulo.harness.SharedMiniClusterBase;
@@ -99,7 +100,6 @@ public class OnDemandTabletUnloadingIT extends
SharedMiniClusterBase {
Integer.toString(managerTabletGroupWatcherInterval));
cfg.setProperty(Property.TSERV_ONDEMAND_UNLOADER_INTERVAL,
Integer.toString(inactiveOnDemandTabletUnloaderInterval));
-
cfg.setProperty("table.custom.ondemand.unloader.inactivity.threshold.seconds",
"15");
// Tell the server processes to use a StatsDMeterRegistry that will be
configured
// to push all metrics to the sink we started.
@@ -141,6 +141,7 @@ public class OnDemandTabletUnloadingIT extends
SharedMiniClusterBase {
NewTableConfiguration ntc = new NewTableConfiguration();
ntc.withSplits(splits);
+
ntc.setProperties(Map.of(LastAccessTimeOnDemandTabletUnloader.INACTIVITY_THRESHOLD,
"15"));
c.tableOperations().create(tableName, ntc);
String tableId = c.tableOperations().tableIdMap().get(tableName);
@@ -214,7 +215,8 @@ public class OnDemandTabletUnloadingIT extends
SharedMiniClusterBase {
SortedSet<Text> splits = new TreeSet<>(
List.of(new Text("005"), new Text("013"), new Text("027"), new
Text("075")));
- c.tableOperations().create(tableName, new
NewTableConfiguration().withSplits(splits));
+ c.tableOperations().create(tableName, new
NewTableConfiguration().withSplits(splits)
+
.setProperties(Map.of(LastAccessTimeOnDemandTabletUnloader.INACTIVITY_THRESHOLD,
"15")));
try (var writer = c.createBatchWriter(tableName)) {
IntStream.range(0, 100).mapToObj(i -> String.format("%03d",
i)).forEach(row -> {
Mutation m = new Mutation(row);