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