Skip to content

[DPE-10454] Use better status instead of blocked for transient update failures#1795

Open
taurus-forever wants to merge 1 commit into
16/edgefrom
alutay/polish_blocked
Open

[DPE-10454] Use better status instead of blocked for transient update failures#1795
taurus-forever wants to merge 1 commit into
16/edgefrom
alutay/polish_blocked

Conversation

@taurus-forever

Copy link
Copy Markdown
Contributor

Use maintenance/waiting status instead of blocked one.

The 'failed to update cluster members on member' BlockedStatus was misleading: these are transient, self-recovering conditions (a RetryError from update_config(), or a peer IP not yet published) rather than states needing operator intervention. Replace them with MaintenanceStatus / WaitingStatus and a 'pending update cluster members on member' message.

Update test_on_peer_relation_changed accordingly, and set an explicit BlockedStatus before exercising the early-exit guard so that path stays covered.

Assisted-by: Claude:claude-4.8-opus

… failures

Use maintenance/waiting status instead of blocked one.

The 'failed to update cluster members on member' BlockedStatus was
misleading: these are transient, self-recovering conditions (a RetryError
from update_config(), or a peer IP not yet published) rather than states
needing operator intervention. Replace them with MaintenanceStatus /
WaitingStatus and a 'pending update cluster members on member' message.

Update test_on_peer_relation_changed accordingly, and set an explicit
BlockedStatus before exercising the early-exit guard so that path stays
covered.

Assisted-by: Claude:claude-4.8-opus
@taurus-forever taurus-forever added the bug Something isn't working as expected label Jun 22, 2026
@github-actions github-actions Bot added the Libraries: Out of sync The charm libs used are out-of-sync label Jun 22, 2026
Comment thread src/charm.py
self.set_unit_status(MaintenanceStatus("pending update cluster members on member"))
else:
self.set_unit_status(BlockedStatus("failed to update cluster members on member"))
self.set_unit_status(WaitingStatus("pending update cluster members on member"))

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using WaitingStatus here as a flag to recognize RetryError==MaintenanceStatus.
Should I sync all to the same status?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if we have something like WaitingStatus("waiting for peer IP") here and MaintenanceStatus("updating cluster members") in L1415 and L1196 to make the status messages correspond to each state?

@taurus-forever taurus-forever marked this pull request as ready for review June 23, 2026 08:49
@taurus-forever taurus-forever requested a review from a team as a code owner June 23, 2026 08:49
@taurus-forever taurus-forever requested review from carlcsaposs-canonical, dragomirp, juju-charm-bot and marceloneppel and removed request for a team June 23, 2026 08:49
Comment thread tests/unit/test_charm.py
_update_config.assert_called_once_with()
assert isinstance(harness.charm.unit.status, BlockedStatus)
assert harness.charm.unit.status.message == "failed to update cluster members on member"
assert isinstance(harness.charm.unit.status, MaintenanceStatus | WaitingStatus)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better to assert the exact status we are expecting here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working as expected Libraries: Out of sync The charm libs used are out-of-sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants