Browse Source

libs/db: Add cleveldb.Stats() (#3379)

Fixes: #3378

* Add stats to cleveldb implementation

* update changelog

* remote TODO

also
- sort keys
- preallocate memory

* fix const initializer []string literal is not a constant

* add test
pull/3382/head
Jack Zampolin 6 years ago
committed by Anton Kaliaev
parent
commit
8c9df30e28
3 changed files with 29 additions and 3 deletions
  1. +9
    -0
      CHANGELOG_PENDING.md
  2. +11
    -3
      libs/db/c_level_db.go
  3. +9
    -0
      libs/db/c_level_db_test.go

+ 9
- 0
CHANGELOG_PENDING.md View File

@ -30,6 +30,15 @@ Special thanks to external contributors on this release:
### IMPROVEMENTS: ### IMPROVEMENTS:
- [libs/common] \#3238 exit with zero (0) code upon receiving SIGTERM/SIGINT - [libs/common] \#3238 exit with zero (0) code upon receiving SIGTERM/SIGINT
- [libs/db] \#3378 CLevelDB#Stats now returns the following properties:
- leveldb.num-files-at-level{n}
- leveldb.stats
- leveldb.sstables
- leveldb.blockpool
- leveldb.cachedblock
- leveldb.openedtables
- leveldb.alivesnaps
- leveldb.aliveiters
### BUG FIXES: ### BUG FIXES:


+ 11
- 3
libs/db/c_level_db.go View File

@ -128,10 +128,18 @@ func (db *CLevelDB) Print() {
// Implements DB. // Implements DB.
func (db *CLevelDB) Stats() map[string]string { func (db *CLevelDB) Stats() map[string]string {
// TODO: Find the available properties for the C LevelDB implementation
keys := []string{}
keys := []string{
"leveldb.aliveiters",
"leveldb.alivesnaps",
"leveldb.blockpool",
"leveldb.cachedblock",
"leveldb.num-files-at-level{n}",
"leveldb.openedtables",
"leveldb.sstables",
"leveldb.stats",
}
stats := make(map[string]string)
stats := make(map[string]string, len(keys))
for _, key := range keys { for _, key := range keys {
str := db.db.PropertyValue(key) str := db.db.PropertyValue(key)
stats[key] = str stats[key] = str


+ 9
- 0
libs/db/c_level_db_test.go View File

@ -99,3 +99,12 @@ func TestCLevelDBBackend(t *testing.T) {
_, ok := db.(*CLevelDB) _, ok := db.(*CLevelDB)
assert.True(t, ok) assert.True(t, ok)
} }
func TestCLevelDBStats(t *testing.T) {
name := fmt.Sprintf("test_%x", cmn.RandStr(12))
dir := os.TempDir()
db := NewDB(name, LevelDBBackend, dir)
defer cleanupDBDir(dir, name)
assert.NotEmpty(t, db.Stats())
}

Loading…
Cancel
Save