mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: fix snapshot
This commit is contained in:
parent
12999ba083
commit
fbc4c8efb5
@ -144,7 +144,6 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
|
|||||||
var n raft.Node
|
var n raft.Node
|
||||||
var s *raft.MemoryStorage
|
var s *raft.MemoryStorage
|
||||||
var id types.ID
|
var id types.ID
|
||||||
var ss *snap.Snapshotter
|
|
||||||
|
|
||||||
walVersion, err := wal.DetectVersion(cfg.DataDir)
|
walVersion, err := wal.DetectVersion(cfg.DataDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -154,6 +153,7 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
|
|||||||
return nil, fmt.Errorf("unknown wal version in data dir %s", cfg.DataDir)
|
return nil, fmt.Errorf("unknown wal version in data dir %s", cfg.DataDir)
|
||||||
}
|
}
|
||||||
haveWAL := walVersion != wal.WALNotExist
|
haveWAL := walVersion != wal.WALNotExist
|
||||||
|
ss := snap.New(cfg.SnapDir())
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case !haveWAL && !cfg.NewCluster:
|
case !haveWAL && !cfg.NewCluster:
|
||||||
@ -206,7 +206,6 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
|
|||||||
if cfg.ShouldDiscover() {
|
if cfg.ShouldDiscover() {
|
||||||
log.Printf("etcdserver: discovery token ignored since a cluster has already been initialized. Valid log found at %q", cfg.WALDir())
|
log.Printf("etcdserver: discovery token ignored since a cluster has already been initialized. Valid log found at %q", cfg.WALDir())
|
||||||
}
|
}
|
||||||
ss = snap.New(cfg.SnapDir())
|
|
||||||
snapshot, err := ss.Load()
|
snapshot, err := ss.Load()
|
||||||
if err != nil && err != snap.ErrNoSnapshot {
|
if err != nil && err != snap.ErrNoSnapshot {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -15,9 +15,13 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||||
|
"github.com/coreos/etcd/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPauseMember(t *testing.T) {
|
func TestPauseMember(t *testing.T) {
|
||||||
@ -74,3 +78,43 @@ func TestLaunchDuplicateMemberShouldFail(t *testing.T) {
|
|||||||
t.Errorf("unexpect successful launch")
|
t.Errorf("unexpect successful launch")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSnapshotAndRestartMember(t *testing.T) {
|
||||||
|
defer afterTest(t)
|
||||||
|
m := mustNewMember(t, "snapAndRestartTest")
|
||||||
|
m.SnapCount = 100
|
||||||
|
m.Launch()
|
||||||
|
defer m.Terminate(t)
|
||||||
|
|
||||||
|
resps := make([]*client.Response, 120)
|
||||||
|
var err error
|
||||||
|
for i := 0; i < 120; i++ {
|
||||||
|
cc := mustNewHTTPClient(t, []string{m.URL()})
|
||||||
|
kapi := client.NewKeysAPI(cc)
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
|
||||||
|
key := fmt.Sprintf("foo%d", i)
|
||||||
|
resps[i], err = kapi.Create(ctx, "/"+key, "bar", -1)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("create on %s error: %v", m.URL(), err)
|
||||||
|
}
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
m.Stop(t)
|
||||||
|
m.Restart(t)
|
||||||
|
|
||||||
|
for i := 0; i < 120; i++ {
|
||||||
|
cc := mustNewHTTPClient(t, []string{m.URL()})
|
||||||
|
kapi := client.NewKeysAPI(cc)
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
|
||||||
|
key := fmt.Sprintf("foo%d", i)
|
||||||
|
resp, err := kapi.Get(ctx, "/"+key)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("get on %s error: %v", m.URL(), err)
|
||||||
|
}
|
||||||
|
cancel()
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(resp.Node, resps[i].Node) {
|
||||||
|
t.Errorf("#%d: node = %v, want %v", resp.Node, resps[i].Node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user