[go: up one dir, main page]

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

Sync client can crash if a session is resumed before UNBIND message finishes sending #7860

Closed
sync-by-unito bot opened this issue Jul 3, 2024 · 2 comments · Fixed by #7874
Closed
Assignees

Comments

@sync-by-unito
Copy link
sync-by-unito bot commented Jul 3, 2024

When a session is suspended it starts to send an UNBIND message to tell the server the session is over. If the session is resumed before that UNBIND message finishes sending, then any commit to the database can fail an assertion in Session::recognize_sync_version() which expects either the session to be suspended or for the unbind message to not have been sent. Once the unbind message finishes sending, it will take care of restarting the session.

Copy link
Author
sync-by-unito bot commented Jul 3, 2024

➤ PM Bot commented:

Jira ticket: RCORE-2190

Copy link
Author
sync-by-unito bot commented Jul 8, 2024

➤ michael-wb commented:

I was able to reproduce this crash, but it seems to be a very specific case:

  1. session is disconnecting because of an error (e.g. client reset)
  2. while the session is being suspended, around the same time async_write() is called for the the UNBIND message:
  • handle_reconnect() is called to restart the session
  • a write is performed to the realm

In the case this FLX migration test, the sync session is restarting to perform a PBS->FLX migration client reset, which writes state info to the migration store in the realm and at the same time, the test is calling handle_reconnect() to restart the session here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant