From b242d69805b1ff658b9686ffe8600c2d9398d666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Tue, 17 Nov 2020 16:28:41 +0100 Subject: [PATCH] Make storiface.CallError json-friendly --- extern/sector-storage/storiface/worker.go | 20 ++++++++++++++------ extern/sector-storage/worker_local.go | 10 ++-------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/extern/sector-storage/storiface/worker.go b/extern/sector-storage/storiface/worker.go index d329521e7..49d1de357 100644 --- a/extern/sector-storage/storiface/worker.go +++ b/extern/sector-storage/storiface/worker.go @@ -2,6 +2,7 @@ package storiface import ( "context" + "errors" "fmt" "io" "time" @@ -104,22 +105,29 @@ const ( ) type CallError struct { - Code ErrorCode - Sub error + Code ErrorCode + Message string + sub error } func (c *CallError) Error() string { - return fmt.Sprintf("storage call error %d: %s", c.Code, c.Sub.Error()) + return fmt.Sprintf("storage call error %d: %s", c.Code, c.Message) } func (c *CallError) Unwrap() error { - return c.Sub + if c.sub != nil { + return c.sub + } + + return errors.New(c.Message) } func Err(code ErrorCode, sub error) *CallError { return &CallError{ - Code: code, - Sub: sub, + Code: code, + Message: sub.Error(), + + sub: sub, } } diff --git a/extern/sector-storage/worker_local.go b/extern/sector-storage/worker_local.go index c1e8e6e81..c069d7bf7 100644 --- a/extern/sector-storage/worker_local.go +++ b/extern/sector-storage/worker_local.go @@ -90,10 +90,7 @@ func newLocalWorker(executor ExecutorFunc, wcfg WorkerConfig, store stores.Store go func() { for _, call := range unfinished { - err := &storiface.CallError{ - Sub: xerrors.New("worker restarted"), - Code: storiface.ErrTempWorkerRestart, - } + err := storiface.Err(storiface.ErrTempWorkerRestart, xerrors.New("worker restarted")) // TODO: Handle restarting PC1 once support is merged @@ -261,10 +258,7 @@ func (l *LocalWorker) asyncCall(ctx context.Context, sector storage.SectorRef, r func toCallError(err error) *storiface.CallError { var serr *storiface.CallError if err != nil && !xerrors.As(err, &serr) { - serr = &storiface.CallError{ - Sub: err, - Code: storiface.ErrUnknown, - } + serr = storiface.Err(storiface.ErrUnknown, err) } return serr