From 3c1ecb925ef3748ba25111599a5d3a439224204b Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Mon, 24 Mar 2014 07:38:27 -0600 Subject: [PATCH] Resolve remaining errcheck warnings. --- Makefile | 7 ++++++- db.go | 33 +++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 4cc71b6..2d0fd3f 100644 --- a/Makefile +++ b/Makefile @@ -18,10 +18,15 @@ cpuprofile: fmt @go test -c @./bolt.test -test.v -test.run="^X" -test.bench=$(BENCH) -test.cpuprofile cpu.prof +# go get github.com/kisielk/errcheck +errcheck: + @echo "=== errcheck ===" + @errcheck github.com/boltdb/bolt + fmt: @go fmt ./... -test: fmt +test: fmt errcheck @echo "=== TESTS ===" @go test -v -cover -test.run=$(TEST) @echo "" diff --git a/db.go b/db.go index ab7c5a1..51c24d3 100644 --- a/db.go +++ b/db.go @@ -66,11 +66,11 @@ func (db *DB) Open(path string, mode os.FileMode) error { // Open data file and separate sync handler for metadata writes. db.path = path if db.file, err = os.OpenFile(db.path, os.O_RDWR|os.O_CREATE, mode); err != nil { - db.close() + _ = db.close() return err } if db.metafile, err = os.OpenFile(db.path, os.O_RDWR|os.O_SYNC, mode); err != nil { - db.close() + _ = db.close() return err } @@ -96,7 +96,7 @@ func (db *DB) Open(path string, mode os.FileMode) error { // Memory map the data file. if err := db.mmap(0); err != nil { - db.close() + _ = db.close() return err } @@ -369,7 +369,7 @@ func (db *DB) Do(fn func(*Tx) error) error { err = fn(t) t.managed = false if err != nil { - t.Rollback() + _ = t.Rollback() return err } @@ -385,7 +385,6 @@ func (db *DB) With(fn func(*Tx) error) error { if err != nil { return err } - defer t.Rollback() // Mark as a managed tx so that the inner function cannot manually rollback. t.managed = true @@ -393,8 +392,16 @@ func (db *DB) With(fn func(*Tx) error) error { // If an error is returned from the function then pass it through. err = fn(t) t.managed = false + if err != nil { + _ = t.Rollback() + return err + } - return err + if err := t.Rollback(); err != nil { + return err + } + + return nil } // Copy writes the entire database to a writer. @@ -406,20 +413,26 @@ func (db *DB) Copy(w io.Writer) error { if err != nil { return err } - defer t.Rollback() // Open reader on the database. f, err := os.Open(db.path) if err != nil { + _ = t.Rollback() return err } - defer f.Close() // Copy everything. if _, err := io.Copy(w, f); err != nil { + _ = t.Rollback() + _ = f.Close() return err } - return nil + + if err := t.Rollback(); err != nil { + _ = f.Close() + return err + } + return f.Close() } // CopyFile copies the entire database to file at the given path. @@ -430,10 +443,10 @@ func (db *DB) CopyFile(path string, mode os.FileMode) error { if err != nil { return err } - defer f.Close() err = db.Copy(f) if err != nil { + _ = f.Close() return err } return f.Close()