This is an automated email from the ASF dual-hosted git repository. kturner pushed a commit to branch 2.1 in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push: new e67cff2db2 fixes split recovery for metadata tablet (#4137) e67cff2db2 is described below commit e67cff2db2a89ec203e96ad0b65183764c0f4342 Author: Keith Turner <ktur...@apache.org> AuthorDate: Tue Jan 9 16:23:56 2024 -0500 fixes split recovery for metadata tablet (#4137) When a metadata tablet splits it writes to the root table. The code that handles split recovery was always writing to the metadata table. Therefore if a tablet server was in the middle of splitting a metadata tablet and died, then it would not recover correctly. This change modifies the split recovery code to use the appropriate table. Noticed this while working on #4136 --- .../java/org/apache/accumulo/server/util/ManagerMetadataUtil.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java index 5d25027d87..c0b5e27fa6 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/ManagerMetadataUtil.java @@ -41,7 +41,6 @@ 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.zookeeper.ServiceLock; -import org.apache.accumulo.core.metadata.MetadataTable; import org.apache.accumulo.core.metadata.StoredTabletFile; import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.core.metadata.TabletFile; @@ -132,7 +131,8 @@ public class ManagerMetadataUtil { // check to see if prev tablet exist in metadata tablet Key prevRowKey = new Key(new Text(TabletsSection.encodeRow(tableId, metadataPrevEndRow))); - try (ScannerImpl scanner2 = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { + try (ScannerImpl scanner2 = + new ScannerImpl(context, Ample.DataLevel.of(tableId).metaTableId(), Authorizations.EMPTY)) { scanner2.setRange(new Range(prevRowKey, prevRowKey.followingKey(PartialKey.ROW))); if (scanner2.iterator().hasNext()) { @@ -145,7 +145,8 @@ public class ManagerMetadataUtil { SortedMap<StoredTabletFile,DataFileValue> lowDatafileSizes = new TreeMap<>(); Key rowKey = new Key(metadataEntry); - try (Scanner scanner3 = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { + try (Scanner scanner3 = new ScannerImpl(context, Ample.DataLevel.of(tableId).metaTableId(), + Authorizations.EMPTY)) { scanner3.fetchColumnFamily(DataFileColumnFamily.NAME); scanner3.setRange(new Range(rowKey, rowKey.followingKey(PartialKey.ROW)));