all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup v2] sync job: pull: avoid blocking future during thread pool completion
@ 2025-10-14 11:54 Christian Ebner
  2025-10-14 13:05 ` [pbs-devel] applied: " Fabian Grünbichler
  0 siblings, 1 reply; 2+ messages in thread
From: Christian Ebner @ 2025-10-14 11:54 UTC (permalink / raw)
  To: pbs-devel

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@proxmox.com>
---
changes since version 1:
- fix incorrect error handling

 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..817b57ac5 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()?;
+    tokio::task::spawn_blocking(|| verify_pool.complete()).await??;
 
     let elapsed = start_time.elapsed()?;
 
-- 
2.47.3



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-backup v2] sync job: pull: avoid blocking future during thread pool completion
  2025-10-14 11:54 [pbs-devel] [PATCH proxmox-backup v2] sync job: pull: avoid blocking future during thread pool completion Christian Ebner
@ 2025-10-14 13:05 ` Fabian Grünbichler
  0 siblings, 0 replies; 2+ messages in thread
From: Fabian Grünbichler @ 2025-10-14 13:05 UTC (permalink / raw)
  To: pbs-devel, Christian Ebner


On Tue, 14 Oct 2025 13:54:29 +0200, 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.
> 
> [...]

Applied, thanks!

[1/1] sync job: pull: avoid blocking future during thread pool completion
      commit: 80b69ffc718cd7cbfa9e7c771cb8058261ca2c31

Best regards,
-- 
Fabian Grünbichler <f.gruenbichler@proxmox.com>


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-10-14 13:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-14 11:54 [pbs-devel] [PATCH proxmox-backup v2] sync job: pull: avoid blocking future during thread pool completion Christian Ebner
2025-10-14 13:05 ` [pbs-devel] applied: " Fabian Grünbichler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal