internal/ethapi: add debug.chaindbCompact
This commit is contained in:
parent
f2ae2f7eef
commit
66ee2dec53
@ -39,6 +39,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/rlp"
|
"github.com/ethereum/go-ethereum/rlp"
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
"github.com/syndtr/goleveldb/leveldb"
|
"github.com/syndtr/goleveldb/leveldb"
|
||||||
|
"github.com/syndtr/goleveldb/leveldb/util"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1321,6 +1322,24 @@ func (api *PrivateDebugAPI) ChaindbProperty(property string) (string, error) {
|
|||||||
return ldb.LDB().GetProperty(property)
|
return ldb.LDB().GetProperty(property)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *PrivateDebugAPI) ChaindbCompact() error {
|
||||||
|
ldb, ok := api.b.ChainDb().(interface {
|
||||||
|
LDB() *leveldb.DB
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("chaindbCompact does not work for memory databases")
|
||||||
|
}
|
||||||
|
for b := byte(0); b < 255; b++ {
|
||||||
|
glog.V(logger.Info).Infof("compacting chain DB range 0x%0.2X-0x%0.2X", b, b+1)
|
||||||
|
err := ldb.LDB().CompactRange(util.Range{Start: []byte{b}, Limit: []byte{b + 1}})
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("compaction error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// SetHead rewinds the head of the blockchain to a previous block.
|
// SetHead rewinds the head of the blockchain to a previous block.
|
||||||
func (api *PrivateDebugAPI) SetHead(number rpc.HexNumber) {
|
func (api *PrivateDebugAPI) SetHead(number rpc.HexNumber) {
|
||||||
api.b.SetHead(uint64(number.Int64()))
|
api.b.SetHead(uint64(number.Int64()))
|
||||||
|
@ -337,6 +337,10 @@ web3._extend({
|
|||||||
params: 1,
|
params: 1,
|
||||||
outputFormatter: console.log
|
outputFormatter: console.log
|
||||||
}),
|
}),
|
||||||
|
new web3._extend.Method({
|
||||||
|
name: 'chaindbCompact',
|
||||||
|
call: 'debug_chaindbCompact',
|
||||||
|
}),
|
||||||
new web3._extend.Method({
|
new web3._extend.Method({
|
||||||
name: 'metrics',
|
name: 'metrics',
|
||||||
call: 'debug_metrics',
|
call: 'debug_metrics',
|
||||||
|
Loading…
Reference in New Issue
Block a user