This repository was archived by the owner on Feb 18, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 938
This repository was archived by the owner on Feb 18, 2025. It is now read-only.
API response of api/status to a follower node in raft mode returns RaftHealthyMembers field of null #1433
Copy link
Copy link
Open
Description
Background
Topology
Raft mode with:
- 192.168.7.50: Follower
- 192.168.7.51: Follower
- 192.168.7.52: Leader
Request API
api/status
Response Example
Followers:
{
"Code": "OK",
"Message": "Application node is healthy",
"Details": {
"Healthy": true,
"Hostname": "ecs-22dfc66mki113jo2941m",
"Token": "76987b1fdac8522b2867b0637b30f64e437d30a42866d3a21ce9920a6772ba60",
"IsActiveNode": false,
"ActiveNode": {
"Hostname": "192.168.7.52:10008",
"Token": "",
"AppVersion": "",
"FirstSeenActive": "",
"LastSeenActive": "",
"ExtraInfo": "",
"Command": "",
"DBBackend": "",
"LastReported": "0001-01-01T00:00:00Z"
},
"Error": null,
"AvailableNodes": [{
"Hostname": "ecs-22dfc66mki113jo2941m",
"Token": "76987b1fdac8522b2867b0637b30f64e437d30a42866d3a21ce9920a6772ba60",
"AppVersion": "3.2.6",
"FirstSeenActive": "2022-03-17T09:35:29Z",
"LastSeenActive": "2022-03-17T12:27:50Z",
"ExtraInfo": "",
"Command": "",
"DBBackend": "/usr/local/orchestrator/orchestrator.sqlite3",
"LastReported": "0001-01-01T00:00:00Z"
}],
"RaftLeader": "192.168.7.52:10008",
"IsRaftLeader": false,
"RaftLeaderURI": "http://192.168.7.52:3000",
"RaftAdvertise": "192.168.7.51",
"RaftHealthyMembers": null
}
}
Leader:
{
"Code": "OK",
"Message": "Application node is healthy",
"Details": {
"Healthy": true,
"Hostname": "ecs-4rn1v6e2772s1rry7guq",
"Token": "1ccf60cf5a82b4c24a55fdcf28926ebb12fde4cbf17cbb3c88efd616e85e7069",
"IsActiveNode": true,
"ActiveNode": {
"Hostname": "192.168.7.52:10008",
"Token": "",
"AppVersion": "",
"FirstSeenActive": "",
"LastSeenActive": "",
"ExtraInfo": "",
"Command": "",
"DBBackend": "",
"LastReported": "0001-01-01T00:00:00Z"
},
"Error": null,
"AvailableNodes": [{
"Hostname": "ecs-4rn1v6e2772s1rry7guq",
"Token": "1ccf60cf5a82b4c24a55fdcf28926ebb12fde4cbf17cbb3c88efd616e85e7069",
"AppVersion": "3.2.6",
"FirstSeenActive": "2022-03-17T09:35:29Z",
"LastSeenActive": "2022-03-17T12:30:26Z",
"ExtraInfo": "",
"Command": "",
"DBBackend": "/usr/local/orchestrator/orchestrator.sqlite3",
"LastReported": "0001-01-01T00:00:00Z"
}],
"RaftLeader": "192.168.7.52:10008",
"IsRaftLeader": true,
"RaftLeaderURI": "http://192.168.7.52:3000",
"RaftAdvertise": "192.168.7.52",
"RaftHealthyMembers": ["192.168.7.52", "192.168.7.51", "192.168.7.50"]
}
}
Problems
When an API of status check called for followers, it gaves field RaftHealthyMembers
null which is confused.
Expect
When an API of status check called for followers, it gaves field RaftHealthyMembers
same result of leader node.
Solution
Make a replication of request to leader node when status check API called and get RaftHealthyMembers
from it to replace follower one.
Metadata
Metadata
Assignees
Labels
No labels