This is an automated email from the ASF dual-hosted git repository.

andor pushed a commit to branch HBASE-29081_rebased
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit c5e470dec29337c6cc41087fe0d1f7bb11c972ff
Author: Anuj Sharma <[email protected]>
AuthorDate: Tue Mar 10 03:07:22 2026 +0530

    HBASE-29961 Secondary cluster is unable to replayWAL for meta (#7854)
---
 .../hadoop/hbase/security/access/RegionReadOnlyController.java      | 4 +++-
 .../hbase/security/access/TestReadOnlyControllerRegionObserver.java | 6 ++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/RegionReadOnlyController.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/RegionReadOnlyController.java
index ecd2dcedd64..411b4459f12 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/RegionReadOnlyController.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/RegionReadOnlyController.java
@@ -339,7 +339,9 @@ public class RegionReadOnlyController extends 
AbstractReadOnlyController
   @Override
   public void preReplayWALs(ObserverContext<? extends 
RegionCoprocessorEnvironment> ctx,
     RegionInfo info, Path edits) throws IOException {
-    internalReadOnlyGuard();
+    if (!isOnMeta(ctx)) {
+      internalReadOnlyGuard();
+    }
     RegionObserver.super.preReplayWALs(ctx, info, edits);
   }
 
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestReadOnlyControllerRegionObserver.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestReadOnlyControllerRegionObserver.java
index b2e53860124..d7176b90055 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestReadOnlyControllerRegionObserver.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestReadOnlyControllerRegionObserver.java
@@ -454,6 +454,12 @@ public class TestReadOnlyControllerRegionObserver {
     regionReadOnlyController.preReplayWALs(ctx, info, edits);
   }
 
+  @Test
+  public void testPreReplayWALsReadOnlyMetaNoException() throws IOException {
+    mockOperationForMetaTable();
+    regionReadOnlyController.preReplayWALs(ctx, info, edits);
+  }
+
   @Test(expected = DoNotRetryIOException.class)
   public void testPreBulkLoadHFileReadOnlyException() throws IOException {
     regionReadOnlyController.preBulkLoadHFile(ctx, familyPaths);

Reply via email to