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 4b291b9ee6 Require prev end row when setting tablet location (#3442)
4b291b9ee6 is described below

commit 4b291b9ee63059e7af27e8967fdb1af38b25661b
Author: Keith Turner <[email protected]>
AuthorDate: Wed May 31 07:32:33 2023 -0400

    Require prev end row when setting tablet location (#3442)
---
 .../accumulo/server/manager/state/AbstractTabletStateStore.java   | 8 +++++---
 .../apache/accumulo/server/manager/state/MetaDataStateStore.java  | 3 ++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/AbstractTabletStateStore.java
 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/AbstractTabletStateStore.java
index 2fa80a0750..a0ffa8bc28 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/AbstractTabletStateStore.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/AbstractTabletStateStore.java
@@ -52,6 +52,7 @@ public abstract class AbstractTabletStateStore implements 
TabletStateStore {
         var conditionalMutator = tabletsMutator.mutateTablet(assignment.tablet)
             .requireAbsentOperation()
             .requireLocation(TabletMetadata.Location.future(assignment.server))
+            .requirePrevEndRow(assignment.tablet.prevEndRow())
             .putLocation(TabletMetadata.Location.current(assignment.server))
             
.deleteLocation(TabletMetadata.Location.future(assignment.server)).deleteSuspension();
 
@@ -81,8 +82,8 @@ public abstract class AbstractTabletStateStore implements 
TabletStateStore {
     try (var tabletsMutator = ample.conditionallyMutateTablets()) {
       for (Assignment assignment : assignments) {
         tabletsMutator.mutateTablet(assignment.tablet).requireAbsentOperation()
-            .requireAbsentLocation().deleteSuspension()
-            .putLocation(TabletMetadata.Location.future(assignment.server))
+            
.requireAbsentLocation().requirePrevEndRow(assignment.tablet.prevEndRow())
+            
.deleteSuspension().putLocation(TabletMetadata.Location.future(assignment.server))
             .submit(tabletMetadata -> {
               
Preconditions.checkArgument(tabletMetadata.getExtent().equals(assignment.tablet));
               return tabletMetadata.getLocation() != null && 
tabletMetadata.getLocation()
@@ -123,7 +124,8 @@ public abstract class AbstractTabletStateStore implements 
TabletStateStore {
       throws DistributedStoreException {
     try (var tabletsMutator = ample.conditionallyMutateTablets()) {
       for (TabletMetadata tm : tablets) {
-        var tabletMutator = 
tabletsMutator.mutateTablet(tm.getExtent()).requireAbsentOperation();
+        var tabletMutator = 
tabletsMutator.mutateTablet(tm.getExtent()).requireAbsentOperation()
+            .requirePrevEndRow(tm.getExtent().prevEndRow());
 
         if (tm.hasCurrent()) {
           tabletMutator.requireLocation(tm.getLocation());
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
index 024751444f..9874928885 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/MetaDataStateStore.java
@@ -61,7 +61,8 @@ class MetaDataStateStore extends AbstractTabletStateStore 
implements TabletState
         }
 
         // ELASTICITY_TODO pending #3314, add conditional mutation check that 
tls.suspend exists
-        
tabletsMutator.mutateTablet(tm.getExtent()).requireAbsentOperation().deleteSuspension()
+        tabletsMutator.mutateTablet(tm.getExtent()).requireAbsentOperation()
+            .requirePrevEndRow(tm.getExtent().prevEndRow()).deleteSuspension()
             .submit(tabletMetadata -> tabletMetadata.getSuspend() == null);
       }
 

Reply via email to