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);
}
}