forked from cerc-io/plugeth
eth: add chaindbProperty to debug API
This commit is contained in:
parent
05e257c22c
commit
bcd8aeefdd
18
eth/api.go
18
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 {
|
||||
|
@ -295,6 +295,12 @@ web3._extend({
|
||||
call: 'debug_dumpBlock',
|
||||
params: 1
|
||||
}),
|
||||
new web3._extend.Method({
|
||||
name: 'chaindbProperty',
|
||||
call: 'debug_chaindbProperty',
|
||||
params: 1,
|
||||
outputFormatter: console.log
|
||||
}),
|
||||
new web3._extend.Method({
|
||||
name: 'metrics',
|
||||
call: 'debug_metrics',
|
||||
|
Loading…
Reference in New Issue
Block a user