@@ -29,14 +29,13 @@ import (
29
29
"github.com/ethereum/go-ethereum/common"
30
30
"github.com/ethereum/go-ethereum/console"
31
31
"github.com/ethereum/go-ethereum/core"
32
+ "github.com/ethereum/go-ethereum/core/rawdb"
32
33
"github.com/ethereum/go-ethereum/core/state"
33
34
"github.com/ethereum/go-ethereum/core/types"
34
35
"github.com/ethereum/go-ethereum/eth/downloader"
35
- "github.com/ethereum/go-ethereum/ethdb"
36
36
"github.com/ethereum/go-ethereum/event"
37
37
"github.com/ethereum/go-ethereum/log"
38
38
"github.com/ethereum/go-ethereum/trie"
39
- "github.com/syndtr/goleveldb/leveldb/util"
40
39
"gopkg.in/urfave/cli.v1"
41
40
)
42
41
@@ -193,14 +192,15 @@ func initGenesis(ctx *cli.Context) error {
193
192
defer stack .Close ()
194
193
195
194
for _ , name := range []string {"chaindata" , "lightchaindata" } {
196
- chaindb , err := stack .OpenDatabase (name , 0 , 0 )
195
+ chaindb , err := stack .OpenDatabase (name , 0 , 0 , "" )
197
196
if err != nil {
198
197
utils .Fatalf ("Failed to open database: %v" , err )
199
198
}
200
199
_ , hash , err := core .SetupGenesisBlock (chaindb , genesis )
201
200
if err != nil {
202
201
utils .Fatalf ("Failed to write genesis block: %v" , err )
203
202
}
203
+ chaindb .Close ()
204
204
log .Info ("Successfully wrote genesis state" , "database" , name , "hash" , hash )
205
205
}
206
206
return nil
@@ -213,8 +213,8 @@ func importChain(ctx *cli.Context) error {
213
213
stack := makeFullNode (ctx )
214
214
defer stack .Close ()
215
215
216
- chain , chainDb := utils .MakeChain (ctx , stack )
217
- defer chainDb .Close ()
216
+ chain , db := utils .MakeChain (ctx , stack )
217
+ defer db .Close ()
218
218
219
219
// Start periodically gathering memory profiles
220
220
var peakMemAlloc , peakMemSys uint64
@@ -249,15 +249,13 @@ func importChain(ctx *cli.Context) error {
249
249
fmt .Printf ("Import done in %v.\n \n " , time .Since (start ))
250
250
251
251
// Output pre-compaction stats mostly to see the import trashing
252
- db := chainDb .(* ethdb.LDBDatabase )
253
-
254
- stats , err := db .LDB ().GetProperty ("leveldb.stats" )
252
+ stats , err := db .Stat ("leveldb.stats" )
255
253
if err != nil {
256
254
utils .Fatalf ("Failed to read database stats: %v" , err )
257
255
}
258
256
fmt .Println (stats )
259
257
260
- ioStats , err := db .LDB (). GetProperty ("leveldb.iostats" )
258
+ ioStats , err := db .Stat ("leveldb.iostats" )
261
259
if err != nil {
262
260
utils .Fatalf ("Failed to read database iostats: %v" , err )
263
261
}
@@ -282,23 +280,22 @@ func importChain(ctx *cli.Context) error {
282
280
// Compact the entire database to more accurately measure disk io and print the stats
283
281
start = time .Now ()
284
282
fmt .Println ("Compacting entire database..." )
285
- if err = db .LDB (). CompactRange (util. Range {} ); err != nil {
283
+ if err = db .Compact ( nil , nil ); err != nil {
286
284
utils .Fatalf ("Compaction failed: %v" , err )
287
285
}
288
286
fmt .Printf ("Compaction done in %v.\n \n " , time .Since (start ))
289
287
290
- stats , err = db .LDB (). GetProperty ("leveldb.stats" )
288
+ stats , err = db .Stat ("leveldb.stats" )
291
289
if err != nil {
292
290
utils .Fatalf ("Failed to read database stats: %v" , err )
293
291
}
294
292
fmt .Println (stats )
295
293
296
- ioStats , err = db .LDB (). GetProperty ("leveldb.iostats" )
294
+ ioStats , err = db .Stat ("leveldb.iostats" )
297
295
if err != nil {
298
296
utils .Fatalf ("Failed to read database iostats: %v" , err )
299
297
}
300
298
fmt .Println (ioStats )
301
-
302
299
return nil
303
300
}
304
301
@@ -344,10 +341,10 @@ func importPreimages(ctx *cli.Context) error {
344
341
stack := makeFullNode (ctx )
345
342
defer stack .Close ()
346
343
347
- diskdb := utils .MakeChainDatabase (ctx , stack ).( * ethdb. LDBDatabase )
344
+ db := utils .MakeChainDatabase (ctx , stack )
348
345
start := time .Now ()
349
346
350
- if err := utils .ImportPreimages (diskdb , ctx .Args ().First ()); err != nil {
347
+ if err := utils .ImportPreimages (db , ctx .Args ().First ()); err != nil {
351
348
utils .Fatalf ("Import error: %v\n " , err )
352
349
}
353
350
fmt .Printf ("Import done in %v\n " , time .Since (start ))
@@ -362,10 +359,10 @@ func exportPreimages(ctx *cli.Context) error {
362
359
stack := makeFullNode (ctx )
363
360
defer stack .Close ()
364
361
365
- diskdb := utils .MakeChainDatabase (ctx , stack ).( * ethdb. LDBDatabase )
362
+ db := utils .MakeChainDatabase (ctx , stack )
366
363
start := time .Now ()
367
364
368
- if err := utils .ExportPreimages (diskdb , ctx .Args ().First ()); err != nil {
365
+ if err := utils .ExportPreimages (db , ctx .Args ().First ()); err != nil {
369
366
utils .Fatalf ("Export error: %v\n " , err )
370
367
}
371
368
fmt .Printf ("Export done in %v\n " , time .Since (start ))
@@ -386,7 +383,7 @@ func copyDb(ctx *cli.Context) error {
386
383
dl := downloader .New (syncmode , chainDb , new (event.TypeMux ), chain , nil , nil )
387
384
388
385
// Create a source peer to satisfy downloader requests from
389
- db , err := ethdb . NewLDBDatabase (ctx .Args ().First (), ctx .GlobalInt (utils .CacheFlag .Name ), 256 )
386
+ db , err := rawdb . NewLevelDBDatabase (ctx .Args ().First (), ctx .GlobalInt (utils .CacheFlag .Name ), 256 , "" )
390
387
if err != nil {
391
388
return err
392
389
}
@@ -413,11 +410,10 @@ func copyDb(ctx *cli.Context) error {
413
410
// Compact the entire database to remove any sync overhead
414
411
start = time .Now ()
415
412
fmt .Println ("Compacting entire database..." )
416
- if err = chainDb .( * ethdb. LDBDatabase ). LDB (). CompactRange (util. Range {} ); err != nil {
413
+ if err = db . Compact ( nil , nil ); err != nil {
417
414
utils .Fatalf ("Compaction failed: %v" , err )
418
415
}
419
416
fmt .Printf ("Compaction done in %v.\n \n " , time .Since (start ))
420
-
421
417
return nil
422
418
}
423
419
0 commit comments