diff --git a/pkg/core/storage/boltdb_store.go b/pkg/core/storage/boltdb_store.go index 41a8f8291..f98eaf78a 100644 --- a/pkg/core/storage/boltdb_store.go +++ b/pkg/core/storage/boltdb_store.go @@ -81,12 +81,6 @@ func (s *BoltDBStore) Delete(key []byte) error { }) } -// PutBatch implements the Store interface. -func (s *BoltDBStore) PutBatch(batch Batch) error { - memBatch := batch.(*MemoryBatch) - return s.PutChangeSet(memBatch.mem, memBatch.stor) -} - // PutChangeSet implements the Store interface. func (s *BoltDBStore) PutChangeSet(puts map[string][]byte, stores map[string][]byte) error { var err error @@ -168,12 +162,6 @@ func boltSeek(txopener func(func(*bbolt.Tx) error) error, rng SeekRange, f func( }) } -// Batch implements the Batch interface and returns a boltdb -// compatible Batch. -func (s *BoltDBStore) Batch() Batch { - return newMemoryBatch() -} - // Close releases all db resources. func (s *BoltDBStore) Close() error { return s.db.Close() diff --git a/pkg/core/storage/leveldb_store.go b/pkg/core/storage/leveldb_store.go index 578a0157c..2c35d3374 100644 --- a/pkg/core/storage/leveldb_store.go +++ b/pkg/core/storage/leveldb_store.go @@ -55,12 +55,6 @@ func (s *LevelDBStore) Delete(key []byte) error { return s.db.Delete(key, nil) } -// PutBatch implements the Store interface. -func (s *LevelDBStore) PutBatch(batch Batch) error { - lvldbBatch := batch.(*leveldb.Batch) - return s.db.Write(lvldbBatch, nil) -} - // PutChangeSet implements the Store interface. func (s *LevelDBStore) PutChangeSet(puts map[string][]byte, stores map[string][]byte) error { tx, err := s.db.OpenTransaction() @@ -133,12 +127,6 @@ func (s *LevelDBStore) seek(iter iterator.Iterator, backwards bool, f func(k, v iter.Release() } -// Batch implements the Batch interface and returns a leveldb -// compatible Batch. -func (s *LevelDBStore) Batch() Batch { - return new(leveldb.Batch) -} - // Close implements the Store interface. func (s *LevelDBStore) Close() error { return s.db.Close() diff --git a/pkg/core/storage/store.go b/pkg/core/storage/store.go index de76669f0..a99c5cc62 100644 --- a/pkg/core/storage/store.go +++ b/pkg/core/storage/store.go @@ -85,11 +85,9 @@ type ( // Store is anything that can persist and retrieve the blockchain. // information. Store interface { - Batch() Batch Delete(k []byte) error Get([]byte) ([]byte, error) Put(k, v []byte) error - PutBatch(Batch) error // PutChangeSet allows to push prepared changeset to the Store. PutChangeSet(puts map[string][]byte, stor map[string][]byte) error // Seek can guarantee that provided key (k) and value (v) are the only valid until the next call to f. diff --git a/pkg/core/storage/storeandbatch_test.go b/pkg/core/storage/storeandbatch_test.go index fbb5a5f35..67da01cf1 100644 --- a/pkg/core/storage/storeandbatch_test.go +++ b/pkg/core/storage/storeandbatch_test.go @@ -37,27 +37,6 @@ func testStoreGetNonExistent(t *testing.T, s Store) { assert.Equal(t, err, ErrKeyNotFound) } -func testStorePutBatch(t *testing.T, s Store) { - var ( - key = []byte("foo") - value = []byte("bar") - batch = s.Batch() - ) - // Test that key and value are copied when batching. - keycopy := slice.Copy(key) - valuecopy := slice.Copy(value) - - batch.Put(keycopy, valuecopy) - copy(valuecopy, key) - copy(keycopy, value) - - require.NoError(t, s.PutBatch(batch)) - newVal, err := s.Get(key) - assert.Nil(t, err) - require.Equal(t, value, newVal) - assert.Equal(t, value, newVal) -} - func testStoreSeek(t *testing.T, s Store) { // Use the same set of kvs to test Seek with different prefix/start values. kvs := []KeyValue{ @@ -254,74 +233,6 @@ func testStorePutAndDelete(t *testing.T, s Store) { assert.Nil(t, err) } -func testStorePutBatchWithDelete(t *testing.T, s Store) { - var ( - toBeStored = map[string][]byte{ - "foo": []byte("bar"), - "bar": []byte("baz"), - } - deletedInBatch = map[string][]byte{ - "edc": []byte("rfv"), - "tgb": []byte("yhn"), - } - readdedToBatch = map[string][]byte{ - "yhn": []byte("ujm"), - } - toBeDeleted = map[string][]byte{ - "qaz": []byte("wsx"), - "qwe": []byte("123"), - } - toStay = map[string][]byte{ - "key": []byte("val"), - "faa": []byte("bra"), - } - ) - for k, v := range toBeDeleted { - require.NoError(t, s.Put([]byte(k), v)) - } - for k, v := range toStay { - require.NoError(t, s.Put([]byte(k), v)) - } - batch := s.Batch() - for k, v := range toBeStored { - batch.Put([]byte(k), v) - } - for k := range toBeDeleted { - batch.Delete([]byte(k)) - } - for k, v := range readdedToBatch { - batch.Put([]byte(k), v) - } - for k, v := range deletedInBatch { - batch.Put([]byte(k), v) - } - for k := range deletedInBatch { - batch.Delete([]byte(k)) - } - for k := range readdedToBatch { - batch.Delete([]byte(k)) - } - for k, v := range readdedToBatch { - batch.Put([]byte(k), v) - } - require.NoError(t, s.PutBatch(batch)) - toBe := []map[string][]byte{toStay, toBeStored, readdedToBatch} - notToBe := []map[string][]byte{deletedInBatch, toBeDeleted} - for _, kvs := range toBe { - for k, v := range kvs { - value, err := s.Get([]byte(k)) - assert.Nil(t, err) - assert.Equal(t, value, v) - } - } - for _, kvs := range notToBe { - for k, v := range kvs { - _, err := s.Get([]byte(k)) - assert.Equal(t, ErrKeyNotFound, err, "%s:%s", k, v) - } - } -} - func testStoreSeekGC(t *testing.T, s Store) { kvs := []KeyValue{ {[]byte("10"), []byte("bar")}, @@ -365,9 +276,9 @@ func TestAllDBs(t *testing.T) { {"Memory", newMemoryStoreForTesting}, } var tests = []dbTestFunction{testStorePutAndGet, - testStoreGetNonExistent, testStorePutBatch, testStoreSeek, + testStoreGetNonExistent, testStoreSeek, testStoreDeleteNonExistent, testStorePutAndDelete, - testStorePutBatchWithDelete, testStoreSeekGC} + testStoreSeekGC} for _, db := range DBs { for _, test := range tests { s := db.create(t)