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

dlmarion pushed a commit to branch elasticity
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/elasticity by this push:
     new 2782d1d5d2 Re-read tablet metadata after setting location (#3862)
2782d1d5d2 is described below

commit 2782d1d5d2f0f4f41fd387e0d451f9d4d4a22124
Author: Dave Marion <dlmar...@apache.org>
AuthorDate: Wed Oct 18 15:10:01 2023 -0400

    Re-read tablet metadata after setting location (#3862)
    
    Fixes #3358
---
 .../src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java | 5 +++++
 .../src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java     | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
index f4cac95747..3bbbd4c1eb 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
@@ -44,6 +44,7 @@ import org.apache.accumulo.server.problems.ProblemReports;
 import 
org.apache.accumulo.tserver.TabletServerResourceManager.TabletResourceManager;
 import org.apache.accumulo.tserver.managermessage.TabletStatusMessage;
 import org.apache.accumulo.tserver.tablet.Tablet;
+import org.apache.accumulo.tserver.tablet.Tablet.RefreshPurpose;
 import org.apache.hadoop.io.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -178,10 +179,14 @@ class AssignmentHandler implements Runnable {
           && !tablet.minorCompactNow(MinorCompactionReason.RECOVERY)) {
         throw new RuntimeException("Minor compaction after recovery fails for 
" + extent);
       }
+
       Assignment assignment =
           new Assignment(extent, server.getTabletSession(), 
tabletMetadata.getLast());
       TabletStateStore.setLocation(server.getContext(), assignment);
 
+      // refresh the tablet metadata after setting the location (See #3358)
+      tablet.refreshMetadata(RefreshPurpose.LOAD);
+
       synchronized (server.openingTablets) {
         synchronized (server.onlineTablets) {
           server.openingTablets.remove(extent);
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 5bdba6c364..608603cea5 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
@@ -1455,7 +1455,7 @@ public class Tablet extends TabletBase {
   }
 
   public enum RefreshPurpose {
-    MINC_COMPLETION, REFRESH_RPC, FLUSH_ID_UPDATE
+    MINC_COMPLETION, REFRESH_RPC, FLUSH_ID_UPDATE, LOAD
   }
 
   public void refreshMetadata(RefreshPurpose refreshPurpose) {

Reply via email to