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 <[email protected]>
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++;