mirror of
https://github.com/logos-storage/logos-storage-go-bindings.git
synced 2026-01-05 23:13:09 +00:00
Fix cancel error monitoring
This commit is contained in:
parent
a2983631d6
commit
3d66b10fa9
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user