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

Fixed resume state transition behavior #285

Merged
merged 4 commits into from
Jun 24, 2024
Merged

Conversation

sebaB003
Copy link
Contributor

After some stress tests performed on plumpy to verify its conistency in state changes, i discovered an error that can be ignored: if resume is called on an already resumed process an asyncio.exceptions.InvalidStateError is raised blocking the execution of the process.

This error can happen due to some concurrent calls, and it should be ignored, since the task was already resumed successfully, also this fix is going to match the behavior of the other state transitions: calling play on an already running process and calling pause on an already paused process isn't rising any error.

After some stress tests performed on plumpy to verify its conistency in
state changes, i discovered an error that can be ignored: if `resume` is called on an
already resumed process an `asyncio.exceptions.InvalidStateError` is
raised blocking the execution of the process.

This error can happen due to some concurrent calls, and it
should be ignored, since the task was already resumed successfully,
also this fix is going to match the behavior of the other state
transitions: calling `play` on an already running process and calling
`pause` on an already paused process isn't rising any error.
test/test_processes.py Outdated Show resolved Hide resolved
test/test_processes.py Outdated Show resolved Hide resolved
test/test_processes.py Outdated Show resolved Hide resolved
test/test_processes.py Outdated Show resolved Hide resolved
test/test_processes.py Outdated Show resolved Hide resolved
@sphuber
Copy link
Collaborator

sphuber commented Jun 24, 2024

Thanks a lot @sebaB003 , just had to fix some pre-commit errors

@sphuber sphuber self-requested a review June 24, 2024 09:17
@sphuber sphuber merged commit 20e5898 into aiidateam:master Jun 24, 2024
7 checks passed
sebaB003 added a commit to sebaB003/plumpy that referenced this pull request Jul 1, 2024
Calling `Waiting.resume()` when it had already been resumed would raise
an exception. Here, the method is made idempotent by checking first
whether the future has already been resolved. This fix ensures the
behavior matches the behavior of the other state transitions: calling
`play` on an already running process and calling `pause` on an already
paused process isn't rising any error.
sphuber pushed a commit that referenced this pull request Jul 1, 2024
Calling `Waiting.resume()` when it had already been resumed would raise
an exception. Here, the method is made idempotent by checking first
whether the future has already been resolved. This fix ensures the
behavior matches the behavior of the other state transitions: calling
`play` on an already running process and calling `pause` on an already
paused process isn't rising any error.

Cherry-pick: 20e5898
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.

2 participants