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,

Reply via email to