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 Nondeterministic Corner Case in Receiver-Side Replay #373

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

daumayr
Copy link
Contributor

@daumayr daumayr commented Sep 2, 2020

This pull request fixes a corner case in which the receiver-side rr is not able to capture and reproduce message orderings accurately.

The problem can occur when the following conditions are met:

  • a message send (M1) to a resolved promise (P1) and a promise resolution (P2) race with each other
  • the resolver of P1 is performing the resolution of P2
  • the actor sending M1 also sent a message M2 that is stored in P2

Under the old replay, both messages would have the same sender/receiver promise message tuple in the trace. Hence we do not capture wether M1 or M2 is processed first.

The new solution sequentially numbers all promise messages sent by an actor, and records that number in place of the id of the resolver. replay executions automatically generate the same message numbers. In combination with the sender, this allows us to uniquely identify the promise messages and accurately reorder them.

Promise resolver tracking was removed from tracing promises.
The messageId field from Kompos tracing was reused to store message numbers.

TODO: add a testcase, do thorough testing

@daumayr daumayr changed the base branch from release to dev September 2, 2020 16:51
@smarr smarr added this to To do in Camelot Apr 18, 2021
@smarr
Copy link
Owner

smarr commented Apr 21, 2021

@daumayr do you happen to have other code related to this?

@daumayr
Copy link
Contributor Author

daumayr commented Apr 22, 2021

Sorry, I don't have code for this case, it was just something that i realized during writing. I can make you a sequence diagram if you want

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Camelot
To do
Development

Successfully merging this pull request may close these issues.

None yet

2 participants