aboutsummaryrefslogtreecommitdiff
path: root/db.go
diff options
context:
space:
mode:
authorBen Johnson <benbjohnson@yahoo.com>2014-03-24 07:38:27 -0600
committerBen Johnson <benbjohnson@yahoo.com>2014-03-24 07:38:27 -0600
commit3c1ecb925ef3748ba25111599a5d3a439224204b (patch)
tree673d5901596dd4760ebcc3ea2409f60e2d5cf967 /db.go
parentCheck errors from file close in DB.CopyFile (diff)
downloaddedo-3c1ecb925ef3748ba25111599a5d3a439224204b.tar.gz
dedo-3c1ecb925ef3748ba25111599a5d3a439224204b.tar.xz
Resolve remaining errcheck warnings.
Diffstat (limited to 'db.go')
-rw-r--r--db.go33
1 files changed, 23 insertions, 10 deletions
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
+ }
+
+ if err := t.Rollback(); err != nil {
+ return err
+ }
- 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()