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)));

Reply via email to