Skip to content
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

Fix server_state FSM transitions #175

Open
ayurchen opened this issue Nov 28, 2021 · 0 comments
Open

Fix server_state FSM transitions #175

ayurchen opened this issue Nov 28, 2021 · 0 comments
Assignees
Labels
bug Something isn't working

Comments

@ayurchen
Copy link
Member

There are two mutually dependent issues with wsrep::server_state FSM transitions:

  1. it prematurely switches to s_synced on donor when SST start fails:
    state(lock, s_synced);
  2. it arbitrarily switches to s_joined, since there is no dedicated JOINED callback/event in the API:
    state(lock, s_joined);

However this all can be resolved if we consider that s_joined state is actually reached when the last committed seqno becomes greater or equal to connected seqno.

@ayurchen ayurchen added the bug Something isn't working label Nov 28, 2021
@ayurchen ayurchen self-assigned this Nov 28, 2021
ayurchen added a commit that referenced this issue Nov 28, 2021
   for SYNCED event as expected.
2. Fix trnasition to `s_joined` only after we have a complete state:
   - either SST seqno exceeds connected seqno
   - committed seqno exceeds connected seqno
   - current state is `s_donor`

Refs #175
ayurchen added a commit that referenced this issue Nov 28, 2021
   for SYNCED event as expected.
2. Fix transition to `s_joined` only after we have a complete state.
   Conditions for `s_joined` are either:
   - SST seqno exceeds connected seqno
   - committed seqno exceeds connected seqno
   - current state is `s_donor`

Refs #175
ayurchen added a commit that referenced this issue Nov 29, 2021
   for SYNCED event as expected.
2. Fix transition to `s_joined` only after we have a complete state.
   Conditions for `s_joined` are either:
   - SST seqno exceeds connected seqno
   - committed seqno exceeds connected seqno
   - current state is `s_donor`

Refs #175
ayurchen added a commit that referenced this issue Nov 30, 2021
   for SYNCED event as expected.
2. Fix transition to `s_joined` only after we have a complete state.
   Complete state is reached in the following 3 cases:
   - SST seqno exceeds connected seqno
   - view seqno equals connected seqno (view processed == view connected)
   - current state is `s_donor`

Refs #175
ayurchen added a commit that referenced this issue Nov 30, 2021
   for SYNCED event as expected.
2. Fix transition to `s_joined` only after we have a complete state.
   Complete state is reached in the following 3 cases:
   - SST seqno exceeds connected seqno
   - view seqno equals connected seqno (view processed == view connected)
   - current state is `s_donor`

Refs #175
ayurchen added a commit that referenced this issue Nov 30, 2021
   for SYNCED event as expected.
2. Fix transition to `s_joined` only after we have a complete state.
   Complete state is reached in the following 3 cases:
   - SST seqno exceeds connected seqno
   - view seqno equals connected seqno (view processed == view connected)
   - current state is `s_donor`

Refs #175
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant