diff --git a/index/store/goleveldb/store.go b/index/store/goleveldb/store.go index f4ee0952..a3e371f2 100644 --- a/index/store/goleveldb/store.go +++ b/index/store/goleveldb/store.go @@ -35,9 +35,11 @@ func Open(path string, config map[string]interface{}) (*Store, error) { opts: &opt.Options{}, } - applyConfig(rv.opts, config) + _, err := applyConfig(rv.opts, config) + if err != nil { + return nil, err + } - var err error rv.db, err = leveldb.OpenFile(rv.path, rv.opts) if err != nil { return nil, err @@ -89,8 +91,7 @@ func (ldbs *Store) deletelocked(key []byte) error { } func (ldbs *Store) Close() error { - ldbs.db.Close() - return nil + return ldbs.db.Close() } func (ldbs *Store) iterator(key []byte) store.KVIterator { diff --git a/index/store/goleveldb/store_test.go b/index/store/goleveldb/store_test.go index 11dd0628..75328fe1 100644 --- a/index/store/goleveldb/store_test.go +++ b/index/store/goleveldb/store_test.go @@ -22,25 +22,45 @@ var leveldbTestOptions = map[string]interface{}{ } func TestLevelDBStore(t *testing.T) { - defer os.RemoveAll("test") + defer func() { + err := os.RemoveAll("test") + if err != nil { + t.Fatal(err) + } + }() s, err := Open("test", leveldbTestOptions) if err != nil { t.Fatal(err) } - defer s.Close() + defer func() { + err := s.Close() + if err != nil { + t.Fatal(err) + } + }() CommonTestKVStore(t, s) } func TestReaderIsolation(t *testing.T) { - defer os.RemoveAll("test") + defer func() { + err := os.RemoveAll("test") + if err != nil { + t.Fatal(err) + } + }() s, err := Open("test", leveldbTestOptions) if err != nil { t.Fatal(err) } - defer s.Close() + defer func() { + err := s.Close() + if err != nil { + t.Fatal(err) + } + }() CommonTestReaderIsolation(t, s) } @@ -79,13 +99,21 @@ func CommonTestKVStore(t *testing.T, s store.KVStore) { if err != nil { t.Fatal(err) } - writer.Close() + err = writer.Close() + if err != nil { + t.Fatal(err) + } reader, err := s.Reader() if err != nil { t.Error(err) } - defer reader.Close() + defer func() { + err := reader.Close() + if err != nil { + t.Fatal(err) + } + }() it := reader.Iterator([]byte("b")) key, val, valid := it.Current() if !valid { @@ -122,7 +150,10 @@ func CommonTestKVStore(t *testing.T, s store.KVStore) { t.Fatalf("expected value val-i, got %s", val) } - it.Close() + err = it.Close() + if err != nil { + t.Fatal(err) + } } func CommonTestReaderIsolation(t *testing.T, s store.KVStore) { @@ -135,14 +166,22 @@ func CommonTestReaderIsolation(t *testing.T, s store.KVStore) { if err != nil { t.Fatal(err) } - writer.Close() + err = writer.Close() + if err != nil { + t.Fatal(err) + } // create an isolated reader reader, err := s.Reader() if err != nil { t.Error(err) } - defer reader.Close() + defer func() { + err := reader.Close() + if err != nil { + t.Fatal(err) + } + }() // verify that we see the value already inserted val, err := reader.Get([]byte("a")) @@ -156,7 +195,12 @@ func CommonTestReaderIsolation(t *testing.T, s store.KVStore) { // verify that an iterator sees it count := 0 it := reader.Iterator([]byte{0}) - defer it.Close() + defer func() { + err := it.Close() + if err != nil { + t.Fatal(err) + } + }() for it.Valid() { it.Next() count++ @@ -174,14 +218,22 @@ func CommonTestReaderIsolation(t *testing.T, s store.KVStore) { if err != nil { t.Fatal(err) } - writer.Close() + err = writer.Close() + if err != nil { + t.Fatal(err) + } // ensure that a newer reader sees it newReader, err := s.Reader() if err != nil { t.Error(err) } - defer newReader.Close() + defer func() { + err := newReader.Close() + if err != nil { + t.Fatal(err) + } + }() val, err = newReader.Get([]byte("b")) if err != nil { t.Error(err) @@ -193,7 +245,12 @@ func CommonTestReaderIsolation(t *testing.T, s store.KVStore) { // ensure that the director iterator sees it count = 0 it = newReader.Iterator([]byte{0}) - defer it.Close() + defer func() { + err := it.Close() + if err != nil { + t.Fatal(err) + } + }() for it.Valid() { it.Next() count++ @@ -214,7 +271,12 @@ func CommonTestReaderIsolation(t *testing.T, s store.KVStore) { // and ensure that the iterator on the isolated reader also does not count = 0 it = reader.Iterator([]byte{0}) - defer it.Close() + defer func() { + err := it.Close() + if err != nil { + t.Fatal(err) + } + }() for it.Valid() { it.Next() count++ diff --git a/index/upside_down/benchmark_goleveldb_test.go b/index/upside_down/benchmark_goleveldb_test.go index 778c589a..2529b9b5 100644 --- a/index/upside_down/benchmark_goleveldb_test.go +++ b/index/upside_down/benchmark_goleveldb_test.go @@ -25,8 +25,18 @@ func BenchmarkLevelDBIndexing1Workers(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndex(b, s, 1) } @@ -36,8 +46,18 @@ func BenchmarkLevelDBIndexing2Workers(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndex(b, s, 2) } @@ -47,8 +67,18 @@ func BenchmarkLevelDBIndexing4Workers(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndex(b, s, 4) } @@ -60,8 +90,18 @@ func BenchmarkLevelDBIndexing1Workers10Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 1, 10) } @@ -71,8 +111,18 @@ func BenchmarkLevelDBIndexing2Workers10Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 2, 10) } @@ -82,8 +132,18 @@ func BenchmarkLevelDBIndexing4Workers10Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 4, 10) } @@ -93,8 +153,18 @@ func BenchmarkLevelDBIndexing1Workers100Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 1, 100) } @@ -104,8 +174,18 @@ func BenchmarkLevelDBIndexing2Workers100Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 2, 100) } @@ -115,8 +195,18 @@ func BenchmarkLevelDBIndexing4Workers100Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 4, 100) } @@ -126,8 +216,18 @@ func BenchmarkLevelDBIndexing1Workers1000Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 1, 1000) } @@ -137,8 +237,18 @@ func BenchmarkLevelDBIndexing2Workers1000Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 2, 1000) } @@ -148,8 +258,18 @@ func BenchmarkLevelDBIndexing4Workers1000Batch(b *testing.B) { if err != nil { b.Fatal(err) } - defer os.RemoveAll("test") - defer s.Close() + defer func() { + err := os.RemoveAll("test") + if err != nil { + b.Fatal(err) + } + }() + defer func() { + err := s.Close() + if err != nil { + b.Fatal(err) + } + }() CommonBenchmarkIndexBatch(b, s, 4, 1000) }