Return standard cancellation error

This commit is contained in:
Arnaud 2025-10-30 07:56:43 +01:00
parent 777b678ffb
commit d8f5e0627a
No known key found for this signature in database
GPG Key ID: 20E40A5D3110766F
4 changed files with 24 additions and 10 deletions

View File

@ -30,6 +30,7 @@ import (
"encoding/json"
"fmt"
"io"
"sync/atomic"
"unsafe"
)
@ -216,10 +217,12 @@ func (node CodexNode) DownloadStream(ctx context.Context, cid string, options Do
defer close(done)
channelError := make(chan error, 1)
var cancelled atomic.Bool
go func() {
select {
case <-ctx.Done():
channelError <- node.DownloadCancel(cid)
cancelled.Store(true)
case <-done:
// Nothing to do, download finished
}
@ -236,7 +239,11 @@ func (node CodexNode) DownloadStream(ctx context.Context, cid string, options Do
if err != nil {
if cancelError != nil {
return fmt.Errorf("download canceled: %v, but failed to cancel download session: %v", ctx.Err(), cancelError)
return fmt.Errorf("context canceled: %v, but failed to cancel download session: %v", ctx.Err(), cancelError)
}
if cancelled.Load() {
return context.Canceled
}
return err

View File

@ -111,11 +111,11 @@ func TestDownloadStreamCancelled(t *testing.T) {
err := <-channelError
if err == nil {
t.Fatal("UploadFile should have been canceled")
t.Fatal("DownloadStream should have been canceled")
}
if err.Error() != "Failed to stream file: Stream EOF!" {
t.Fatalf("UploadFile returned unexpected error: %v", err)
if err.Error() != context.Canceled.Error() {
t.Fatalf("DownloadStream returned unexpected error: %v", err)
}
}

View File

@ -28,10 +28,10 @@ import "C"
import (
"bytes"
"context"
"errors"
"fmt"
"io"
"os"
"sync/atomic"
"unsafe"
)
@ -187,7 +187,7 @@ func (node CodexNode) UploadReader(ctx context.Context, options UploadOptions, r
if cancelErr := node.UploadCancel(sessionId); cancelErr != nil {
return "", fmt.Errorf("upload canceled: %v, but failed to cancel upload session: %v", ctx.Err(), cancelErr)
}
return "", errors.New("upload canceled")
return "", context.Canceled
default:
// continue
}
@ -313,10 +313,12 @@ func (node CodexNode) UploadFile(ctx context.Context, options UploadOptions) (st
defer close(done)
channelError := make(chan error, 1)
var cancelled atomic.Bool
go func() {
select {
case <-ctx.Done():
channelError <- node.UploadCancel(sessionId)
cancelled.Store(true)
case <-done:
// Nothing to do, upload finished
}
@ -333,8 +335,13 @@ func (node CodexNode) UploadFile(ctx context.Context, options UploadOptions) (st
if err != nil {
if cancelErr != nil {
return "", fmt.Errorf("upload canceled: %v, but failed to cancel upload session: %v", ctx.Err(), cancelErr)
return "", fmt.Errorf("context canceled: %v, but failed to cancel upload session: %v", ctx.Err(), cancelErr)
}
if cancelled.Load() {
return "", context.Canceled
}
return "", err
}

View File

@ -62,8 +62,8 @@ func TestUploadReaderCancel(t *testing.T) {
t.Fatal("UploadReader should have been canceled")
}
if err.Error() != "upload canceled" {
t.Fatalf("UploadReader returned unexpected error: %v", err)
if err.Error() != context.Canceled.Error() {
t.Fatalf("UploadReader returned unexpected error: %v expected %v", err, context.Canceled)
}
}
@ -134,7 +134,7 @@ func TestUploadFileCancel(t *testing.T) {
t.Fatal("UploadFile should have been canceled")
}
if err.Error() != "Failed to upload the file: Failed to stream the file: Stream Closed!" {
if err.Error() != context.Canceled.Error() {
t.Fatalf("UploadFile returned unexpected error: %v", err)
}
}