You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2019/07/08 17:06:51 UTC

[accumulo] branch master updated: Fix #1244 Update MetadataTableUtil to use the ample api (#1254)

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

kturner pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ca9cfe  Fix #1244 Update MetadataTableUtil to use the ample api (#1254)
0ca9cfe is described below

commit 0ca9cfe270b0e2a2b14f36ce2945eec96e7be704
Author: hkeebler <49...@users.noreply.github.com>
AuthorDate: Mon Jul 8 13:06:47 2019 -0400

    Fix #1244 Update MetadataTableUtil to use the ample api (#1254)
---
 .../accumulo/core/metadata/schema/Ample.java       |  6 +-
 .../server/metadata/TabletMutatorBase.java         | 18 ++++-
 .../accumulo/server/util/MetadataTableUtil.java    | 83 +++++++++++-----------
 3 files changed, 62 insertions(+), 45 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 ad1d6cf..1205a9d 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
@@ -132,9 +132,11 @@ public interface Ample {
 
     public TabletMutator putFile(FileMeta path, DataFileValue dfv);
 
+    public TabletMutator deleteFile(FileMeta path);
+
     public TabletMutator putScan(FileMeta path);
 
-    public TabletMutator deleteFile(FileMeta path);
+    public TabletMutator deleteScan(FileMeta path);
 
     public TabletMutator putCompactionId(long compactionId);
 
@@ -160,6 +162,8 @@ public interface Ample {
 
     public TabletMutator deleteBulkFile(Ample.FileMeta bulkref);
 
+    public TabletMutator putChopped();
+
     /**
      * This method persist (or queues for persisting) previous put and deletes against this object.
      * Unless this method is called, previous calls will never be persisted. The purpose of this
diff --git a/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorBase.java b/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorBase.java
index 9b4e755..3aaa3cf 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorBase.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/metadata/TabletMutatorBase.java
@@ -71,6 +71,13 @@ public abstract class TabletMutatorBase implements Ample.TabletMutator {
   }
 
   @Override
+  public Ample.TabletMutator deleteFile(Ample.FileMeta path) {
+    Preconditions.checkState(updatesEnabled, "Cannot make updates after calling mutate.");
+    mutation.putDelete(DataFileColumnFamily.NAME, path.meta());
+    return this;
+  }
+
+  @Override
   public Ample.TabletMutator putScan(Ample.FileMeta path) {
     Preconditions.checkState(updatesEnabled, "Cannot make updates after calling mutate.");
     mutation.put(ScanFileColumnFamily.NAME, path.meta(), new Value(new byte[0]));
@@ -78,9 +85,9 @@ public abstract class TabletMutatorBase implements Ample.TabletMutator {
   }
 
   @Override
-  public Ample.TabletMutator deleteFile(Ample.FileMeta path) {
+  public Ample.TabletMutator deleteScan(Ample.FileMeta path) {
     Preconditions.checkState(updatesEnabled, "Cannot make updates after calling mutate.");
-    mutation.putDelete(DataFileColumnFamily.NAME, path.meta());
+    mutation.putDelete(ScanFileColumnFamily.NAME, path.meta());
     return this;
   }
 
@@ -177,6 +184,13 @@ public abstract class TabletMutatorBase implements Ample.TabletMutator {
     return this;
   }
 
+  @Override
+  public Ample.TabletMutator putChopped() {
+    Preconditions.checkState(updatesEnabled, "Cannot make updates after calling mutate.");
+    TabletsSection.ChoppedColumnFamily.CHOPPED_COLUMN.put(mutation, new Value("chopped"));
+    return this;
+  }
+
   protected Mutation getMutation() {
     updatesEnabled = false;
     return mutation;
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 2c9a689..da72619 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
@@ -65,14 +65,13 @@ import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
-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;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ChoppedColumnFamily;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ClonedColumnFamily;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
-import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ScanFileColumnFamily;
 import org.apache.accumulo.core.metadata.schema.TabletDeletedException;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata;
 import org.apache.accumulo.core.metadata.schema.TabletsMetadata;
@@ -167,53 +166,53 @@ public class MetadataTableUtil {
   public static void updateTabletFlushID(KeyExtent extent, long flushID, ServerContext context,
       ZooLock zooLock) {
     if (!extent.isRootTablet()) {
-      Mutation m = new Mutation(extent.getMetadataEntry());
-      TabletsSection.ServerColumnFamily.FLUSH_COLUMN.put(m,
-          new Value((flushID + "").getBytes(UTF_8)));
-      update(context, zooLock, m, extent);
+      TabletMutator tablet = context.getAmple().mutateTablet(extent);
+      tablet.putFlushId(flushID);
+      tablet.putZooLock(zooLock);
+      tablet.mutate();
     }
   }
 
   public static void updateTabletCompactID(KeyExtent extent, long compactID, ServerContext context,
       ZooLock zooLock) {
     if (!extent.isRootTablet()) {
-      Mutation m = new Mutation(extent.getMetadataEntry());
-      TabletsSection.ServerColumnFamily.COMPACT_COLUMN.put(m,
-          new Value((compactID + "").getBytes(UTF_8)));
-      update(context, zooLock, m, extent);
+      TabletMutator tablet = context.getAmple().mutateTablet(extent);
+      tablet.putCompactionId(compactID);
+      tablet.putZooLock(zooLock);
+      tablet.mutate();
     }
   }
 
   public static void updateTabletDataFile(long tid, KeyExtent extent,
       Map<FileRef,DataFileValue> estSizes, String time, ServerContext context, ZooLock zooLock) {
-    Mutation m = new Mutation(extent.getMetadataEntry());
-    byte[] tidBytes = Long.toString(tid).getBytes(UTF_8);
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    tablet.putTime(time);
+    estSizes.forEach(tablet::putFile);
 
-    for (Entry<FileRef,DataFileValue> entry : estSizes.entrySet()) {
-      Text file = entry.getKey().meta();
-      m.put(DataFileColumnFamily.NAME, file, new Value(entry.getValue().encode()));
-      m.put(TabletsSection.BulkFileColumnFamily.NAME, file, new Value(tidBytes));
+    for (FileRef file : estSizes.keySet()) {
+      tablet.putBulkFile(file, tid);
     }
-    TabletsSection.ServerColumnFamily.TIME_COLUMN.put(m, new Value(time.getBytes(UTF_8)));
-    update(context, zooLock, m, extent);
+    tablet.putZooLock(zooLock);
+    tablet.mutate();
   }
 
   public static void updateTabletDir(KeyExtent extent, String newDir, ServerContext context,
-      ZooLock lock) {
-    Mutation m = new Mutation(extent.getMetadataEntry());
-    TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.put(m, new Value(newDir.getBytes(UTF_8)));
-    update(context, lock, m, extent);
+      ZooLock zooLock) {
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    tablet.putDir(newDir);
+    tablet.putZooLock(zooLock);
+    tablet.mutate();
   }
 
   public static void addTablet(KeyExtent extent, String path, ServerContext context, char timeType,
-      ZooLock lock) {
-    Mutation m = extent.getPrevRowUpdateMutation();
-
-    TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.put(m, new Value(path.getBytes(UTF_8)));
-    TabletsSection.ServerColumnFamily.TIME_COLUMN.put(m,
-        new Value((timeType + "0").getBytes(UTF_8)));
+      ZooLock zooLock) {
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    tablet.putPrevEndRow(extent.getPrevEndRow());
+    tablet.putDir(path);
+    tablet.putTime(timeType + "0");
+    tablet.putZooLock(zooLock);
+    tablet.mutate();
 
-    update(context, lock, m, extent);
   }
 
   public static void updateTabletVolumes(KeyExtent extent, List<LogEntry> logsToRemove,
@@ -229,7 +228,7 @@ public class MetadataTableUtil {
         throw new IllegalArgumentException("files not expected for " + extent);
     }
 
-    Ample.TabletMutator tabletMutator = context.getAmple().mutateTablet(extent);
+    TabletMutator tabletMutator = context.getAmple().mutateTablet(extent);
     logsToRemove.forEach(tabletMutator::deleteWal);
     logsToAdd.forEach(tabletMutator::putWal);
 
@@ -334,12 +333,10 @@ public class MetadataTableUtil {
 
   public static void removeScanFiles(KeyExtent extent, Set<FileRef> scanFiles,
       ServerContext context, ZooLock zooLock) {
-    Mutation m = new Mutation(extent.getMetadataEntry());
-
-    for (FileRef pathToRemove : scanFiles)
-      m.putDelete(ScanFileColumnFamily.NAME, pathToRemove.meta());
-
-    update(context, zooLock, m, extent);
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    scanFiles.forEach(tablet::deleteScan);
+    tablet.putZooLock(zooLock);
+    tablet.mutate();
   }
 
   public static void splitDatafiles(Text midRow, double splitRatio,
@@ -489,9 +486,10 @@ public class MetadataTableUtil {
 
   public static void removeUnusedWALEntries(ServerContext context, KeyExtent extent,
       final List<LogEntry> entries, ZooLock zooLock) {
-    Ample.TabletMutator tabletMutator = context.getAmple().mutateTablet(extent);
-    entries.forEach(tabletMutator::deleteWal);
-    tabletMutator.putZooLock(zooLock);
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    entries.forEach(tablet::deleteWal);
+    tablet.putZooLock(zooLock);
+    tablet.mutate();
   }
 
   private static void getFiles(Set<String> files, Collection<String> tabletFiles,
@@ -717,9 +715,10 @@ public class MetadataTableUtil {
   }
 
   public static void chopped(ServerContext context, KeyExtent extent, ZooLock zooLock) {
-    Mutation m = new Mutation(extent.getMetadataEntry());
-    ChoppedColumnFamily.CHOPPED_COLUMN.put(m, new Value("chopped".getBytes(UTF_8)));
-    update(context, zooLock, m, extent);
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    tablet.putChopped();
+    tablet.putZooLock(zooLock);
+    tablet.mutate();
   }
 
   public static void removeBulkLoadEntries(AccumuloClient client, TableId tableId, long tid)