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/issue54 #55

Merged
merged 4 commits into from
Jul 14, 2020
Merged

Fix/issue54 #55

merged 4 commits into from
Jul 14, 2020

Conversation

mariusmue
Copy link
Member

See #54 and commit-history for details.

In rare occasions, a race can occure where watchmen callbacks are
running while the main-thread already consumes the update-state message.
This commit guards those callback by an additional event on which target
wait() is waiting for.
However, there may still be a small TOCTOU-window on that event, as the
waiting is using a timeout (for state-updates which are not generating
watchmen callbacks).

Hence, in the long run, the full code dealing with state updates could
benefit from refactoring.
It seems that keystone version 0.9.2 (as in pypi) has fixed the issues
regarding the installation path of keystone.
* Add processing_callbacks to dictify-ignore list
Event()-Objects cannot be serialized, so it should either be private or
part of the ignore list. As the watchman are independently accessing
this Event, it's added to the ignore list

* Fix assert statement in smoketest to be py2-compliant

* Set environment variables for the smoketest
@mariusmue mariusmue merged commit c03fc2b into master Jul 14, 2020
@mariusmue mariusmue deleted the fix/issue54 branch July 15, 2020 17:16
mariusmue added a commit that referenced this pull request Jan 23, 2021
* guard waiting for watchmen via events

In rare occasions, a race can occure where watchmen callbacks are
running while the main-thread already consumes the update-state message.
This commit guards those callback by an additional event on which target
wait() is waiting for.
However, there may still be a small TOCTOU-window on that event, as the
waiting is using a timeout (for state-updates which are not generating
watchmen callbacks).

Hence, in the long run, the full code dealing with state updates could
benefit from refactoring.

* added smoketest for #54 (thanks @redfast00)

* Remove manual keystone-library copy from CI

It seems that keystone version 0.9.2 (as in pypi) has fixed the issues
regarding the installation path of keystone.

* Various fixes found by CI

* Add processing_callbacks to dictify-ignore list
Event()-Objects cannot be serialized, so it should either be private or
part of the ignore list. As the watchman are independently accessing
this Event, it's added to the ignore list

* Fix assert statement in smoketest to be py2-compliant

* Set environment variables for the smoketest
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant