[pbs-devel] [PATCH proxmox-backup] sync job: pull: avoid blocking future during thread pool completion
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Oct 14 13:26:14 CEST 2025
On October 9, 2025 11:20 am, Christian Ebner wrote:
> Chunk insertion during a pull sync job is performed via a thread pool
> to increase performance. The caller waits for all threads to be
> completed at the end, relying on the respective associated threads to
> return from `std::thread::JoinHandle::join`.
>
> Insertion into the chunk store can however take time, especially
> for chunks being uploaded to the object store for datastores with
> S3 backend.
>
> To avoid blocking the async runtime, spawn a dedicated task to await
> the thread pool completion.
>
> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> ---
> Encountered while looking for possible causes of proxy hangs as reported
> in https://forum.proxmox.com/threads/171422/post-807098
>
> src/server/pull.rs | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/server/pull.rs b/src/server/pull.rs
> index 08e6e6b64..53f1a570d 100644
> --- a/src/server/pull.rs
> +++ b/src/server/pull.rs
> @@ -232,7 +232,7 @@ async fn pull_index_chunks<I: IndexFile>(
>
> drop(verify_and_write_channel);
>
> - verify_pool.complete()?;
> + let _ = tokio::task::spawn_blocking(|| verify_pool.complete()).await?;
doesn't this change error handling semantics? the inner Result is no
longer handled, AFAICT..
>
> let elapsed = start_time.elapsed()?;
>
> --
> 2.47.3
>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
>
>
>
More information about the pbs-devel
mailing list