Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
43e4a650
Commit
43e4a650
authored
Jun 22, 2015
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core, ethdb: instrument the block and state db
Conflicts: ethdb/database.go
parent
7bd71fa8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
6 deletions
+28
-6
chain_manager.go
core/chain_manager.go
+14
-1
database.go
ethdb/database.go
+14
-5
No files found.
core/chain_manager.go
View file @
43e4a650
...
...
@@ -13,6 +13,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
...
...
@@ -30,6 +31,10 @@ var (
blockNumPre
=
[]
byte
(
"block-num-"
)
blockInsertTimer
=
metrics
.
GetOrRegisterTimer
(
"core/BlockInsertions"
,
metrics
.
DefaultRegistry
)
blockdbGetMeter
=
metrics
.
GetOrRegisterMeter
(
"core/blockdb/Gets"
,
metrics
.
DefaultRegistry
)
blockdbPutMeter
=
metrics
.
GetOrRegisterMeter
(
"core/blockdb/Puts"
,
metrics
.
DefaultRegistry
)
statedbGetMeter
=
metrics
.
GetOrRegisterMeter
(
"core/statedb/Gets"
,
metrics
.
DefaultRegistry
)
statedbPutMeter
=
metrics
.
GetOrRegisterMeter
(
"core/statedb/Puts"
,
metrics
.
DefaultRegistry
)
)
const
(
...
...
@@ -121,7 +126,15 @@ func NewChainManager(genesis *types.Block, blockDb, stateDb common.Database, pow
cache
:
NewBlockCache
(
blockCacheLimit
),
pow
:
pow
,
}
// Instrument the block and state databases
if
db
,
ok
:=
blockDb
.
(
*
ethdb
.
LDBDatabase
);
ok
{
db
.
GetMeter
=
blockdbGetMeter
db
.
PutMeter
=
blockdbPutMeter
}
if
db
,
ok
:=
stateDb
.
(
*
ethdb
.
LDBDatabase
);
ok
{
db
.
GetMeter
=
statedbGetMeter
db
.
PutMeter
=
statedbPutMeter
}
// Check the genesis block given to the chain manager. If the genesis block mismatches block number 0
// throw an error. If no block or the same block's found continue.
if
g
:=
bc
.
GetBlockByNumber
(
0
);
g
!=
nil
&&
g
.
Hash
()
!=
genesis
.
Hash
()
{
...
...
ethdb/database.go
View file @
43e4a650
...
...
@@ -4,6 +4,7 @@ import (
"github.com/ethereum/go-ethereum/compression/rle"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/rcrowley/go-metrics"
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/errors"
"github.com/syndtr/goleveldb/leveldb/iterator"
...
...
@@ -13,10 +14,11 @@ import (
var
OpenFileLimit
=
64
type
LDBDatabase
struct
{
// filename for reporting
fn
string
// LevelDB instance
db
*
leveldb
.
DB
fn
string
// filename for reporting
db
*
leveldb
.
DB
// LevelDB instance
GetMeter
metrics
.
Meter
// Meter for measuring the database get requests
PutMeter
metrics
.
Meter
// Meter for measuring the database put requests
}
// NewLDBDatabase returns a LevelDB wrapped object. LDBDatabase does not persist data by
...
...
@@ -43,7 +45,11 @@ func NewLDBDatabase(file string) (*LDBDatabase, error) {
// Put puts the given key / value to the queue
func
(
self
*
LDBDatabase
)
Put
(
key
[]
byte
,
value
[]
byte
)
error
{
return
self
.
db
.
Put
(
key
,
rle
.
Compress
(
value
),
nil
)
dat
:=
rle
.
Compress
(
value
)
if
self
.
PutMeter
!=
nil
{
self
.
PutMeter
.
Mark
(
int64
(
len
(
dat
)))
}
return
self
.
db
.
Put
(
key
,
dat
,
nil
)
}
// Get returns the given key if it's present.
...
...
@@ -52,6 +58,9 @@ func (self *LDBDatabase) Get(key []byte) ([]byte, error) {
if
err
!=
nil
{
return
nil
,
err
}
if
self
.
GetMeter
!=
nil
{
self
.
GetMeter
.
Mark
(
int64
(
len
(
dat
)))
}
return
rle
.
Decompress
(
dat
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment