You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by dl...@apache.org on 2023/05/31 11:32:38 UTC

[accumulo] branch elasticity updated: Require prev end row when setting tablet location (#3442)

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 <kt...@apache.org>
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);
       }