diff options
Diffstat (limited to 'eth/api.go')
-rw-r--r-- | eth/api.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/eth/api.go b/eth/api.go index 508070646..105886752 100644 --- a/eth/api.go +++ b/eth/api.go @@ -26,6 +26,7 @@ import ( "math/big" "os" "runtime" + "strings" "sync" "time" @@ -46,6 +47,7 @@ import ( "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/rpc" + "github.com/syndtr/goleveldb/leveldb" "golang.org/x/net/context" ) @@ -1566,6 +1568,22 @@ func NewPrivateDebugAPI(config *core.ChainConfig, eth *Ethereum) *PrivateDebugAP return &PrivateDebugAPI{config: config, eth: eth} } +// ChaindbProperty returns leveldb properties of the chain database. +func (api *PrivateDebugAPI) ChaindbProperty(property string) (string, error) { + ldb, ok := api.eth.chainDb.(interface { + LDB() *leveldb.DB + }) + if !ok { + return "", fmt.Errorf("chaindbProperty does not work for memory databases") + } + if property == "" { + property = "leveldb.stats" + } else if !strings.HasPrefix(property, "leveldb.") { + property = "leveldb." + property + } + return ldb.LDB().GetProperty(property) +} + // BlockTraceResults is the returned value when replaying a block to check for // consensus results and full VM trace logs for all included transactions. type BlockTraceResult struct { |