소스 검색

Merge pull request #929 from obscuren/develop

eth, ethdb: lower the amount of open files & improve err messages for db
Jeffrey Wilcke 10 년 전
부모
커밋
e8d701a3b2
2개의 변경된 파일8개의 추가작업 그리고 5개의 파일을 삭제
  1. 6 3
      eth/backend.go
  2. 2 2
      ethdb/database.go

+ 6 - 3
eth/backend.go

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

+ 2 - 2
ethdb/database.go

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