mirror of
https://github.com/logos-storage/logos-storage-go-bindings.git
synced 2026-01-02 13:33:10 +00:00
Merge pull request #8 from codex-storage/chore/return-context-cancelled-error
chore: return standard cancellation error
This commit is contained in:
commit
fd5a0c371d
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user