diff --git a/ethdb/mutation.go b/ethdb/mutation.go index 14f947ad72f32c47db92dbc228b0675f8ca61506..d793004ea50522dd96db35fbf44a61d1d587bc14 100644 --- a/ethdb/mutation.go +++ b/ethdb/mutation.go @@ -160,7 +160,7 @@ func (m *mutation) Commit() (uint64, error) { } m.mu.Lock() defer m.mu.Unlock() - tuples := make(MultiPutTuples, 0, m.puts.Size()*3) + tuples := make(MultiPutTuples, 0, m.puts.Len()*3) for bucketStr, bt := range m.puts.mp { bucketB := []byte(bucketStr) for key := range bt { @@ -188,7 +188,7 @@ func (m *mutation) Rollback() { func (m *mutation) Keys() ([][]byte, error) { m.mu.RLock() defer m.mu.RUnlock() - tuples := common.NewTuples(m.puts.Size(), 2, 1) + tuples := common.NewTuples(m.puts.Len(), 2, 1) for bucketStr, bt := range m.puts.mp { bucketB := []byte(bucketStr) for key := range bt { diff --git a/ethdb/mutation_puts.go b/ethdb/mutation_puts.go index 5413b10133f58eadbab8b8749a4e5ebf5ead56f3..894e746093c76187589ce70561ee5b4d04335a6b 100644 --- a/ethdb/mutation_puts.go +++ b/ethdb/mutation_puts.go @@ -3,12 +3,12 @@ package ethdb type puts struct { mp map[string]putsBucket //map[bucket]putsBucket size int + len int } func newPuts() *puts { return &puts{ - mp: make(map[string]putsBucket), - size: 0, + mp: make(map[string]putsBucket), } } @@ -19,14 +19,16 @@ func (p *puts) set(bucket, key, value []byte) { bucketPuts = make(putsBucket) p.mp[string(bucket)] = bucketPuts } + oldLen := len(bucketPuts) skey := string(key) if oldVal, ok := bucketPuts[skey]; ok { p.size -= len(oldVal) } else { p.size += len(skey) + 32 // Add fixed overhead per key } - bucketPuts[string(key)] = value + bucketPuts[skey] = value p.size += len(value) + p.len += len(bucketPuts) - oldLen } func (p *puts) get(bucket, key []byte) ([]byte, bool) { @@ -42,6 +44,10 @@ func (p *puts) Delete(bucket, key []byte) { p.set(bucket, key, nil) } +func (p *puts) Len() int { + return p.len +} + func (p *puts) Size() int { return p.size } diff --git a/ethdb/mutation_puts_test.go b/ethdb/mutation_puts_test.go deleted file mode 100644 index de225aadee7e8946f63b0582a830cba5a9f349af..0000000000000000000000000000000000000000 --- a/ethdb/mutation_puts_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package ethdb - -// -//func TestIndexMapper(t *testing.T) { -// im:=indexMapper{ -// cache: make(map[string]*dbutils.HistoryIndexBytes), -// chunkIDs: make(map[string][]uint64), -// } -// -// key:=[]byte("some key") -// if err:=im.Put(key,dbutils.NewHistoryIndex().Append(1)); err!=nil { -// t.Fatal(1, err) -// } -// index,err:=im.LastChunk(key) -// if err!=nil { -// t.Fatal(err) -// } -// if v,ok:= index.FirstElement(); !ok || v!=1 { -// t.Fatal(v, ok,im) -// } -// -// if err:=im.Put(key,dbutils.NewHistoryIndex().Append(2)); err!=nil { -// t.Fatal(2, err) -// } -// -// index,err=im.LastChunk(key) -// if err!=nil { -// t.Fatal(err) -// } -// -// if v,ok:= index.FirstElement(); !ok || v!=2 { -// t.Fatal(v, ok, im) -// } -//}