You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2025/12/15 10:24:17 UTC

(hbase) branch master updated: HBASE-29501 IOException in SerialReplicationChecker.canPush causes entries to be pushed out of order

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

zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new dcb72cfee3e HBASE-29501 IOException in SerialReplicationChecker.canPush causes entries to be pushed out of order
dcb72cfee3e is described below

commit dcb72cfee3e844649051ceef7e0255c61263dee9
Author: Tomas Baltrunas <to...@arista.com>
AuthorDate: Fri Aug 1 20:42:04 2025 +0100

    HBASE-29501 IOException in SerialReplicationChecker.canPush causes entries to be pushed out of order
    
    Close #7547
    Close #7194
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
---
 .../replication/regionserver/SerialReplicationSourceWALReader.java   | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.java
index d1a2e8b5734..26d7934c41b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.java
@@ -96,6 +96,11 @@ public class SerialReplicationSourceWALReader extends ReplicationSourceWALReader
             break;
           }
           sleepMultiplier = sleep(sleepMultiplier);
+          // Always make sure to continue/break from the loop after handling the exception.
+          // Otherwise we will drop down below into logic to push the entry,
+          // but since we don't know if the entry can be pushed we may push
+          // the entry out of order, breaking serial replication guarantees.
+          continue;
         }
         // actually remove the entry.
         removeEntryFromStream(entry, entryStream, batch);