Issue #5668
closedUsing futures in sysncpipeline basically deactivates batching
Description
Currently, when using await
on the result of get_or_create_future
of a DeclarativeContent
without marking it as unable to batch, will most likely lead to deadlocks, when the future is awaited, while the content is waiting for a batch to be filled.
The related PR: https://github.com/pulp/pulpcore/pull/365
provides the possibility that a DeclarativeContent
can be batched and will wait until its associated future is actually awaited. At that very moment it is marked as no longer able to batch up, and it signals the queue it is in to flush the current (incomplete) batch.
This change is completely backwards compatible. It only adds the possibility to use the futures without specifying does_batch=False
.
If used reasonably, it can help to increase sync performance in some cases.
Updated by daviddavis about 5 years ago
- Triaged changed from No to Yes
- Sprint set to Sprint 61
Updated by dalley about 5 years ago
- Status changed from NEW to POST
- Assignee set to mdellweg
Added by mdellweg about 5 years ago
Updated by mdellweg about 5 years ago
- Status changed from POST to MODIFIED
Applied in changeset pulpcore|338deb90d58a78a8e44f7e3fcec677d88eda17d5.
Updated by mdellweg about 5 years ago
mdellweg wrote:
This change is completely backwards compatible. It only adds the possibility to use the futures without specifying
does_batch=False
.
This is no longer true. The change removes both does_batch
as well as get_or_create_future
and adds the resolution
coroutine to replace them.
Added by bmbouter about 5 years ago
Revision d98259db | View on GitHub
Update release notes for Batching change
Updated by bmbouter about 5 years ago
Applied in changeset pulpcore|d98259db325299a0dbef40a9250a9a9fb30a145f.
Updated by bmbouter almost 5 years ago
- Status changed from MODIFIED to CLOSED - CURRENTRELEASE
Updated by bmbouter over 4 years ago
- Tags Performance added
- Tags deleted (
Sync Performance)
Add resolution callback to DeclarativeContent
If it is currently waiting in a queue, unfreeze that. Remove old interfaces does_batch and get_or_create_future.
fixes #5668