aboutsummaryrefslogtreecommitdiffstats
path: root/ethdb/leveldb
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2019-03-11 23:01:47 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-03-12 18:32:02 +0800
commit8111b9dda5ad21c7da44f8ab563f2358126d95a4 (patch)
tree2334c94aea09499aca53b61a4ab30a744fd764b6 /ethdb/leveldb
parent7504dbd6eb3f62371f86b06b03ffd665690951f2 (diff)
downloadgo-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.tar
go-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.tar.gz
go-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.tar.bz2
go-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.tar.lz
go-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.tar.xz
go-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.tar.zst
go-tangerine-8111b9dda5ad21c7da44f8ab563f2358126d95a4.zip
ethdb, trie: tiny API tidy-up from the database rework pr
Diffstat (limited to 'ethdb/leveldb')
-rw-r--r--ethdb/leveldb/leveldb.go80
1 files changed, 40 insertions, 40 deletions
diff --git a/ethdb/leveldb/leveldb.go b/ethdb/leveldb/leveldb.go
index 11bba6b08..f730887d2 100644
--- a/ethdb/leveldb/leveldb.go
+++ b/ethdb/leveldb/leveldb.go
@@ -38,27 +38,27 @@ import (
)
const (
- // leveldbDegradationWarnInterval specifies how often warning should be printed
- // if the leveldb database cannot keep up with requested writes.
- leveldbDegradationWarnInterval = time.Minute
+ // degradationWarnInterval specifies how often warning should be printed if the
+ // leveldb database cannot keep up with requested writes.
+ degradationWarnInterval = time.Minute
- // leveldbMinCache is the minimum amount of memory in megabytes to allocate to
- // leveldb read and write caching, split half and half.
- leveldbMinCache = 16
+ // minCache is the minimum amount of memory in megabytes to allocate to leveldb
+ // read and write caching, split half and half.
+ minCache = 16
- // leveldbMinHandles is the minimum number of files handles to allocate to the
- // open database files.
- leveldbMinHandles = 16
+ // minHandles is the minimum number of files handles to allocate to the open
+ // database files.
+ minHandles = 16
// metricsGatheringInterval specifies the interval to retrieve leveldb database
// compaction, io and pause stats to report to the user.
metricsGatheringInterval = 3 * time.Second
)
-// LevelDBDatabase is a persistent key-value store. Apart from basic data storage
+// Database is a persistent key-value store. Apart from basic data storage
// functionality it also supports batch writes and iterating over the keyspace in
// binary-alphabetical order.
-type LevelDBDatabase struct {
+type Database struct {
fn string // filename for reporting
db *leveldb.DB // LevelDB instance
@@ -78,13 +78,13 @@ type LevelDBDatabase struct {
// New returns a wrapped LevelDB object. The namespace is the prefix that the
// metrics reporting should use for surfacing internal stats.
-func New(file string, cache int, handles int, namespace string) (*LevelDBDatabase, error) {
+func New(file string, cache int, handles int, namespace string) (*Database, error) {
// Ensure we have some minimal caching and file guarantees
- if cache < leveldbMinCache {
- cache = leveldbMinCache
+ if cache < minCache {
+ cache = minCache
}
- if handles < leveldbMinHandles {
- handles = leveldbMinHandles
+ if handles < minHandles {
+ handles = minHandles
}
logger := log.New("database", file)
logger.Info("Allocated cache and file handles", "cache", common.StorageSize(cache*1024*1024), "handles", handles)
@@ -103,7 +103,7 @@ func New(file string, cache int, handles int, namespace string) (*LevelDBDatabas
return nil, err
}
// Assemble the wrapper with all the registered metrics
- ldb := &LevelDBDatabase{
+ ldb := &Database{
fn: file,
db: db,
log: logger,
@@ -124,7 +124,7 @@ func New(file string, cache int, handles int, namespace string) (*LevelDBDatabas
// Close stops the metrics collection, flushes any pending data to disk and closes
// all io accesses to the underlying key-value store.
-func (db *LevelDBDatabase) Close() error {
+func (db *Database) Close() error {
db.quitLock.Lock()
defer db.quitLock.Unlock()
@@ -140,12 +140,12 @@ func (db *LevelDBDatabase) Close() error {
}
// Has retrieves if a key is present in the key-value store.
-func (db *LevelDBDatabase) Has(key []byte) (bool, error) {
+func (db *Database) Has(key []byte) (bool, error) {
return db.db.Has(key, nil)
}
// Get retrieves the given key if it's present in the key-value store.
-func (db *LevelDBDatabase) Get(key []byte) ([]byte, error) {
+func (db *Database) Get(key []byte) ([]byte, error) {
dat, err := db.db.Get(key, nil)
if err != nil {
return nil, err
@@ -154,19 +154,19 @@ func (db *LevelDBDatabase) Get(key []byte) ([]byte, error) {
}
// Put inserts the given value into the key-value store.
-func (db *LevelDBDatabase) Put(key []byte, value []byte) error {
+func (db *Database) Put(key []byte, value []byte) error {
return db.db.Put(key, value, nil)
}
// Delete removes the key from the key-value store.
-func (db *LevelDBDatabase) Delete(key []byte) error {
+func (db *Database) Delete(key []byte) error {
return db.db.Delete(key, nil)
}
// NewBatch creates a write-only key-value store that buffers changes to its host
// database until a final write is called.
-func (db *LevelDBDatabase) NewBatch() ethdb.Batch {
- return &levelDBBatch{
+func (db *Database) NewBatch() ethdb.Batch {
+ return &batch{
db: db.db,
b: new(leveldb.Batch),
}
@@ -174,18 +174,18 @@ func (db *LevelDBDatabase) NewBatch() ethdb.Batch {
// NewIterator creates a binary-alphabetical iterator over the entire keyspace
// contained within the leveldb database.
-func (db *LevelDBDatabase) NewIterator() ethdb.Iterator {
+func (db *Database) NewIterator() ethdb.Iterator {
return db.NewIteratorWithPrefix(nil)
}
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix.
-func (db *LevelDBDatabase) NewIteratorWithPrefix(prefix []byte) ethdb.Iterator {
+func (db *Database) NewIteratorWithPrefix(prefix []byte) ethdb.Iterator {
return db.db.NewIterator(util.BytesPrefix(prefix), nil)
}
// Stat returns a particular internal stat of the database.
-func (db *LevelDBDatabase) Stat(property string) (string, error) {
+func (db *Database) Stat(property string) (string, error) {
return db.db.GetProperty(property)
}
@@ -196,12 +196,12 @@ func (db *LevelDBDatabase) Stat(property string) (string, error) {
// A nil start is treated as a key before all keys in the data store; a nil limit
// is treated as a key after all keys in the data store. If both is nil then it
// will compact entire data store.
-func (db *LevelDBDatabase) Compact(start []byte, limit []byte) error {
+func (db *Database) Compact(start []byte, limit []byte) error {
return db.db.CompactRange(util.Range{Start: start, Limit: limit})
}
// Path returns the path to the database directory.
-func (db *LevelDBDatabase) Path() string {
+func (db *Database) Path() string {
return db.fn
}
@@ -222,7 +222,7 @@ func (db *LevelDBDatabase) Path() string {
//
// This is how the iostats look like (currently):
// Read(MB):3895.04860 Write(MB):3654.64712
-func (db *LevelDBDatabase) meter(refresh time.Duration) {
+func (db *Database) meter(refresh time.Duration) {
// Create the counters to store current and previous compaction values
compactions := make([][]float64, 2)
for i := 0; i < 2; i++ {
@@ -326,7 +326,7 @@ func (db *LevelDBDatabase) meter(refresh time.Duration) {
// If a warning that db is performing compaction has been displayed, any subsequent
// warnings will be withheld for one minute not to overwhelm the user.
if paused && delayN-delaystats[0] == 0 && duration.Nanoseconds()-delaystats[1] == 0 &&
- time.Now().After(lastWritePaused.Add(leveldbDegradationWarnInterval)) {
+ time.Now().After(lastWritePaused.Add(degradationWarnInterval)) {
db.log.Warn("Database compacting, degraded performance")
lastWritePaused = time.Now()
}
@@ -379,40 +379,40 @@ func (db *LevelDBDatabase) meter(refresh time.Duration) {
errc <- merr
}
-// levelDBBatch is a write-only leveldb batch that commits changes to its host
-// database when Write is called. A batch cannot be used concurrently.
-type levelDBBatch struct {
+// batch is a write-only leveldb batch that commits changes to its host database
+// when Write is called. A batch cannot be used concurrently.
+type batch struct {
db *leveldb.DB
b *leveldb.Batch
size int
}
// Put inserts the given value into the batch for later committing.
-func (b *levelDBBatch) Put(key, value []byte) error {
+func (b *batch) Put(key, value []byte) error {
b.b.Put(key, value)
b.size += len(value)
return nil
}
// Delete inserts the a key removal into the batch for later committing.
-func (b *levelDBBatch) Delete(key []byte) error {
+func (b *batch) Delete(key []byte) error {
b.b.Delete(key)
- b.size += 1
+ b.size++
return nil
}
// ValueSize retrieves the amount of data queued up for writing.
-func (b *levelDBBatch) ValueSize() int {
+func (b *batch) ValueSize() int {
return b.size
}
// Write flushes any accumulated data to disk.
-func (b *levelDBBatch) Write() error {
+func (b *batch) Write() error {
return b.db.Write(b.b, nil)
}
// Reset resets the batch for reuse.
-func (b *levelDBBatch) Reset() {
+func (b *batch) Reset() {
b.b.Reset()
b.size = 0
}