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 16:58:36 UTC

[accumulo] branch master updated: Fix #1242 - Update MasterMetadataUtil.getUpdateForTabletDataFile (#1243)

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 7953e11  Fix #1242 - Update MasterMetadataUtil.getUpdateForTabletDataFile (#1243)
7953e11 is described below

commit 7953e1191f50870e3d724db9088f6cbb728ef17e
Author: hkeebler <49...@users.noreply.github.com>
AuthorDate: Mon Jul 8 12:58:32 2019 -0400

    Fix #1242 - Update MasterMetadataUtil.getUpdateForTabletDataFile (#1243)
    
    update to use the ample api and removed unecessary null check
---
 .../accumulo/server/util/MasterMetadataUtil.java   | 90 ++++++++++------------
 1 file changed, 42 insertions(+), 48 deletions(-)

diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
index fde811b..7a88ba6 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
@@ -34,7 +34,6 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.clientImpl.ScannerImpl;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.TableId;
@@ -42,13 +41,10 @@ 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.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
-import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.LogColumnFamily;
-import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ScanFileColumnFamily;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata.LocationType;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.ColumnFQ;
@@ -70,32 +66,32 @@ public class MasterMetadataUtil {
       Map<Long,? extends Collection<FileRef>> bulkLoadedFiles, String time, long lastFlushID,
       long lastCompactID, ZooLock zooLock) {
 
-    TabletMutator mutator = context.getAmple().mutateTablet(extent);
-    mutator.putPrevEndRow(extent.getPrevEndRow());
-    mutator.putZooLock(zooLock);
-    mutator.putDir(path);
-    mutator.putTime(time);
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    tablet.putPrevEndRow(extent.getPrevEndRow());
+    tablet.putZooLock(zooLock);
+    tablet.putDir(path);
+    tablet.putTime(time);
 
     if (lastFlushID > 0)
-      mutator.putFlushId(lastFlushID);
+      tablet.putFlushId(lastFlushID);
 
     if (lastCompactID > 0)
-      mutator.putCompactionId(lastCompactID);
+      tablet.putCompactionId(lastCompactID);
 
     if (location != null) {
-      mutator.putLocation(location, LocationType.CURRENT);
-      mutator.deleteLocation(location, LocationType.FUTURE);
+      tablet.putLocation(location, LocationType.CURRENT);
+      tablet.deleteLocation(location, LocationType.FUTURE);
     }
 
-    datafileSizes.forEach(mutator::putFile);
+    datafileSizes.forEach(tablet::putFile);
 
     for (Entry<Long,? extends Collection<FileRef>> entry : bulkLoadedFiles.entrySet()) {
       for (FileRef ref : entry.getValue()) {
-        mutator.putBulkFile(ref, entry.getKey().longValue());
+        tablet.putBulkFile(ref, entry.getKey().longValue());
       }
     }
 
-    mutator.mutate();
+    tablet.mutate();
   }
 
   public static KeyExtent fixSplit(ServerContext context, Text metadataEntry,
@@ -212,7 +208,7 @@ public class MasterMetadataUtil {
 
     context.getAmple().putGcCandidates(extent.getTableId(), datafilesToDelete);
 
-    Ample.TabletMutator tablet = context.getAmple().mutateTablet(extent);
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
 
     datafilesToDelete.forEach(tablet::deleteFile);
     scanFiles.forEach(tablet::putScan);
@@ -247,61 +243,59 @@ public class MasterMetadataUtil {
       String address, ZooLock zooLock, Set<String> unusedWalLogs, TServerInstance lastLocation,
       long flushId) {
     if (extent.isRootTablet()) {
-      if (unusedWalLogs != null) {
-        updateRootTabletDataFile(context, unusedWalLogs);
-      }
-      return;
+      updateRootTabletDataFile(context, unusedWalLogs);
+    } else {
+      updateForTabletDataFile(context, extent, path, mergeFile, dfv, time, filesInUseByScans,
+          address, zooLock, unusedWalLogs, lastLocation, flushId);
     }
-    Mutation m = getUpdateForTabletDataFile(extent, path, mergeFile, dfv, time, filesInUseByScans,
-        address, zooLock, unusedWalLogs, lastLocation, flushId);
-    MetadataTableUtil.update(context, zooLock, m, extent);
+
   }
 
   /**
    * Update the data file for the root tablet
    */
   private static void updateRootTabletDataFile(ServerContext context, Set<String> unusedWalLogs) {
-    TabletMutator tablet = context.getAmple().mutateTablet(RootTable.EXTENT);
-    unusedWalLogs.forEach(tablet::deleteWal);
-    tablet.mutate();
+    if (unusedWalLogs != null) {
+      TabletMutator tablet = context.getAmple().mutateTablet(RootTable.EXTENT);
+      unusedWalLogs.forEach(tablet::deleteWal);
+      tablet.mutate();
+    }
   }
 
   /**
    * Create an update that updates a tablet
    *
-   * @return A Mutation to update a tablet from the given information
    */
-  private static Mutation getUpdateForTabletDataFile(KeyExtent extent, FileRef path,
+  private static void updateForTabletDataFile(ServerContext context, KeyExtent extent, FileRef path,
       FileRef mergeFile, DataFileValue dfv, String time, Set<FileRef> filesInUseByScans,
       String address, ZooLock zooLock, Set<String> unusedWalLogs, TServerInstance lastLocation,
       long flushId) {
-    Mutation m = new Mutation(extent.getMetadataEntry());
+
+    TabletMutator tablet = context.getAmple().mutateTablet(extent);
 
     if (dfv.getNumEntries() > 0) {
-      m.put(DataFileColumnFamily.NAME, path.meta(), new Value(dfv.encode()));
-      TabletsSection.ServerColumnFamily.TIME_COLUMN.put(m, new Value(time.getBytes(UTF_8)));
-      // stuff in this location
+      tablet.putFile(path, dfv);
+      tablet.putTime(time);
+
       TServerInstance self = getTServerInstance(address, zooLock);
-      self.putLastLocation(m);
-      // erase the old location
-      if (lastLocation != null && !lastLocation.equals(self))
-        lastLocation.clearLastLocation(m);
-    }
-    if (unusedWalLogs != null) {
-      for (String entry : unusedWalLogs) {
-        m.putDelete(LogColumnFamily.NAME, new Text(entry));
+      tablet.putLocation(self, LocationType.LAST);
+
+      // remove the old location
+      if (lastLocation != null && !lastLocation.equals(self)) {
+        tablet.deleteLocation(lastLocation, LocationType.LAST);
       }
     }
+    tablet.putFlushId(flushId);
 
-    for (FileRef scanFile : filesInUseByScans)
-      m.put(ScanFileColumnFamily.NAME, scanFile.meta(), new Value(new byte[0]));
+    if (mergeFile != null) {
+      tablet.deleteFile(mergeFile);
+    }
 
-    if (mergeFile != null)
-      m.putDelete(DataFileColumnFamily.NAME, mergeFile.meta());
+    unusedWalLogs.forEach(tablet::deleteWal);
+    filesInUseByScans.forEach(tablet::putScan);
 
-    TabletsSection.ServerColumnFamily.FLUSH_COLUMN.put(m,
-        new Value(Long.toString(flushId).getBytes(UTF_8)));
+    tablet.putZooLock(zooLock);
 
-    return m;
+    tablet.mutate();
   }
 }