Merge pull request #1271 from alanbernstein/wrap-errors-index

Wrap errors index
This commit is contained in:
alanbernstein 2018-05-10 19:13:17 -05:00 committed by GitHub
commit cc39733bf5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 23 deletions

View file

@ -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 {

View file

@ -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=opening storage: invalid database") {
if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=test, err=opening attrstore: opening storage: 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=loading meta: unmarshaling: unexpected EOF") {
if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=foo, err=opening frames: open frame: name=bar, err=loading meta: 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=opening attrstore: opening storage: invalid database") {
if err := h.Reopen(); err == nil || !strings.Contains(err.Error(), "open index: name=foo, err=opening frames: open frame: name=bar, err=opening attrstore: opening storage: invalid database") {
t.Fatalf("unexpected error: %s", err)
}
})

View file

@ -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 meta")
}
// 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.