Merge pull request #1963 from karalabe/fix-database-regression
eth: fix error casting regression during database open
This commit is contained in:
commit
2334ee97d0
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user