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

kturner 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 8f18d29f32 adds toggle for automatically setting lock on mutation 
(#4584)
8f18d29f32 is described below

commit 8f18d29f32e678a76a205e36e3acfc5ead2863ae
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Tue May 21 18:28:30 2024 -0400

    adds toggle for automatically setting lock on mutation (#4584)
    
    Merging tables in a table deletes tablets.  When tablets were
    being deleted they were automatically setting a lock, which
    could leave junk in the metadata table.  Added a toggle to
    turn off setting these on mutations.
---
 .../main/java/org/apache/accumulo/core/metadata/schema/Ample.java  | 6 ++++++
 .../accumulo/core/metadata/schema/TabletMetadataBuilder.java       | 5 +++++
 .../apache/accumulo/core/metadata/schema/TabletMutatorBase.java    | 7 +++++++
 .../accumulo/server/metadata/ConditionalTabletMutatorImpl.java     | 4 +++-
 .../org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java | 4 +++-
 .../org/apache/accumulo/server/metadata/TabletMutatorImpl.java     | 4 +++-
 .../org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java  | 4 ++++
 7 files changed, 31 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/Ample.java 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/Ample.java
index 7d7086649a..3c00d70f33 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/schema/Ample.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/schema/Ample.java
@@ -421,6 +421,12 @@ public interface Ample {
     T setUnSplittable(UnSplittableMetadata unSplittableMeta);
 
     T deleteUnSplittable();
+
+    /**
+     * By default the server lock is automatically added to mutations unless 
this method is set to
+     * false.
+     */
+    T automaticallyPutServerLock(boolean b);
   }
 
   interface TabletMutator extends TabletUpdates<TabletMutator> {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadataBuilder.java
 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadataBuilder.java
index 4121ad2005..eb924e7833 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadataBuilder.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadataBuilder.java
@@ -303,6 +303,11 @@ public class TabletMetadataBuilder implements 
Ample.TabletUpdates<TabletMetadata
     throw new UnsupportedOperationException();
   }
 
+  @Override
+  public TabletMetadataBuilder automaticallyPutServerLock(boolean b) {
+    throw new UnsupportedOperationException();
+  }
+
   /**
    * @param extraFetched Anything that was put on the builder will 
automatically be added to the
    *        fetched set. However, for the case where something was not put and 
it needs to be
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMutatorBase.java
 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMutatorBase.java
index f4ee38e28d..cf0208d497 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMutatorBase.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMutatorBase.java
@@ -64,6 +64,7 @@ public abstract class TabletMutatorBase<T extends 
Ample.TabletUpdates<T>>
   protected final Mutation mutation;
   protected AutoCloseable closeAfterMutate;
   protected boolean updatesEnabled = true;
+  protected boolean putServerLock = true;
 
   @SuppressWarnings("unchecked")
   private T getThis() {
@@ -360,6 +361,12 @@ public abstract class TabletMutatorBase<T extends 
Ample.TabletUpdates<T>>
     return getThis();
   }
 
+  @Override
+  public T automaticallyPutServerLock(boolean b) {
+    putServerLock = b;
+    return getThis();
+  }
+
   public void setCloseAfterMutate(AutoCloseable closeable) {
     this.closeAfterMutate = closeable;
   }
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletMutatorImpl.java
 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletMutatorImpl.java
index 7c3d9a5859..208fe4954c 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletMutatorImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletMutatorImpl.java
@@ -295,7 +295,9 @@ public class ConditionalTabletMutatorImpl extends 
TabletMutatorBase<Ample.Condit
               .setValue(encodePrevEndRow(extent.prevEndRow()).get());
       mutation.addCondition(c);
     }
-    this.putZooLock(context.getZooKeeperRoot(), lock);
+    if (putServerLock) {
+      this.putZooLock(context.getZooKeeperRoot(), lock);
+    }
     getMutation();
     mutationConsumer.accept(mutation);
     rejectionHandlerConsumer.accept(extent, rejectionCheck);
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
index 04711b5607..c970689bed 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
@@ -86,7 +86,9 @@ public class RootTabletMutatorImpl extends 
TabletMutatorBase<Ample.TabletMutator
   @Override
   public void mutate() {
 
-    this.putZooLock(this.context.getZooKeeperRoot(), lock);
+    if (putServerLock) {
+      this.putZooLock(this.context.getZooKeeperRoot(), lock);
+    }
     Mutation mutation = getMutation();
 
     MetadataConstraints metaConstraint = new MetadataConstraints();
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorImpl.java
 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorImpl.java
index 0a976a82cc..af360a1df6 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorImpl.java
@@ -45,7 +45,9 @@ class TabletMutatorImpl extends 
TabletMutatorBase<Ample.TabletMutator>
   @Override
   public void mutate() {
     try {
-      this.putZooLock(this.context.getZooKeeperRoot(), lock);
+      if (putServerLock) {
+        this.putZooLock(this.context.getZooKeeperRoot(), lock);
+      }
       writer.addMutation(getMutation());
 
       if (closeAfterMutate != null) {
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java
index 710b8779ad..3cb48a68b0 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/merge/DeleteTablets.java
@@ -107,6 +107,10 @@ public class DeleteTablets extends ManagerRepo {
         }
 
         tabletMutator.deleteAll(tabletMeta.getKeyValues().keySet());
+
+        // the entire tablet is being deleted, so do not want to add lock 
entry to the tablet
+        tabletMutator.automaticallyPutServerLock(false);
+
         // if the tablet no longer exists, then it was successful
         tabletMutator.submit(Ample.RejectionHandler.acceptAbsentTablet());
         submitted++;

Reply via email to