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 53336d23b4 Metadata table bulk file columns deleted on upgrade (#4725)
53336d23b4 is described below

commit 53336d23b4c2525fee0878bcc39bbafed87a5828
Author: Kevin Rathbun <43969518+kevinrr...@users.noreply.github.com>
AuthorDate: Fri Jul 5 14:25:07 2024 -0400

    Metadata table bulk file columns deleted on upgrade (#4725)
    
    Deletes the bulk file columns from the metadata table on upgrade to 4.x, if 
they exist.
    closes #4637, related to #4587
---
 .../core/metadata/schema/MetadataSchema.java       |  1 -
 .../accumulo/manager/upgrade/Upgrader12to13.java   | 29 +++++++++++++++++++++-
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/MetadataSchema.java
 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/MetadataSchema.java
index 17dd27fe5d..64dcb95243 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/MetadataSchema.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/MetadataSchema.java
@@ -347,7 +347,6 @@ public class MetadataSchema {
       }
 
       public static FateId getBulkLoadTid(String vs) {
-        // ELASTICITY_TODO issue 4044 - May need to introduce code in upgrade 
to handle old format.
         return FateId.from(vs);
       }
     }
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader12to13.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader12to13.java
index 4071d64180..6d89ebc8ca 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader12to13.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader12to13.java
@@ -105,6 +105,8 @@ public class Upgrader12to13 implements Upgrader {
     removeMetaDataBulkLoadFilter(context, AccumuloTable.METADATA.tableId());
     LOG.info("Removing compact columns from user tables");
     removeCompactColumnsFromTable(context, AccumuloTable.METADATA.tableName());
+    LOG.info("Removing bulk file columns from metadata table");
+    removeBulkFileColumnsFromTable(context, 
AccumuloTable.METADATA.tableName());
   }
 
   private static void addCompactionsNode(ServerContext context) {
@@ -196,6 +198,31 @@ public class Upgrader12to13 implements Upgrader {
     }
   }
 
+  private void removeBulkFileColumnsFromTable(ServerContext context, String 
tableName) {
+    // FATE transaction ids have changed from 3.x to 4.x which are used as the 
value for the bulk
+    // file column. FATE ops won't persist through upgrade, so these columns 
can be safely deleted
+    // if they exist.
+    try (var scanner = context.createScanner(tableName);
+        var writer = context.createBatchWriter(tableName)) {
+      scanner.setRange(MetadataSchema.TabletsSection.getRange());
+      scanner.fetchColumnFamily(TabletsSection.BulkFileColumnFamily.NAME);
+      for (Map.Entry<Key,Value> entry : scanner) {
+        var key = entry.getKey();
+        Mutation m = new Mutation(key.getRow());
+        Preconditions.checkState(
+            
key.getColumnFamily().equals(TabletsSection.BulkFileColumnFamily.NAME),
+            "Expected family %s, saw %s ", 
TabletsSection.BulkFileColumnFamily.NAME,
+            key.getColumnFamily());
+        Preconditions.checkState(key.getColumnVisibilityData().length() == 0,
+            "Expected empty visibility, saw %s ", 
key.getColumnVisibilityData());
+        m.putDelete(key.getColumnFamily(), key.getColumnQualifier());
+        writer.addMutation(m);
+      }
+    } catch (Exception e) {
+      throw new IllegalStateException(e);
+    }
+  }
+
   private void removeUnusedZKNodes(ServerContext context) {
     try {
       final String zkRoot = ZooUtil.getRoot(context.getInstanceID());
@@ -281,7 +308,7 @@ public class Upgrader12to13 implements Upgrader {
         Mutation m = new Mutation(key.getRow());
         
Preconditions.checkState(key.getColumnFamily().equals(ExternalCompactionColumnFamily.NAME),
             "Expected family %s, saw %s ", ExternalCompactionColumnFamily.NAME,
-            key.getColumnVisibilityData());
+            key.getColumnFamily());
         Preconditions.checkState(key.getColumnVisibilityData().length() == 0,
             "Expected empty visibility, saw %s ", 
key.getColumnVisibilityData());
         m.putDelete(key.getColumnFamily(), key.getColumnQualifier());

Reply via email to