|
|
|
@ -65,7 +65,7 @@ const ( |
|
|
|
|
var ( |
|
|
|
|
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") |
|
|
|
|
|
|
|
|
|
defaultBootNodes = []*discover.Node{ |
|
|
|
@ -286,15 +286,7 @@ func New(config *Config) (*Ethereum, error) { |
|
|
|
|
// Open the chain database and perform any upgrades needed
|
|
|
|
|
chainDb, err := newdb(filepath.Join(config.DataDir, "chaindata")) |
|
|
|
|
if err != nil { |
|
|
|
|
var ok bool |
|
|
|
|
errno := uint(err.(syscall.Errno)) |
|
|
|
|
for _, no := range datadirInUseErrNos { |
|
|
|
|
if errno == no { |
|
|
|
|
ok = true |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if ok { |
|
|
|
|
if errno, ok := err.(syscall.Errno); ok && datadirInUseErrnos[uint(errno)] { |
|
|
|
|
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) |
|
|
|
@ -311,14 +303,7 @@ func New(config *Config) (*Ethereum, error) { |
|
|
|
|
|
|
|
|
|
dappDb, err := newdb(filepath.Join(config.DataDir, "dapp")) |
|
|
|
|
if err != nil { |
|
|
|
|
var ok bool |
|
|
|
|
for _, no := range datadirInUseErrNos { |
|
|
|
|
if uint(err.(syscall.Errno)) == no { |
|
|
|
|
ok = true |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if ok { |
|
|
|
|
if errno, ok := err.(syscall.Errno); ok && datadirInUseErrnos[uint(errno)] { |
|
|
|
|
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) |
|
|
|
|