Fix cancel error monitoring

This commit is contained in:
Arnaud 2025-10-20 13:06:27 +02:00
parent a2983631d6
commit 3d66b10fa9
No known key found for this signature in database
GPG Key ID: 20E40A5D3110766F
2 changed files with 40 additions and 16 deletions

View File

@ -208,20 +208,32 @@ func (node CodexNode) DownloadStream(ctx context.Context, cid string, options Do
return bridge.callError("cGoCodexDownloadLocal")
}
var cancelErr error
select {
case <-ctx.Done():
cancelErr = node.DownloadCancel(cid)
default:
// continue
}
done := make(chan struct{})
channelError := make(chan error, 1)
go func() {
select {
case <-ctx.Done():
channelError <- node.DownloadCancel(cid)
case <-done:
// Nothing to do, download finished
}
}()
_, err = bridge.wait()
close(done)
// Extract the potential cancellation error
var cancelError error
select {
case cancelError = <-channelError:
default:
}
if err != nil {
if cancelErr != nil {
return fmt.Errorf("upload canceled: %v, but failed to cancel upload session: %v", ctx.Err(), cancelErr)
if cancelError != nil {
return fmt.Errorf("download canceled: %v, but failed to cancel download session: %v", ctx.Err(), cancelError)
}
return err
}

View File

@ -305,15 +305,27 @@ func (node CodexNode) UploadFile(ctx context.Context, options UploadOptions) (st
return "", bridge.callError("cGoCodexUploadFile")
}
var cancelErr error
select {
case <-ctx.Done():
cancelErr = node.UploadCancel(sessionId)
default:
// continue
}
done := make(chan struct{})
channelError := make(chan error, 1)
go func() {
select {
case <-ctx.Done():
channelError <- node.UploadCancel(sessionId)
case <-done:
// Nothing to do, upload finished
}
}()
_, err = bridge.wait()
close(done)
// Extract the potential cancellation error
var cancelErr error
select {
case cancelErr = <-channelError:
default:
}
if err != nil {
if cancelErr != nil {
return "", fmt.Errorf("upload canceled: %v, but failed to cancel upload session: %v", ctx.Err(), cancelErr)