Merge pull request #8 from codex-storage/chore/return-context-cancelled-error

chore: return standard cancellation error
This commit is contained in:
Arnaud 2025-10-30 11:21:11 +04:00 committed by GitHub
commit fd5a0c371d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 24 additions and 10 deletions

View File

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

View File

@ -111,11 +111,11 @@ func TestDownloadStreamCancelled(t *testing.T) {
err := <-channelError err := <-channelError
if err == nil { 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!" { if err.Error() != context.Canceled.Error() {
t.Fatalf("UploadFile returned unexpected error: %v", err) t.Fatalf("DownloadStream returned unexpected error: %v", err)
} }
} }

View File

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

View File

@ -62,8 +62,8 @@ func TestUploadReaderCancel(t *testing.T) {
t.Fatal("UploadReader should have been canceled") t.Fatal("UploadReader should have been canceled")
} }
if err.Error() != "upload canceled" { if err.Error() != context.Canceled.Error() {
t.Fatalf("UploadReader returned unexpected error: %v", err) 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") 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) t.Fatalf("UploadFile returned unexpected error: %v", err)
} }
} }