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 5aca4f67bc simplifies handling of time in unload handler (#4548)
5aca4f67bc is described below

commit 5aca4f67bc18d221e766a9aec17e6dae0e153ea5
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Fri May 10 16:53:01 2024 -0400

    simplifies handling of time in unload handler (#4548)
---
 .../org/apache/accumulo/core/util/time/SteadyTime.java |  5 +++++
 .../apache/accumulo/tserver/TabletClientHandler.java   |  5 +++--
 .../apache/accumulo/tserver/UnloadTabletHandler.java   | 18 ++++++++----------
 3 files changed, 16 insertions(+), 12 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/util/time/SteadyTime.java 
b/core/src/main/java/org/apache/accumulo/core/util/time/SteadyTime.java
index 4007b514c0..d16f15c201 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/time/SteadyTime.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/time/SteadyTime.java
@@ -56,6 +56,10 @@ public class SteadyTime implements Comparable<SteadyTime> {
     return time.minus(other.getDuration());
   }
 
+  public SteadyTime plus(Duration other) {
+    return SteadyTime.from(time.plus(other));
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {
@@ -90,4 +94,5 @@ public class SteadyTime implements Comparable<SteadyTime> {
   public static SteadyTime from(Duration time) {
     return new SteadyTime(time);
   }
+
 }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
index 7a6358b2b0..af16beed4c 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
@@ -103,6 +103,7 @@ import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.Halt;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.threads.Threads;
+import org.apache.accumulo.core.util.time.SteadyTime;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.compaction.CompactionInfo;
 import org.apache.accumulo.server.compaction.FileCompactor;
@@ -1075,8 +1076,8 @@ public class TabletClientHandler implements 
TabletServerClientService.Iface,
 
     KeyExtent extent = KeyExtent.fromThrift(textent);
 
-    server.resourceManager.addMigration(extent,
-        new UnloadTabletHandler(server, extent, goal, requestTime));
+    server.resourceManager.addMigration(extent, new 
UnloadTabletHandler(server, extent, goal,
+        SteadyTime.from(requestTime, TimeUnit.MILLISECONDS)));
   }
 
   @Override
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
index 1458901202..27c1048b24 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
@@ -18,11 +18,6 @@
  */
 package org.apache.accumulo.tserver;
 
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static java.util.concurrent.TimeUnit.NANOSECONDS;
-
-import java.util.concurrent.TimeUnit;
-
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.manager.thrift.TabletLoadState;
@@ -31,6 +26,7 @@ import org.apache.accumulo.core.metadata.TabletLocationState;
 import 
org.apache.accumulo.core.metadata.TabletLocationState.BadLocationStateException;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata.Location;
 import org.apache.accumulo.core.tablet.thrift.TUnloadTabletGoal;
+import org.apache.accumulo.core.util.time.NanoTime;
 import org.apache.accumulo.core.util.time.SteadyTime;
 import org.apache.accumulo.server.manager.state.DistributedStoreException;
 import org.apache.accumulo.server.manager.state.TabletStateStore;
@@ -43,15 +39,17 @@ class UnloadTabletHandler implements Runnable {
   private static final Logger log = 
LoggerFactory.getLogger(UnloadTabletHandler.class);
   private final KeyExtent extent;
   private final TUnloadTabletGoal goalState;
-  private final long requestTimeSkew;
+  private final SteadyTime requestTime;
+  private final NanoTime createTime;
   private final TabletServer server;
 
   public UnloadTabletHandler(TabletServer server, KeyExtent extent, 
TUnloadTabletGoal goalState,
-      long requestTime) {
+      SteadyTime requestTime) {
     this.extent = extent;
     this.goalState = goalState;
     this.server = server;
-    this.requestTimeSkew = requestTime - 
NANOSECONDS.toMillis(System.nanoTime());
+    this.requestTime = requestTime;
+    this.createTime = NanoTime.now();
   }
 
   @Override
@@ -124,8 +122,8 @@ class UnloadTabletHandler implements Runnable {
               && 
!server.getConfiguration().getBoolean(Property.MANAGER_METADATA_SUSPENDABLE))) {
         TabletStateStore.unassign(server.getContext(), tls, null);
       } else {
-        TabletStateStore.suspend(server.getContext(), tls, null, 
SteadyTime.from(
-            requestTimeSkew + NANOSECONDS.toMillis(System.nanoTime()), 
TimeUnit.MILLISECONDS));
+        TabletStateStore.suspend(server.getContext(), tls, null,
+            requestTime.plus(createTime.elapsed()));
       }
     } catch (DistributedStoreException ex) {
       log.warn("Unable to update storage", ex);

Reply via email to