Use the transfer context also for the progress bars

This commit is contained in:
Philipp Wolfer 2025-05-22 08:52:52 +02:00
parent 3b545a0fd6
commit adfe3f5771
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
2 changed files with 14 additions and 6 deletions

View file

@ -110,11 +110,13 @@ func (c *TransferCmd[E, I, R]) Transfer(exp backends.ExportProcessor[R], imp bac
}
printTimestamp("From timestamp: %v (%v)", timestamp)
// Use a context with cancel to abort the transfer
ctx, cancel := context.WithCancel(context.Background())
// Prepare progress bars
progressChan := make(chan models.TransferProgress)
progress := setupProgressBars(progressChan)
progress := setupProgressBars(ctx, progressChan)
ctx, cancel := context.WithCancel(context.Background())
wg := &sync.WaitGroup{}
// Export from source
@ -126,8 +128,12 @@ func (c *TransferCmd[E, I, R]) Transfer(exp backends.ExportProcessor[R], imp bac
go imp.Process(ctx, wg, exportChan, resultChan, progressChan)
result := <-resultChan
// Once import is done, the context can be cancelled
cancel()
// If the import has errored, the context can be cancelled immediately
if result.Error != nil {
cancel()
} else {
defer cancel()
}
// Wait for all goroutines to finish
wg.Wait()