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 race in index lookup #703

Merged
merged 4 commits into from
Jan 8, 2020
Merged

Fix race in index lookup #703

merged 4 commits into from
Jan 8, 2020

Conversation

tobim
Copy link
Member

@tobim tobim commented Jan 8, 2020

No description provided.

@tobim tobim added the bug Incorrect behavior label Jan 8, 2020
@tobim tobim force-pushed the story/ch10779 branch 2 times, most recently from 9ca9077 to 9fb809b Compare January 8, 2020 13:15
@tobim tobim requested a review from a team January 8, 2020 13:23
@tobim tobim marked this pull request as ready for review January 8, 2020 13:23
libvast/src/system/index.cpp Outdated Show resolved Hide resolved
libvast/src/system/index.cpp Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
libvast/src/system/index.cpp Show resolved Hide resolved
The lookup protocol that the index exposes is as follows:

+--------+ -- expression --> +-------+
| Client |                   | Index |
+--------+ <- lookup meta -- +-------+
      ^                          |launches
      |                          v
      \---- Ids ----------- +-----------+
                            | Evaluator |
                            +-----------+

The message sent from the Index to the Client is the _response_,
the message form the Evaluator to the Client is the _result_. The
actor model cannot give us any guarantees on the order of message
delivery as soon as an indirection is involved.

The problem is that the index used to start the Evaluator(s)
before inserting the response message into the receiving queue of
the Client. Thus it was possible that the Evaluator placed its
messages into the same queue at an earlier time, violating the
requirement of the client that the response shall be received
before the results.

This commit changes the order of response delivery and lauch of
the Evaluator(s), thereby fixing the bug.
@mavam mavam merged commit b3d501c into master Jan 8, 2020
@mavam mavam deleted the story/ch10779 branch January 8, 2020 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Incorrect behavior
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants