From 3907e21f6f70c7751b8a36c61fb6ce163f04af67 Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Tue, 8 May 2018 18:40:44 -0500 Subject: [PATCH] Wrap errors in frame --- frame.go | 68 ++++++++++++++++++++++++------------------------- handler_test.go | 4 +-- holder_test.go | 4 +-- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/frame.go b/frame.go index 0c87210bf..966079619 100644 --- a/frame.go +++ b/frame.go @@ -15,7 +15,6 @@ package pilosa import ( - "errors" "fmt" "io/ioutil" "os" @@ -27,6 +26,7 @@ import ( "github.com/gogo/protobuf/proto" "github.com/pilosa/pilosa/internal" "github.com/pilosa/pilosa/pql" + "github.com/pkg/errors" ) // Default frame settings. @@ -156,7 +156,7 @@ func (f *Frame) SetCacheSize(v uint32) error { // Persist meta data to disk on change. f.cacheSize = v if err := f.saveMeta(); err != nil { - return err + return errors.Wrap(err, "saving") } return nil @@ -192,19 +192,19 @@ func (f *Frame) Open() error { if err := func() error { // Ensure the frame's path exists. if err := os.MkdirAll(f.path, 0777); err != nil { - return err + return errors.Wrap(err, "creating dir") } if err := f.loadMeta(); err != nil { - return err + return errors.Wrap(err, "loading") } if err := f.openViews(); err != nil { - return err + return errors.Wrap(err, "opening views") } if err := f.rowAttrStore.Open(); err != nil { - return err + return errors.Wrap(err, "opening attrstore") } return nil @@ -222,13 +222,13 @@ func (f *Frame) openViews() error { if os.IsNotExist(err) { return nil } else if err != nil { - return err + return errors.Wrap(err, "opening view directory") } defer file.Close() fis, err := file.Readdir(0) if err != nil { - return err + return errors.Wrap(err, "reading") } for _, fi := range fis { @@ -262,10 +262,10 @@ func (f *Frame) loadMeta() error { //f.fields return nil } else if err != nil { - return err + return errors.Wrap(err, "reading") } else { if err := proto.Unmarshal(buf, &pb); err != nil { - return err + return errors.Wrap(err, "unmarshaling") } } @@ -288,12 +288,12 @@ func (f *Frame) saveMeta() error { fo := f.options() buf, err := proto.Marshal(fo.Encode()) if err != nil { - return err + return errors.Wrap(err, "marshaling") } // Write to meta file. if err := ioutil.WriteFile(filepath.Join(f.path, ".meta"), buf, 0666); err != nil { - return err + return errors.Wrap(err, "writing") } return nil @@ -365,7 +365,7 @@ func (f *Frame) CreateField(field *Field) error { // addField adds a single field to fields. func (f *Frame) addField(field *Field) error { if err := ValidateField(field); err != nil { - return err + return errors.Wrap(err, "validating") } else if f.HasField(field.Name) { return ErrFieldExists } @@ -388,7 +388,7 @@ func (f *Frame) GetFields() ([]*Field, error) { err := f.loadMeta() if err != nil { - return nil, err + return nil, errors.Wrap(err, "loading meta") } return f.fields, nil @@ -410,9 +410,9 @@ func (f *Frame) DeleteField(name string) error { delete(f.views, viewName) if err := view.Close(); err != nil { - return err + return errors.Wrap(err, "closing") } else if err := os.RemoveAll(view.Path()); err != nil { - return err + return errors.Wrap(err, "deleting directory") } } @@ -453,7 +453,7 @@ func (f *Frame) SetTimeQuantum(q TimeQuantum) error { // Persist meta data to disk. if err := f.saveMeta(); err != nil { - return err + return errors.Wrap(err, "saving meta") } return nil @@ -522,7 +522,7 @@ func (f *Frame) CreateViewIfNotExists(name string) (*View, error) { View: name, }) if err != nil { - return nil, err + return nil, errors.Wrap(err, "sending CreateView message") } } @@ -547,7 +547,7 @@ func (f *Frame) createViewIfNotExistsBase(name string) (*View, bool, error) { view := f.newView(f.ViewPath(name), name) if err := view.Open(); err != nil { - return nil, false, err + return nil, false, errors.Wrap(err, "opening") } view.RowAttrStore = f.rowAttrStore f.views[view.Name()] = view @@ -574,12 +574,12 @@ func (f *Frame) DeleteView(name string) error { // Close data files before deletion. if err := view.Close(); err != nil { - return err + return errors.Wrap(err, "closing") } // Delete view directory. if err := os.RemoveAll(view.Path()); err != nil { - return err + return errors.Wrap(err, "deleting directory") } delete(f.views, name) @@ -597,12 +597,12 @@ func (f *Frame) SetBit(name string, rowID, colID uint64, t *time.Time) (changed // Retrieve view. Exit if it doesn't exist. view, err := f.CreateViewIfNotExists(name) if err != nil { - return changed, err + return changed, errors.Wrap(err, "creating view") } // Set non-time bit. if v, err := view.SetBit(rowID, colID); err != nil { - return changed, err + return changed, errors.Wrap(err, "setting on view") } else if v { changed = v } @@ -616,11 +616,11 @@ func (f *Frame) SetBit(name string, rowID, colID uint64, t *time.Time) (changed for _, subname := range ViewsByTime(name, *t, f.TimeQuantum()) { view, err := f.CreateViewIfNotExists(subname) if err != nil { - return changed, err + return changed, errors.Wrapf(err, "creating view %s", subname) } if c, err := view.SetBit(rowID, colID); err != nil { - return changed, err + return changed, errors.Wrapf(err, "setting on view %s", subname) } else if c { changed = true } @@ -639,12 +639,12 @@ func (f *Frame) ClearBit(name string, rowID, colID uint64, t *time.Time) (change // Retrieve view. Exit if it doesn't exist. view, err := f.CreateViewIfNotExists(name) if err != nil { - return changed, err + return changed, errors.Wrap(err, "creating view") } // Clear non-time bit. if v, err := view.ClearBit(rowID, colID); err != nil { - return changed, err + return changed, errors.Wrap(err, "setting on view") } else if v { changed = v } @@ -658,11 +658,11 @@ func (f *Frame) ClearBit(name string, rowID, colID uint64, t *time.Time) (change for _, subname := range ViewsByTime(name, *t, f.TimeQuantum()) { view, err := f.CreateViewIfNotExists(subname) if err != nil { - return changed, err + return changed, errors.Wrapf(err, "creating view %s", subname) } if c, err := view.ClearBit(rowID, colID); err != nil { - return changed, err + return changed, errors.Wrapf(err, "setting on view %s", subname) } else if c { changed = true } @@ -708,7 +708,7 @@ func (f *Frame) SetFieldValue(columnID uint64, name string, value int64) (change // Fetch target view. view, err := f.CreateViewIfNotExists(ViewFieldPrefix + name) if err != nil { - return false, err + return false, errors.Wrap(err, "creating view") } // Determine base value to store. @@ -886,12 +886,12 @@ func (f *Frame) Import(rowIDs, columnIDs []uint64, timestamps []*time.Time) erro view, err := f.CreateViewIfNotExists(key.View) if err != nil { - return err + return errors.Wrap(err, "creating view") } frag, err := view.CreateFragmentIfNotExists(key.Slice) if err != nil { - return err + return errors.Wrap(err, "creating view") } if err := frag.Import(data.RowIDs, data.ColumnIDs); err != nil { @@ -938,12 +938,12 @@ func (f *Frame) ImportValue(fieldName string, columnIDs []uint64, values []int64 // because we need to know bitDepth (based on min/max value). view, err := f.CreateViewIfNotExists(key.View) if err != nil { - return err + return errors.Wrap(err, "creating view") } frag, err := view.CreateFragmentIfNotExists(key.Slice) if err != nil { - return err + return errors.Wrap(err, "creating fragment") } baseValues := make([]uint64, len(data.Values)) diff --git a/handler_test.go b/handler_test.go index 4187b3303..3e5aea2c9 100644 --- a/handler_test.go +++ b/handler_test.go @@ -894,7 +894,7 @@ func TestHandler_Frame_AddField(t *testing.T) { ) if err != nil { t.Fatal(err) - } else if body := MustReadAll(resp.Body); string(body) != `invalid field type`+"\n" { + } else if body := MustReadAll(resp.Body); string(body) != `validating: invalid field type`+"\n" { t.Fatalf("unexpected body: %q", body) } else if err := resp.Body.Close(); err != nil { t.Fatal(err) @@ -916,7 +916,7 @@ func TestHandler_Frame_AddField(t *testing.T) { ) if err != nil { t.Fatal(err) - } else if body := MustReadAll(resp.Body); string(body) != `invalid field range`+"\n" { + } else if body := MustReadAll(resp.Body); string(body) != `validating: invalid field range`+"\n" { t.Fatalf("unexpected body: %q", body) } else if err := resp.Body.Close(); err != nil { t.Fatal(err) diff --git a/holder_test.go b/holder_test.go index e819c6e94..6d300d84c 100644 --- a/holder_test.go +++ b/holder_test.go @@ -127,7 +127,7 @@ func TestHolder_Open(t *testing.T) { t.Fatal(err) } - if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=foo, err=open frame: name=bar, err=unexpected EOF") { + if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=foo, err=open frame: name=bar, err=loading: unmarshaling: unexpected EOF") { t.Fatalf("unexpected error: %s", err) } }) @@ -145,7 +145,7 @@ func TestHolder_Open(t *testing.T) { t.Fatal(err) } - if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=foo, err=open frame: name=bar, err=invalid database") { + if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=foo, err=open frame: name=bar, err=opening attrstore: invalid database") { t.Fatalf("unexpected error: %s", err) } })