This is an automated email from the ASF dual-hosted git repository.

kturner 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 90e0b9341b Uses cached tserver session id in more places (#3647)
90e0b9341b is described below

commit 90e0b9341bf7c9b7de902496e1853591611be019
Author: Keith Turner <[email protected]>
AuthorDate: Mon Jul 24 17:42:59 2023 -0400

    Uses cached tserver session id in more places (#3647)
    
    re #3633
---
 .../accumulo/server/util/ManagerMetadataUtil.java  | 35 +++++++---------------
 .../org/apache/accumulo/tserver/TabletServer.java  |  7 +++--
 .../accumulo/tserver/UnloadTabletHandler.java      |  8 +----
 .../accumulo/tserver/tablet/DatafileManager.java   |  2 +-
 .../org/apache/accumulo/tserver/tablet/Tablet.java |  4 +--
 5 files changed, 18 insertions(+), 38 deletions(-)

diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java
index c042ece5e6..6073822e23 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java
@@ -18,8 +18,6 @@
  */
 package org.apache.accumulo.server.util;
 
-import static 
org.apache.accumulo.core.util.UtilWaitThread.sleepUninterruptibly;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -30,7 +28,6 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.Scanner;
@@ -60,7 +57,6 @@ import 
org.apache.accumulo.core.metadata.schema.TabletMetadata.Location;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.hadoop.io.Text;
-import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -178,21 +174,11 @@ public class ManagerMetadataUtil {
     }
   }
 
-  private static TServerInstance getTServerInstance(String address, 
ServiceLock zooLock) {
-    while (true) {
-      try {
-        return new TServerInstance(address, zooLock.getSessionId());
-      } catch (KeeperException | InterruptedException e) {
-        log.error("{}", e.getMessage(), e);
-      }
-      sleepUninterruptibly(1, TimeUnit.SECONDS);
-    }
-  }
-
   public static void replaceDatafiles(ServerContext context, KeyExtent extent,
       Set<StoredTabletFile> datafilesToDelete, Set<StoredTabletFile> scanFiles,
-      Optional<StoredTabletFile> path, Long compactionId, DataFileValue size, 
String address,
-      Location lastLocation, ServiceLock zooLock, 
Optional<ExternalCompactionId> ecid) {
+      Optional<StoredTabletFile> path, Long compactionId, DataFileValue size,
+      TServerInstance tServerInstance, Location lastLocation, ServiceLock 
zooLock,
+      Optional<ExternalCompactionId> ecid) {
 
     context.getAmple().putGcCandidates(extent.tableId(), datafilesToDelete);
 
@@ -209,7 +195,7 @@ public class ManagerMetadataUtil {
       tablet.putCompactionId(compactionId);
     }
 
-    updateLastForCompactionMode(context, tablet, lastLocation, address, 
zooLock);
+    updateLastForCompactionMode(context, tablet, lastLocation, 
tServerInstance);
 
     if (ecid.isPresent()) {
       tablet.deleteExternalCompaction(ecid.orElseThrow());
@@ -225,8 +211,8 @@ public class ManagerMetadataUtil {
    */
   public static Optional<StoredTabletFile> updateTabletDataFile(ServerContext 
context,
       KeyExtent extent, TabletFile newDatafile, DataFileValue dfv, 
MetadataTime time,
-      String address, ServiceLock zooLock, Set<String> unusedWalLogs, Location 
lastLocation,
-      long flushId) {
+      TServerInstance tServerInstance, ServiceLock zooLock, Set<String> 
unusedWalLogs,
+      Location lastLocation, long flushId) {
 
     TabletMutator tablet = context.getAmple().mutateTablet(extent);
     // if there are no entries, the path doesn't get stored in metadata table, 
only the flush ID
@@ -238,7 +224,7 @@ public class ManagerMetadataUtil {
       tablet.putTime(time);
       newFile = Optional.of(newDatafile.insert());
 
-      updateLastForCompactionMode(context, tablet, lastLocation, address, 
zooLock);
+      updateLastForCompactionMode(context, tablet, lastLocation, 
tServerInstance);
     }
     tablet.putFlushId(flushId);
 
@@ -278,15 +264,14 @@ public class ManagerMetadataUtil {
    * @param context The server context
    * @param tabletMutator The mutator being built
    * @param lastLocation The last location
-   * @param address The server address
-   * @param zooLock The zookeeper lock
+   * @param tServerInstance The server address
    */
   public static void updateLastForCompactionMode(ClientContext context, 
TabletMutator tabletMutator,
-      Location lastLocation, String address, ServiceLock zooLock) {
+      Location lastLocation, TServerInstance tServerInstance) {
     // if the location mode is 'compaction', then preserve the current 
compaction location in the
     // last location value
     if 
("compaction".equals(context.getConfiguration().get(Property.TSERV_LAST_LOCATION_MODE)))
 {
-      Location newLocation = Location.last(getTServerInstance(address, 
zooLock));
+      Location newLocation = Location.last(tServerInstance);
       updateLocation(tabletMutator, lastLocation, newLocation);
     }
   }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 46bbbb5480..08287c1e08 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -217,7 +217,7 @@ public class TabletServer extends AbstractServer implements 
TabletHostingServer
 
   private final BlockingDeque<ManagerMessage> managerMessages = new 
LinkedBlockingDeque<>();
 
-  HostAndPort clientAddress;
+  volatile HostAndPort clientAddress;
 
   private volatile boolean serverStopRequested = false;
   private volatile boolean shutdownComplete = false;
@@ -230,7 +230,7 @@ public class TabletServer extends AbstractServer implements 
TabletHostingServer
   private DistributedWorkQueue bulkFailedCopyQ;
 
   private String lockID;
-  private long lockSessionId = -1;
+  private volatile long lockSessionId = -1;
 
   public static final AtomicLong seekCount = new AtomicLong(0);
 
@@ -705,10 +705,11 @@ public class TabletServer extends AbstractServer 
implements TabletHostingServer
         zoo.putPersistentData(zLockPath.toString(), new byte[0], 
NodeExistsPolicy.SKIP);
 
         if (tabletServerLock.tryLock(lw, lockContent)) {
-          log.debug("Obtained tablet server lock {}", 
tabletServerLock.getLockPath());
           lockID = tabletServerLock.getLockID()
               .serialize(getContext().getZooKeeperRoot() + Constants.ZTSERVERS 
+ "/");
           lockSessionId = tabletServerLock.getSessionId();
+          log.debug("Obtained tablet server lock {} {}", 
tabletServerLock.getLockPath(),
+              getTabletSession());
           return;
         }
         log.info("Waiting for tablet server lock");
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 1eaeb5acf3..ee941803b9 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
@@ -32,7 +32,6 @@ import 
org.apache.accumulo.server.manager.state.DistributedStoreException;
 import org.apache.accumulo.server.manager.state.TabletStateStore;
 import org.apache.accumulo.tserver.managermessage.TabletStatusMessage;
 import org.apache.accumulo.tserver.tablet.Tablet;
-import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -109,8 +108,7 @@ class UnloadTabletHandler implements Runnable {
     server.onlineTablets.remove(extent);
 
     try {
-      TServerInstance instance =
-          new TServerInstance(server.clientAddress, 
server.getLock().getSessionId());
+      TServerInstance instance = server.getTabletSession();
       TabletLocationState tls = null;
       try {
         tls = new TabletLocationState(extent, null, 
Location.current(instance), null, null, null,
@@ -128,10 +126,6 @@ class UnloadTabletHandler implements Runnable {
       }
     } catch (DistributedStoreException ex) {
       log.warn("Unable to update storage", ex);
-    } catch (KeeperException e) {
-      log.warn("Unable determine our zookeeper session information", e);
-    } catch (InterruptedException e) {
-      log.warn("Interrupted while getting our zookeeper session information", 
e);
     }
 
     // tell the manager how it went
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
index 5b349c3f67..75fd9f79f8 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
@@ -513,7 +513,7 @@ class DatafileManager {
       }
       ManagerMetadataUtil.replaceDatafiles(tablet.getContext(), extent, 
oldDatafiles,
           filesInUseByScans, newFile, compactionIdToWrite, dfv,
-          tablet.getTabletServer().getClientAddressString(), lastLocation,
+          tablet.getTabletServer().getTabletSession(), lastLocation,
           tablet.getTabletServer().getLock(), ecid);
       tablet.setLastCompactionID(compactionIdToWrite);
       removeFilesAfterScan(filesInUseByScans);
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 251d9df30b..cfc36719e2 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -2073,8 +2073,8 @@ public class Tablet extends TabletBase {
 
       return 
ManagerMetadataUtil.updateTabletDataFile(getTabletServer().getContext(), extent,
           newDatafile, dfv, tabletTime.getMetadataTime(persistedTime),
-          tabletServer.getClientAddressString(), tabletServer.getLock(), 
unusedWalLogs,
-          lastLocation, flushId);
+          tabletServer.getTabletSession(), tabletServer.getLock(), 
unusedWalLogs, lastLocation,
+          flushId);
     }
 
   }

Reply via email to