mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #2363 from yichengq/329
migrate/starter: fix v2 data dir checking
This commit is contained in:
commit
6648b7e302
@ -30,11 +30,10 @@ import (
|
||||
"github.com/coreos/etcd/client"
|
||||
"github.com/coreos/etcd/etcdmain"
|
||||
"github.com/coreos/etcd/migrate"
|
||||
"github.com/coreos/etcd/pkg/fileutil"
|
||||
"github.com/coreos/etcd/pkg/flags"
|
||||
"github.com/coreos/etcd/pkg/osutil"
|
||||
"github.com/coreos/etcd/pkg/types"
|
||||
etcdversion "github.com/coreos/etcd/version"
|
||||
"github.com/coreos/etcd/wal"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||
)
|
||||
@ -106,17 +105,17 @@ func checkInternalVersion(fs *flag.FlagSet) version {
|
||||
log.Fatalf("starter: please set --data-dir or ETCD_DATA_DIR for etcd")
|
||||
}
|
||||
// check the data directory
|
||||
dataver, err := checkVersion(dataDir)
|
||||
dataver, err := wal.DetectVersion(dataDir)
|
||||
if err != nil {
|
||||
log.Fatalf("starter: failed to detect etcd version in %v: %v", dataDir, err)
|
||||
}
|
||||
log.Printf("starter: detect etcd version %s in %s", dataver, dataDir)
|
||||
switch dataver {
|
||||
case v2_0:
|
||||
case wal.WALv2_0:
|
||||
return internalV2
|
||||
case v2_0Proxy:
|
||||
case wal.WALv2_0Proxy:
|
||||
return internalV2Proxy
|
||||
case v0_4:
|
||||
case wal.WALv0_4:
|
||||
standbyInfo, err := migrate.DecodeStandbyInfo4FromFile(standbyInfo4(dataDir))
|
||||
if err != nil && !os.IsNotExist(err) {
|
||||
log.Fatalf("starter: failed to decode standbyInfo in %v: %v", dataDir, err)
|
||||
@ -140,7 +139,7 @@ func checkInternalVersion(fs *flag.FlagSet) version {
|
||||
log.Fatalf("starter: failed to check start version in %v: %v", dataDir, err)
|
||||
}
|
||||
return ver
|
||||
case empty:
|
||||
case wal.WALNotExist:
|
||||
discovery := fs.Lookup("discovery").Value.String()
|
||||
dpeers, err := getPeersFromDiscoveryURL(discovery)
|
||||
if err != nil {
|
||||
@ -162,33 +161,6 @@ func checkInternalVersion(fs *flag.FlagSet) version {
|
||||
return internalUnknown
|
||||
}
|
||||
|
||||
func checkVersion(dataDir string) (version, error) {
|
||||
names, err := fileutil.ReadDir(dataDir)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
err = nil
|
||||
}
|
||||
return empty, err
|
||||
}
|
||||
if len(names) == 0 {
|
||||
return empty, nil
|
||||
}
|
||||
nameSet := types.NewUnsafeSet(names...)
|
||||
if nameSet.ContainsAll([]string{"member"}) {
|
||||
return v2_0, nil
|
||||
}
|
||||
if nameSet.ContainsAll([]string{"proxy"}) {
|
||||
return v2_0Proxy, nil
|
||||
}
|
||||
if nameSet.ContainsAll([]string{"snapshot", "conf", "log"}) {
|
||||
return v0_4, nil
|
||||
}
|
||||
if nameSet.ContainsAll([]string{"standby_info"}) {
|
||||
return v0_4, nil
|
||||
}
|
||||
return unknown, fmt.Errorf("failed to check version")
|
||||
}
|
||||
|
||||
func checkInternalVersionByDataDir4(dataDir string) (version, error) {
|
||||
// check v0.4 snapshot
|
||||
snap4, err := migrate.DecodeLatestSnapshot4FromDir(snapDir4(dataDir))
|
||||
|
17
wal/util.go
17
wal/util.go
@ -28,11 +28,12 @@ import (
|
||||
type WalVersion string
|
||||
|
||||
const (
|
||||
WALUnknown WalVersion = "Unknown WAL"
|
||||
WALNotExist WalVersion = "No WAL"
|
||||
WALv0_4 WalVersion = "0.4.x"
|
||||
WALv2_0 WalVersion = "2.0.0"
|
||||
WALv2_0_1 WalVersion = "2.0.1"
|
||||
WALUnknown WalVersion = "Unknown WAL"
|
||||
WALNotExist WalVersion = "No WAL"
|
||||
WALv0_4 WalVersion = "0.4.x"
|
||||
WALv2_0 WalVersion = "2.0.0"
|
||||
WALv2_0Proxy WalVersion = "2.0 proxy"
|
||||
WALv2_0_1 WalVersion = "2.0.1"
|
||||
)
|
||||
|
||||
func DetectVersion(dirpath string) (WalVersion, error) {
|
||||
@ -65,9 +66,15 @@ func DetectVersion(dirpath string) (WalVersion, error) {
|
||||
return WALv2_0, nil
|
||||
}
|
||||
}
|
||||
if nameSet.ContainsAll([]string{"proxy"}) {
|
||||
return WALv2_0Proxy, nil
|
||||
}
|
||||
if nameSet.ContainsAll([]string{"snapshot", "conf", "log"}) {
|
||||
return WALv0_4, nil
|
||||
}
|
||||
if nameSet.ContainsAll([]string{"standby_info"}) {
|
||||
return WALv0_4, nil
|
||||
}
|
||||
|
||||
return WALUnknown, nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user