eth, ethdb: lower the amount of open files & improve err messages for db

Closes #880
This commit is contained in:
obscuren 2015-05-12 11:28:33 +02:00
parent 76215ca9f3
commit 13f8f65a58
2 changed files with 8 additions and 5 deletions

View File

@ -207,21 +207,24 @@ func New(config *Config) (*Ethereum, error) {
logger.NewJSONsystem(config.DataDir, config.LogJSON) logger.NewJSONsystem(config.DataDir, config.LogJSON)
} }
const dbCount = 3
ethdb.OpenFileLimit = 256 / (dbCount + 1)
newdb := config.NewDB newdb := config.NewDB
if newdb == nil { if newdb == nil {
newdb = func(path string) (common.Database, error) { return ethdb.NewLDBDatabase(path) } newdb = func(path string) (common.Database, error) { return ethdb.NewLDBDatabase(path) }
} }
blockDb, err := newdb(path.Join(config.DataDir, "blockchain")) blockDb, err := newdb(path.Join(config.DataDir, "blockchain"))
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("blockchain db err: %v", err)
} }
stateDb, err := newdb(path.Join(config.DataDir, "state")) stateDb, err := newdb(path.Join(config.DataDir, "state"))
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("state db err: %v", err)
} }
extraDb, err := newdb(path.Join(config.DataDir, "extra")) extraDb, err := newdb(path.Join(config.DataDir, "extra"))
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("extra db err: %v", err)
} }
nodeDb := path.Join(config.DataDir, "nodes") nodeDb := path.Join(config.DataDir, "nodes")

View File

@ -11,7 +11,7 @@ import (
"github.com/syndtr/goleveldb/leveldb/opt" "github.com/syndtr/goleveldb/leveldb/opt"
) )
const openFileLimit = 128 var OpenFileLimit = 64
type LDBDatabase struct { type LDBDatabase struct {
fn string fn string
@ -26,7 +26,7 @@ type LDBDatabase struct {
func NewLDBDatabase(file string) (*LDBDatabase, error) { func NewLDBDatabase(file string) (*LDBDatabase, error) {
// Open the db // Open the db
db, err := leveldb.OpenFile(file, &opt.Options{OpenFilesCacheCapacity: openFileLimit}) db, err := leveldb.OpenFile(file, &opt.Options{OpenFilesCacheCapacity: OpenFileLimit})
if err != nil { if err != nil {
return nil, err return nil, err
} }