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 f4a857e1fa moves static metadata util methods to only places using 
them (#4639)
f4a857e1fa is described below

commit f4a857e1fa46d5de684e81aa5dd4a8a96e5097b2
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Wed Jun 5 17:25:40 2024 -0400

    moves static metadata util methods to only places using them (#4639)
    
    While investigating #3858, noticed these utility metadata utility
    methods that were not widely used.  Moved the static method where
    they are actually used to clean up the code.
---
 .../accumulo/server/util/MetadataTableUtil.java    | 53 ----------------------
 .../manager/upgrade/SplitRecovery12to13.java       | 42 +++++++++++++++--
 .../accumulo/test/MetaConstraintRetryIT.java       |  4 +-
 .../accumulo/test/functional/SplitRecoveryIT.java  | 18 +++++++-
 4 files changed, 58 insertions(+), 59 deletions(-)

diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
index e767bca510..4e38572dd3 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
@@ -31,11 +31,9 @@ import static 
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.Map.Entry;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -57,14 +55,11 @@ import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
-import org.apache.accumulo.core.fate.FateId;
 import org.apache.accumulo.core.gc.ReferenceFile;
 import org.apache.accumulo.core.lock.ServiceLock;
 import org.apache.accumulo.core.metadata.AccumuloTable;
-import org.apache.accumulo.core.metadata.ReferencedTabletFile;
 import org.apache.accumulo.core.metadata.StoredTabletFile;
 import org.apache.accumulo.core.metadata.schema.Ample;
-import org.apache.accumulo.core.metadata.schema.Ample.TabletMutator;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ClonedColumnFamily;
@@ -72,7 +67,6 @@ import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Cu
 import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
 import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.LastLocationColumnFamily;
 import 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily;
-import org.apache.accumulo.core.metadata.schema.MetadataTime;
 import org.apache.accumulo.core.metadata.schema.TabletDeletedException;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata;
 import org.apache.accumulo.core.metadata.schema.TabletsMetadata;
@@ -103,53 +97,6 @@ public class MetadataTableUtil {
         new Value(zooLock.getLockID().serialize(context.getZooKeeperRoot() + 
"/")));
   }
 
-  public static void update(ServerContext context, ServiceLock zooLock, 
Mutation m,
-      KeyExtent extent) {
-
-    if (zooLock != null) {
-      putLockID(context, zooLock, m);
-    }
-
-    String metaTable = Ample.DataLevel.of(extent.tableId()).metaTable();
-    while (true) {
-      try (BatchWriter writer = context.createBatchWriter(metaTable)) {
-        writer.addMutation(m);
-        writer.flush();
-        return;
-      } catch (MutationsRejectedException e) {
-
-        if (!e.getConstraintViolationSummaries().isEmpty()) {
-          // retrying when a CVE occurs is probably futile and can cause 
problems, see ACCUMULO-3096
-          throw new IllegalArgumentException(e);
-        }
-      } catch (TableNotFoundException e) {
-        logUpdateFailure(m, extent, e);
-      }
-
-      sleepUninterruptibly(1, TimeUnit.SECONDS);
-    }
-  }
-
-  private static void logUpdateFailure(Mutation m, KeyExtent extent, Exception 
e) {
-    log.error("Failed to write metadata updates for extent {} {}", extent, 
m.prettyPrint(), e);
-  }
-
-  public static Map<StoredTabletFile,DataFileValue> 
updateTabletDataFile(FateId fateId,
-      KeyExtent extent, Map<ReferencedTabletFile,DataFileValue> estSizes, 
MetadataTime time,
-      ServerContext context, ServiceLock zooLock) {
-    TabletMutator tablet = context.getAmple().mutateTablet(extent);
-    tablet.putTime(time);
-
-    Map<StoredTabletFile,DataFileValue> newFiles = new 
HashMap<>(estSizes.size());
-    estSizes.forEach((tf, dfv) -> {
-      tablet.putFile(tf, dfv);
-      tablet.putBulkFile(tf, fateId);
-      newFiles.put(tf.insert(), dfv);
-    });
-    tablet.mutate();
-    return newFiles;
-  }
-
   public static void deleteTable(TableId tableId, boolean insertDeletes, 
ServerContext context,
       ServiceLock lock) throws AccumuloException {
     try (
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/SplitRecovery12to13.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/SplitRecovery12to13.java
index 436f96c5d4..73d2b66bdf 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/SplitRecovery12to13.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/SplitRecovery12to13.java
@@ -18,6 +18,7 @@
  */
 package org.apache.accumulo.manager.upgrade;
 
+import static 
com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
 import static 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Upgrade12to13.OLD_PREV_ROW_COLUMN;
 import static 
org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Upgrade12to13.SPLIT_RATIO_COLUMN;
 
@@ -29,9 +30,13 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.accumulo.core.client.AccumuloException;
+import org.apache.accumulo.core.client.BatchWriter;
+import org.apache.accumulo.core.client.MutationsRejectedException;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.clientImpl.ScannerImpl;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
@@ -40,6 +45,7 @@ import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
+import org.apache.accumulo.core.lock.ServiceLock;
 import org.apache.accumulo.core.metadata.StoredTabletFile;
 import org.apache.accumulo.core.metadata.schema.Ample;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
@@ -203,7 +209,7 @@ public class SplitRecovery12to13 {
     Mutation m = TabletsSection.TabletColumnFamily.createPrevRowMutation(ke);
     SPLIT_RATIO_COLUMN.putDelete(m);
     OLD_PREV_ROW_COLUMN.putDelete(m);
-    MetadataTableUtil.update(context, null, m, 
KeyExtent.fromMetaRow(metadataEntry));
+    update(context, null, m, KeyExtent.fromMetaRow(metadataEntry));
   }
 
   public static void splitTablet(KeyExtent extent, Text oldPrevEndRow, double 
splitRatio,
@@ -217,7 +223,7 @@ public class SplitRecovery12to13 {
     ecids.forEach(ecid -> 
m.putDelete(TabletsSection.ExternalCompactionColumnFamily.STR_NAME,
         ecid.canonical()));
 
-    MetadataTableUtil.update(context, null, m, extent);
+    update(context, null, m, extent);
   }
 
   public static void finishSplit(Text metadataEntry,
@@ -236,7 +242,7 @@ public class SplitRecovery12to13 {
       m.putDelete(DataFileColumnFamily.NAME, pathToRemove.getMetadataText());
     }
 
-    MetadataTableUtil.update(context, null, m, 
KeyExtent.fromMetaRow(metadataEntry));
+    update(context, null, m, KeyExtent.fromMetaRow(metadataEntry));
   }
 
   public static void finishSplit(KeyExtent extent,
@@ -245,4 +251,34 @@ public class SplitRecovery12to13 {
     finishSplit(extent.toMetaRow(), datafileSizes, highDatafilesToRemove, 
context);
   }
 
+  public static void update(ServerContext context, ServiceLock zooLock, 
Mutation m,
+      KeyExtent extent) {
+
+    if (zooLock != null) {
+      MetadataTableUtil.putLockID(context, zooLock, m);
+    }
+
+    String metaTable = Ample.DataLevel.of(extent.tableId()).metaTable();
+    while (true) {
+      try (BatchWriter writer = context.createBatchWriter(metaTable)) {
+        writer.addMutation(m);
+        writer.flush();
+        return;
+      } catch (MutationsRejectedException e) {
+
+        if (!e.getConstraintViolationSummaries().isEmpty()) {
+          // retrying when a CVE occurs is probably futile and can cause 
problems, see ACCUMULO-3096
+          throw new IllegalArgumentException(e);
+        }
+      } catch (TableNotFoundException e) {
+        logUpdateFailure(m, extent, e);
+      }
+
+      sleepUninterruptibly(1, TimeUnit.SECONDS);
+    }
+  }
+
+  private static void logUpdateFailure(Mutation m, KeyExtent extent, Exception 
e) {
+    log.error("Failed to write metadata updates for extent {} {}", extent, 
m.prettyPrint(), e);
+  }
 }
diff --git 
a/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java 
b/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
index 2bf338bde9..6d08a6af49 100644
--- a/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
@@ -33,8 +33,8 @@ import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.metadata.AccumuloTable;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.harness.AccumuloClusterHarness;
+import org.apache.accumulo.manager.upgrade.SplitRecovery12to13;
 import org.apache.accumulo.server.ServerContext;
-import org.apache.accumulo.server.util.MetadataTableUtil;
 import org.junit.jupiter.api.Test;
 
 public class MetaConstraintRetryIT extends AccumuloClusterHarness {
@@ -58,7 +58,7 @@ public class MetaConstraintRetryIT extends 
AccumuloClusterHarness {
       // unknown columns should cause constraint violation
       m.put("badcolfam", "badcolqual", "3");
       var iae = assertThrows(IllegalArgumentException.class,
-          () -> MetadataTableUtil.update(context, null, m, extent));
+          () -> SplitRecovery12to13.update(context, null, m, extent));
       assertEquals(MutationsRejectedException.class, 
iae.getCause().getClass());
       var mre = (MutationsRejectedException) iae.getCause();
       assertFalse(mre.getConstraintViolationSummaries().isEmpty());
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java 
b/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
index 524464d9fa..88c3b2b894 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
@@ -74,6 +74,22 @@ import org.junit.jupiter.api.Test;
 
 public class SplitRecoveryIT extends ConfigurableMacBase {
 
+  public static Map<StoredTabletFile,DataFileValue> 
updateTabletDataFile(FateId fateId,
+      KeyExtent extent, Map<ReferencedTabletFile,DataFileValue> estSizes, 
MetadataTime time,
+      ServerContext context, ServiceLock zooLock) {
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    tablet.putTime(time);
+
+    Map<StoredTabletFile,DataFileValue> newFiles = new 
HashMap<>(estSizes.size());
+    estSizes.forEach((tf, dfv) -> {
+      tablet.putFile(tf, dfv);
+      tablet.putBulkFile(tf, fateId);
+      newFiles.put(tf.insert(), dfv);
+    });
+    tablet.mutate();
+    return newFiles;
+  }
+
   @Override
   protected Duration defaultTimeout() {
     return Duration.ofMinutes(1);
@@ -140,7 +156,7 @@ public class SplitRecoveryIT extends ConfigurableMacBase {
       FateId fateId =
           FateId.from(FateInstanceType.fromTableId(extent.tableId()), 
UUID.randomUUID());
       SortedMap<StoredTabletFile,DataFileValue> storedFiles =
-          new TreeMap<>(MetadataTableUtil.updateTabletDataFile(fateId, extent, 
dataFiles,
+          new TreeMap<>(updateTabletDataFile(fateId, extent, dataFiles,
               new MetadataTime(0, TimeType.LOGICAL), context, zl));
       if (i == extentToSplit) {
         splitDataFiles = storedFiles;

Reply via email to