master: sync hashicorp raft leadership with seaweedfs/raft leader

When seaweedfs/raft elects a new leader, transfer hashicorp raft leadership
to the same node. This ensures both raft systems always have the same leader,
allowing dual-write to work correctly.

Changes:
- Add SyncHashicorpRaftLeadership() to transfer hashicorp raft leadership
- Call sync on seaweedfs/raft leader change event
- Only the current hashicorp raft leader can initiate transfer
This commit is contained in:
chrislu committed 2025-12-18 22:33:19 -08:00
1 parent cad5b8b281
commit bf04ddcae8
2 files changed
+37

No files matched your search

+2
View File
@@ -209,6 +209,8 @@ func (ms *MasterServer) SetRaftServer(raftServer *RaftServer) {
if ms.Topo.RaftServer.Leader() != "" {
glog.V(0).Infof("[%s] %s becomes leader.", ms.Topo.RaftServer.Name(), ms.Topo.RaftServer.Leader())
ms.Topo.LastLeaderChangeTime = time.Now()
// Sync hashicorp raft leadership to match seaweedfs/raft leader for dual-write
raftServer.SyncHashicorpRaftLeadership(ms.Topo.RaftServer.Leader())
}
})
raftServerName = fmt.Sprintf("[%s]", ms.Topo.RaftServer.Name())