From 6e28624528d4cf7629229abdd4b434ea91cdebbd Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Thu, 10 May 2018 13:09:07 -0500 Subject: [PATCH] Wrap errors in fragment --- fragment.go | 114 ++++++++++++++++++++++++------------------------- holder_test.go | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/fragment.go b/fragment.go index 7168f4443..b2ce7f14d 100644 --- a/fragment.go +++ b/fragment.go @@ -21,7 +21,6 @@ import ( "container/heap" "context" "encoding/binary" - "errors" "fmt" "hash" "io" @@ -42,6 +41,7 @@ import ( "github.com/pilosa/pilosa/internal" "github.com/pilosa/pilosa/pql" "github.com/pilosa/pilosa/roaring" + "github.com/pkg/errors" ) const ( @@ -160,12 +160,12 @@ func (f *Fragment) Open() error { if err := func() error { // Initialize storage in a function so we can close if anything goes wrong. if err := f.openStorage(); err != nil { - return err + return errors.Wrap(err, "opening storage") } // Fill cache with rows persisted to disk. if err := f.openCache(); err != nil { - return err + return errors.Wrap(err, "opening cache") } // Clear checksums. @@ -206,7 +206,7 @@ func (f *Fragment) openStorage() error { // If the file is empty then initialize it with an empty bitmap. fi, err := f.file.Stat() if err != nil { - return err + return errors.Wrap(err, "statting file before") } else if fi.Size() == 0 { bi := bufio.NewWriter(f.file) if _, err := f.storage.WriteTo(bi); err != nil { @@ -215,7 +215,7 @@ func (f *Fragment) openStorage() error { bi.Flush() fi, err = f.file.Stat() if err != nil { - return err + return errors.Wrap(err, "statting file after") } } @@ -298,13 +298,13 @@ func (f *Fragment) close() error { // Flush cache if closing gracefully. if err := f.flushCache(); err != nil { f.Logger.Printf("fragment: error flushing cache on close: err=%s, path=%s", err, f.path) - return err + return errors.Wrap(err, "flushing cache") } // Close underlying storage. if err := f.closeStorage(); err != nil { f.Logger.Printf("fragment: error closing storage: err=%s, path=%s", err, f.path) - return err + return errors.Wrap(err, "closing storage") } // Remove checksums. @@ -393,12 +393,12 @@ func (f *Fragment) setBit(rowID, columnID uint64) (changed bool, err error) { // Determine the position of the bit in the storage. pos, err := f.pos(rowID, columnID) if err != nil { - return false, err + return false, errors.Wrap(err, "getting bit ops") } // Write to storage. if changed, err = f.storage.Add(pos); err != nil { - return false, err + return false, errors.Wrap(err, "writing") } // Don't update the cache if nothing changed. @@ -411,7 +411,7 @@ func (f *Fragment) setBit(rowID, columnID uint64) (changed bool, err error) { // Increment number of operations until snapshot is required. if err := f.incrementOpN(); err != nil { - return false, err + return false, errors.Wrap(err, "incrementing") } // Get the row from row cache or fragment.storage. @@ -445,12 +445,12 @@ func (f *Fragment) clearBit(rowID, columnID uint64) (changed bool, err error) { // Determine the position of the bit in the storage. pos, err := f.pos(rowID, columnID) if err != nil { - return false, err + return false, errors.Wrap(err, "getting bit pos") } // Write to storage. if changed, err = f.storage.Remove(pos); err != nil { - return false, err + return false, errors.Wrap(err, "writing") } // Don't update the cache if nothing changed. @@ -463,7 +463,7 @@ func (f *Fragment) clearBit(rowID, columnID uint64) (changed bool, err error) { // Increment number of operations until snapshot is required. if err := f.incrementOpN(); err != nil { - return false, err + return false, errors.Wrap(err, "incrementing") } // Get the row from cache or fragment.storage. @@ -493,7 +493,7 @@ func (f *Fragment) FieldValue(columnID uint64, bitDepth uint) (value uint64, exi // If existence bit is unset then ignore remaining bits. if v, err := f.bit(uint64(bitDepth), columnID); err != nil { - return 0, false, err + return 0, false, errors.Wrap(err, "getting existence bit") } else if !v { return 0, false, nil } @@ -501,7 +501,7 @@ func (f *Fragment) FieldValue(columnID uint64, bitDepth uint) (value uint64, exi // Compute other bits into a value. for i := uint(0); i < bitDepth; i++ { if v, err := f.bit(uint64(i), columnID); err != nil { - return 0, false, err + return 0, false, errors.Wrapf(err, "getting value bit %d", i) } else if v { value |= (1 << i) } @@ -518,13 +518,13 @@ func (f *Fragment) SetFieldValue(columnID uint64, bitDepth uint, value uint64) ( for i := uint(0); i < bitDepth; i++ { if value&(1<