Skip to content

RBMC: Only allow failovers after full sync #99

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: 1120
Choose a base branch
from

Conversation

spinler
Copy link
Contributor

@spinler spinler commented Jun 17, 2025

After the active BMC determined redundancy could be enabled, it was setting the 'RedundancyEnabled' and 'FailoversAllowed' properties to true and then starting a full sync.

However, it is not desired to actually allow a failover to occur until the full sync is complete. So, add a new check into the code that calculates failovers allowed to also check for the full sync being complete.

The flag that tracks if the full sync is complete lasts until redundancy is disabled.

Tested:
Traces during initial full sync that show failovers not being allowed:

phosphor-rbmc-state-manager[1516]: Finished waiting for obmc-bmc-active.target to start (result = active)
phosphor-rbmc-state-manager[1516]: Done waiting for sibling steady state. State = xyz.openbmc_project.State.BMC.BMCState.Ready
phosphor-rbmc-state-manager[1516]: Enabling redundancy
phosphor-rbmc-state-manager[1516]: Failovers not allowed because A full sync hasn't been completed
phosphor-rbmc-state-manager[1516]: Starting full sync and waiting for completion
phosphor-rbmc-state-manager[1516]: Full sync completed with status xyz.openbmc_project.Control.SyncBMCData.FullSyncStatus.FullSyncCompleted
phosphor-rbmc-state-manager[1516]: Changing failovers to allowed

rbmctool output during that time:

Local BMC
-----------------------------
Role:                Active
BMC Position:        0
Redundancy Enabled:  true
BMC State:           Ready
Failovers Allowed:   false
FW version hash:     7969307F
Provisioned:         true
Role Reason:         Sibling is already passive
Reasons failovers are not allowed:
    A full sync hasn't been completed

Change-Id: I14dedd43619fffdeea11449319b681f8b95a1698

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ifad448a1cea06971c99928180eca55d8bb82467b
@spinler spinler force-pushed the fo_allowed_after_sync branch from d7995d1 to b70abd2 Compare June 17, 2025 19:01
After the active BMC determined redundancy could be enabled, it was
setting the 'RedundancyEnabled' and 'FailoversAllowed' properties to
true and then starting a full sync.

However, it is not desired to actually allow a failover to occur until
the full sync is complete.  So, add a new check into the code that
calculates failovers allowed to also check for the full sync being
complete.

The flag that tracks if the full sync is complete lasts until redundancy
is disabled.

Tested:
Traces during initial full sync that show failovers not being allowed:
```
phosphor-rbmc-state-manager[1516]: Finished waiting for obmc-bmc-active.target to start (result = active)
phosphor-rbmc-state-manager[1516]: Done waiting for sibling steady state. State = xyz.openbmc_project.State.BMC.BMCState.Ready
phosphor-rbmc-state-manager[1516]: Enabling redundancy
phosphor-rbmc-state-manager[1516]: Failovers not allowed because A full sync hasn't been completed
phosphor-rbmc-state-manager[1516]: Starting full sync and waiting for completion
phosphor-rbmc-state-manager[1516]: Full sync completed with status xyz.openbmc_project.Control.SyncBMCData.FullSyncStatus.FullSyncCompleted
phosphor-rbmc-state-manager[1516]: Changing failovers to allowed
```

rbmctool output during that time:
```
Local BMC
-----------------------------
Role:                Active
BMC Position:        0
Redundancy Enabled:  true
BMC State:           Ready
Failovers Allowed:   false
FW version hash:     7969307F
Provisioned:         true
Role Reason:         Sibling is already passive
Reasons failovers are not allowed:
    A full sync hasn't been completed
```

Change-Id: I14dedd43619fffdeea11449319b681f8b95a1698
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
@spinler spinler force-pushed the fo_allowed_after_sync branch from b70abd2 to 7bf78ab Compare June 17, 2025 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants