diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/Backend.java b/fe/fe-core/src/main/java/org/apache/doris/system/Backend.java index fc719c21f4..c6a06d1b13 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/system/Backend.java +++ b/fe/fe-core/src/main/java/org/apache/doris/system/Backend.java @@ -586,7 +586,7 @@ public class Backend implements Writable { * handle Backend's heartbeat response. * return true if any port changed, or alive state is changed. */ - public boolean handleHbResponse(BackendHbResponse hbResponse) { + public boolean handleHbResponse(BackendHbResponse hbResponse, boolean isReplay) { boolean isChanged = false; if (hbResponse.getStatus() == HbStatus.OK) { if (!this.version.equals(hbResponse.getVersion())) { @@ -632,7 +632,8 @@ public class Backend implements Writable { this.heartbeatFailureCounter = 0; } else { // Only set backend to dead if the heartbeat failure counter exceed threshold. - if (++this.heartbeatFailureCounter >= Config.max_backend_heartbeat_failure_tolerance_count) { + // And if it is a replay process, must set backend to dead. + if (isReplay || ++this.heartbeatFailureCounter >= Config.max_backend_heartbeat_failure_tolerance_count) { if (isAlive.compareAndSet(true, false)) { isChanged = true; LOG.warn("{} is dead,", this.toString()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java b/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java index ffd0269070..dc4c28217b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java @@ -166,7 +166,7 @@ public class HeartbeatMgr extends MasterDaemon { BackendHbResponse hbResponse = (BackendHbResponse) response; Backend be = nodeMgr.getBackend(hbResponse.getBeId()); if (be != null) { - boolean isChanged = be.handleHbResponse(hbResponse); + boolean isChanged = be.handleHbResponse(hbResponse, isReplay); if (hbResponse.getStatus() != HbStatus.OK) { // invalid all connections cached in ClientPool ClientPool.backendPool.clearPool(new TNetworkAddress(be.getHost(), be.getBePort()));