This is an automated email from the ASF dual-hosted git repository.
ddanielr pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push:
new a89aadcaf8 Adds more timing logging for tablet assignment (#5671)
a89aadcaf8 is described below
commit a89aadcaf87091584e49f241775ba8231956ebfc
Author: Daniel Roberts <[email protected]>
AuthorDate: Mon Jun 23 14:03:19 2025 -0400
Adds more timing logging for tablet assignment (#5671)
Adds debug info message for showing options size.
Adds debug messages for showing assignment times.
Co-authored-by: Keith Turner <[email protected]>
---
.../server/manager/state/MetaDataTableScanner.java | 19 +++++++++++++++----
.../apache/accumulo/manager/TabletGroupWatcher.java | 16 +++++++++++++++-
2 files changed, 30 insertions(+), 5 deletions(-)
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataTableScanner.java
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataTableScanner.java
index a137087d49..c97f32926d 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataTableScanner.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataTableScanner.java
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map.Entry;
import java.util.NoSuchElementException;
import java.util.SortedMap;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.accumulo.core.client.BatchScanner;
@@ -57,6 +58,7 @@ import
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Su
import
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily;
import org.apache.accumulo.core.metadata.schema.TabletMetadata.Location;
import org.apache.accumulo.core.security.Authorizations;
+import org.apache.accumulo.core.util.Timer;
import org.apache.accumulo.core.util.cleaner.CleanerUtil;
import org.apache.hadoop.io.Text;
import org.slf4j.Logger;
@@ -100,13 +102,22 @@ public class MetaDataTableScanner implements
ClosableIterator<TabletLocationStat
IteratorSetting tabletChange =
new IteratorSetting(1001, "tabletChange",
TabletStateChangeIterator.class);
if (state != null) {
- TabletStateChangeIterator.setCurrentServers(aconf, tabletChange,
state.onlineTabletServers());
- TabletStateChangeIterator.setOnlineTables(aconf, tabletChange,
state.onlineTables());
+ var timer = Timer.startNew();
+ var servers = state.onlineTabletServers();
+ var tables = state.onlineTables();
+ var migrations = state.migrationsSnapshot(dataLevel);
+ TabletStateChangeIterator.setCurrentServers(aconf, tabletChange,
servers);
+ TabletStateChangeIterator.setOnlineTables(aconf, tabletChange, tables);
TabletStateChangeIterator.setMerges(tabletChange, state.merges());
- TabletStateChangeIterator.setMigrations(aconf, tabletChange,
- state.migrationsSnapshot(dataLevel));
+ TabletStateChangeIterator.setMigrations(aconf, tabletChange, migrations);
TabletStateChangeIterator.setManagerState(tabletChange,
state.getManagerState());
TabletStateChangeIterator.setShuttingDown(aconf, tabletChange,
state.shutdownServers());
+ log.debug(
+ "{} configured meta scanner opts, online servers:{} tables:{}
migrations:{} options_size:{} create_time:{}ms",
+ dataLevel, servers.size(), tables.size(), migrations.size(),
+ tabletChange.getOptions().entrySet().stream()
+ .mapToLong(e -> e.getKey().length() +
e.getValue().length()).sum(),
+ timer.elapsed(TimeUnit.MILLISECONDS));
}
scanner.addScanIterator(tabletChange);
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
index b306f6ef7b..5604e69c70 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
@@ -81,6 +81,7 @@ import org.apache.accumulo.core.metadata.schema.MetadataTime;
import org.apache.accumulo.core.metadata.schema.TabletMetadata.Location;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.tabletserver.thrift.NotServingTabletException;
+import org.apache.accumulo.core.util.Timer;
import org.apache.accumulo.core.util.threads.Threads.AccumuloDaemonThread;
import org.apache.accumulo.manager.Manager.TabletGoalState;
import org.apache.accumulo.manager.state.MergeStats;
@@ -1120,13 +1121,22 @@ abstract class TabletGroupWatcher extends
AccumuloDaemonThread {
handleDeadTablets(tLists, wals);
+ int beforeSize = tLists.assignments.size();
+ Timer timer = Timer.startNew();
+
getAssignmentsFromBalancer(tLists, unassigned);
+ if (!unassigned.isEmpty()) {
+ Manager.log.debug("[{}] requested assignments for {} tablets and got {}
in {} ms",
+ store.name(), unassigned.size(), tLists.assignments.size() -
beforeSize,
+ timer.elapsed(TimeUnit.MILLISECONDS));
+ }
if (!tLists.assignments.isEmpty()) {
- Manager.log.info(String.format("Assigning %d tablets",
tLists.assignments.size()));
+ Manager.log.info("Assigning {} tablets", tLists.assignments.size());
store.setFutureLocations(tLists.assignments);
}
tLists.assignments.addAll(tLists.assigned);
+ timer.restart();
for (Assignment a : tLists.assignments) {
try {
TServerConnection client = manager.tserverSet.getConnection(a.server);
@@ -1142,6 +1152,10 @@ abstract class TabletGroupWatcher extends
AccumuloDaemonThread {
tException);
}
}
+ if (!tLists.assignments.isEmpty()) {
+ Manager.log.debug("[{}] sent {} assignment messages in {} ms",
store.name(),
+ tLists.assignments.size(), timer.elapsed(TimeUnit.MILLISECONDS));
+ }
}
private static void markDeadServerLogsAsClosed(WalStateManager mgr,