This is an automated email from the ASF dual-hosted git repository.
zaynt4606 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/celeborn.git
The following commit(s) were added to refs/heads/main by this push:
new 90954f7236 [CELEBORN-2399] Fix HA worker heartbeat using
stateStartTime instead of actual time
90954f7236 is described below
commit 90954f7236c8f7a44ae9a583af12ea3c76d49616
Author: ewoodbury <[email protected]>
AuthorDate: Mon Aug 10 16:53:25 2026 +0800
[CELEBORN-2399] Fix HA worker heartbeat using stateStartTime instead of
actual time
### What changes were proposed in this pull request?
In HA `MetaHandler` for `WorkerHeartbeat`, pass
`request.getWorkerHeartbeatRequest().getTime()` into
`updateWorkerHeartbeatMeta` instead of `getWorkerStatus().getStateStartTime()`.
### Why are the changes needed?
`HAMasterMetaManager` correctly sets `.setTime(...)` when submitting the
Ratis request. After CELEBORN-1984, the apply path reads the wrong field.
`stateStartTime` is fixed when the worker entered Normal, so
`lastHeartbeat` never advances. Once `now > stateStartTime +
workerHeartbeatTimeout`, the HA master treats workers as lost despite regular
heartbeats.
Non-HA (`SingleMasterMetaManager`) is unaffected. `branch-0.6` still uses
`getTime()` and is unaffected. Affects `main` / `branch-0.7` (including
v0.7.0-rc0).
### Does this PR resolve a correctness bug?
- [ ] Yes
### Does this PR introduce _any_ user-facing change?
- [ ] Yes
### How was this patch tested?
Root-cause analysis of submit path (`HAMasterMetaManager` sets `.setTime`)
vs apply path (`MetaHandler` was reading `stateStartTime`). Verified the same
code path on `branch-0.6` already uses `getTime()`. Observed in HA testing on
v0.7 where workers were repeatedly marked lost after the heartbeat timeout.
(Should be cherry-picked to `branch-0.7` for 0.7.0 release)
Closes #3777 from ewoodbury/fix-ha-worker-heartbeat-time.
Authored-by: ewoodbury <[email protected]>
Signed-off-by: zhengtao <[email protected]>
AI-Contributed/Feature: 0/2
AI-Contributed/UT: 0/0
---
.../celeborn/service/deploy/master/clustermeta/ha/MetaHandler.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git
a/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MetaHandler.java
b/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MetaHandler.java
index 3c8e8fe0d0..86097117e8 100644
---
a/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MetaHandler.java
+++
b/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MetaHandler.java
@@ -243,7 +243,7 @@ public class MetaHandler {
fetchPort,
replicatePort,
diskInfos,
-
request.getWorkerHeartbeatRequest().getWorkerStatus().getStateStartTime(),
+ request.getWorkerHeartbeatRequest().getTime(),
workerStatus,
highWorkload);
break;