From 4f300f5c2ef0854ed88a840bec6a605315083e31 Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Thu, 10 May 2018 11:33:14 -0500 Subject: [PATCH 1/3] Wrap errors in index --- holder_test.go | 6 +++--- index.go | 38 +++++++++++++++++++------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/holder_test.go b/holder_test.go index e819c6e94..45873959c 100644 --- a/holder_test.go +++ b/holder_test.go @@ -86,7 +86,7 @@ func TestHolder_Open(t *testing.T) { t.Fatal(err) } - if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=test, err=invalid database") { + if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=test, err=opening attrstore: invalid database") { t.Fatalf("unexpected error: %s", err) } }) @@ -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=opening frames: open frame: name=bar, err=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=opening frames: open frame: name=bar, err=invalid database") { t.Fatalf("unexpected error: %s", err) } }) diff --git a/index.go b/index.go index 00ee98f11..419732fce 100644 --- a/index.go +++ b/index.go @@ -15,7 +15,6 @@ package pilosa import ( - "errors" "fmt" "io/ioutil" "os" @@ -26,6 +25,7 @@ import ( "github.com/gogo/protobuf/proto" "github.com/pilosa/pilosa/internal" + "github.com/pkg/errors" ) // Default index settings. @@ -64,7 +64,7 @@ type Index struct { func NewIndex(path, name string) (*Index, error) { err := ValidateName(name) if err != nil { - return nil, err + return nil, errors.Wrap(err, "validating name") } return &Index{ @@ -109,20 +109,20 @@ func (i *Index) options() IndexOptions { func (i *Index) Open() error { // Ensure the path exists. if err := os.MkdirAll(i.path, 0777); err != nil { - return err + return errors.Wrap(err, "creating directory") } // Read meta file. if err := i.loadMeta(); err != nil { - return err + return errors.Wrap(err, "loading meta file") } if err := i.openFrames(); err != nil { - return err + return errors.Wrap(err, "opening frames") } if err := i.columnAttrStore.Open(); err != nil { - return err + return errors.Wrap(err, "opening attrstore") } if err := i.openInputDefinitions(); err != nil { @@ -136,13 +136,13 @@ func (i *Index) Open() error { func (i *Index) openFrames() error { f, err := os.Open(i.path) if err != nil { - return err + return errors.Wrap(err, "opening directory") } defer f.Close() fis, err := f.Readdir(0) if err != nil { - return err + return errors.Wrap(err, "reading directory") } for _, fi := range fis { @@ -171,10 +171,10 @@ func (i *Index) loadMeta() error { if os.IsNotExist(err) { 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, "unmarshalling") } } @@ -192,12 +192,12 @@ func (i *Index) saveMeta() error { // Marshal metadata. buf, err := proto.Marshal(&internal.IndexMeta{}) if err != nil { - return err + return errors.Wrap(err, "marshalling") } // Write to meta file. if err := ioutil.WriteFile(filepath.Join(i.path, ".meta"), buf, 0666); err != nil { - return err + return errors.Wrap(err, "writing") } return nil @@ -215,7 +215,7 @@ func (i *Index) Close() error { // Close all frames. for _, f := range i.frames { if err := f.Close(); err != nil { - return err + return errors.Wrap(err, "closing frame") } } i.frames = make(map[string]*Frame) @@ -384,18 +384,18 @@ func (i *Index) createFrame(name string, opt FrameOptions) (*Frame, error) { // Initialize frame. f, err := i.newFrame(i.FramePath(name), name) if err != nil { - return nil, err + return nil, errors.Wrap(err, "initializing") } // Open frame. if err := f.Open(); err != nil { - return nil, err + return nil, errors.Wrap(err, "opening") } // Set the time quantum. if err := f.SetTimeQuantum(opt.TimeQuantum); err != nil { f.Close() - return nil, err + return nil, errors.Wrap(err, "setting time quantum") } // Set cache type. @@ -415,7 +415,7 @@ func (i *Index) createFrame(name string, opt FrameOptions) (*Frame, error) { if err := f.saveMeta(); err != nil { f.Close() - return nil, err + return nil, errors.Wrap(err, "saving") } // Add to index's frame lookup. @@ -449,12 +449,12 @@ func (i *Index) DeleteFrame(name string) error { // Close frame. if err := f.Close(); err != nil { - return err + return errors.Wrap(err, "closing") } // Delete frame directory. if err := os.RemoveAll(i.FramePath(name)); err != nil { - return err + return errors.Wrap(err, "removing directory") } // Remove reference. From a1727205315362eee1c8884cb6d839be402a075c Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Thu, 10 May 2018 11:59:40 -0500 Subject: [PATCH 2/3] Update error check string --- holder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/holder.go b/holder.go index f048aac44..c7f9dabf4 100644 --- a/holder.go +++ b/holder.go @@ -119,7 +119,7 @@ func (h *Holder) Open() error { h.Logger.Printf("opening index: %s", filepath.Base(fi.Name())) index, err := h.newIndex(h.IndexPath(filepath.Base(fi.Name())), filepath.Base(fi.Name())) - if err == ErrName { + if errors.Cause(err) == ErrName { h.Logger.Printf("ERROR opening index: %s, err=%s", fi.Name(), err) continue } else if err != nil { From a229b0f30db3693caa82cb5a2c57754049ce49fb Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Thu, 10 May 2018 16:02:40 -0500 Subject: [PATCH 3/3] Make error string more specific --- index.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.go b/index.go index 419732fce..8e227af83 100644 --- a/index.go +++ b/index.go @@ -415,7 +415,7 @@ func (i *Index) createFrame(name string, opt FrameOptions) (*Frame, error) { if err := f.saveMeta(); err != nil { f.Close() - return nil, errors.Wrap(err, "saving") + return nil, errors.Wrap(err, "saving meta") } // Add to index's frame lookup.