Merge pull request #1963 from karalabe/fix-database-regression

eth: fix error casting regression during database open
This commit is contained in:
Jeffrey Wilcke 2015-11-05 20:27:11 +01:00
commit 2334ee97d0

View File

@ -65,7 +65,7 @@ const (
var ( var (
jsonlogger = logger.NewJsonLogger() jsonlogger = logger.NewJsonLogger()
datadirInUseErrNos = []uint{11, 32, 35} datadirInUseErrnos = map[uint]bool{11: true, 32: true, 35: true}
portInUseErrRE = regexp.MustCompile("address already in use") portInUseErrRE = regexp.MustCompile("address already in use")
defaultBootNodes = []*discover.Node{ defaultBootNodes = []*discover.Node{
@ -286,15 +286,7 @@ func New(config *Config) (*Ethereum, error) {
// Open the chain database and perform any upgrades needed // Open the chain database and perform any upgrades needed
chainDb, err := newdb(filepath.Join(config.DataDir, "chaindata")) chainDb, err := newdb(filepath.Join(config.DataDir, "chaindata"))
if err != nil { if err != nil {
var ok bool if errno, ok := err.(syscall.Errno); ok && datadirInUseErrnos[uint(errno)] {
errno := uint(err.(syscall.Errno))
for _, no := range datadirInUseErrNos {
if errno == no {
ok = true
break
}
}
if ok {
err = fmt.Errorf("%v (check if another instance of geth is already running with the same data directory '%s')", err, config.DataDir) err = fmt.Errorf("%v (check if another instance of geth is already running with the same data directory '%s')", err, config.DataDir)
} }
return nil, fmt.Errorf("blockchain db err: %v", err) return nil, fmt.Errorf("blockchain db err: %v", err)
@ -311,14 +303,7 @@ func New(config *Config) (*Ethereum, error) {
dappDb, err := newdb(filepath.Join(config.DataDir, "dapp")) dappDb, err := newdb(filepath.Join(config.DataDir, "dapp"))
if err != nil { if err != nil {
var ok bool if errno, ok := err.(syscall.Errno); ok && datadirInUseErrnos[uint(errno)] {
for _, no := range datadirInUseErrNos {
if uint(err.(syscall.Errno)) == no {
ok = true
break
}
}
if ok {
err = fmt.Errorf("%v (check if another instance of geth is already running with the same data directory '%s')", err, config.DataDir) err = fmt.Errorf("%v (check if another instance of geth is already running with the same data directory '%s')", err, config.DataDir)
} }
return nil, fmt.Errorf("dapp db err: %v", err) return nil, fmt.Errorf("dapp db err: %v", err)