Menu

#3402 amf: SI partial assignment after split-brain recovery

5.27.01
assigned
None
defect
amf
d
5
minor
False
2026-06-19
2026-06-19
No

Test scenario:

  1. Cluster starts with SC-1 as Active controller, SC-3 as Standby.
  2. Two applications deployed: osaftest0 (SI A) and osaftest1 (SI B).
  3. For safSi=B,safApp=osaftest1:
    1. safSu=1 (on SC-1) has Active assignment.
    2. safSu=2 (on SC-2) has Standby assignment.
  4. Network split into: [SC-1, SC-2, SC-3, SC-4, SC-5] vs [SC-6, SC-7, SC-8, SC-9, SC-10]
  5. SC-1 is rebooted (the Active controller holding active assignment for SI B).
  6. Network merged back.
  7. Verification: SI B should be FULLY_ASSIGNED — FAILS

The issue is due to: When an SI has only a standby assignment remaining (active was lost due to node reboot), the function fails to promote the standby SU to active. Instead, it creates a duplicate standby assignment, leaving the SI permanently in PARTIALLY_ASSIGNED state.

The execution flow when SI B has only a standby (no active):

  1. avd_sg_2n_act_susi() scans the SG and finds:
    1. SI B has only one SU assigned (SU2 with standby state).
    2. Since SU2 is standby-only, returns: a_susi = NULL, s_susi = SU2's standby SUSI.
  2. Back in avd_sg_2n_su_chose_asgn(), enters the a_susi == NULL branch.
  3. Calls avd_sg_2n_assign_act_si() for each in-service SU.
  4. avd_sg_2n_assign_act_si() checks: i_si->list_of_sisu == AVD_SU_SI_REL_NULL
    1. But SI B already has SU2 as standby → list_of_sisu != NULL
    2. Condition is false → SI B is skipped
  5. l_flag remains false, falls through to standby assignment section.
  6. Standby section: i_si->list_of_sisu->si_next == NULL → true (only one SUSI).
  7. Creates another standby for SI B → 2 standby, 0 active!

Discussion


Log in to post a comment.

Auth0 Logo