mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
wal: save empty snapshot when create
So caller can open at empty snapshot to read all entries.
This commit is contained in:
parent
78bb207bac
commit
6460e49a33
@ -859,9 +859,6 @@ func startNode(cfg *ServerConfig, ids []types.ID) (id types.ID, n raft.Node, s *
|
|||||||
if w, err = wal.Create(cfg.WALDir(), metadata); err != nil {
|
if w, err = wal.Create(cfg.WALDir(), metadata); err != nil {
|
||||||
log.Fatalf("etcdserver: create wal error: %v", err)
|
log.Fatalf("etcdserver: create wal error: %v", err)
|
||||||
}
|
}
|
||||||
if err = w.SaveSnapshot(walpb.Snapshot{}); err != nil {
|
|
||||||
log.Fatalf("etcdserver: save empty snapshot error: %v", err)
|
|
||||||
}
|
|
||||||
peers := make([]raft.Peer, len(ids))
|
peers := make([]raft.Peer, len(ids))
|
||||||
for i, id := range ids {
|
for i, id := range ids {
|
||||||
ctx, err := json.Marshal((*cfg.Cluster).Member(id))
|
ctx, err := json.Marshal((*cfg.Cluster).Member(id))
|
||||||
|
@ -113,7 +113,7 @@ func Create(dirpath string, metadata []byte) (*WAL, error) {
|
|||||||
if err := w.encoder.encode(&walpb.Record{Type: metadataType, Data: metadata}); err != nil {
|
if err := w.encoder.encode(&walpb.Record{Type: metadataType, Data: metadata}); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = w.sync(); err != nil {
|
if err = w.SaveSnapshot(walpb.Snapshot{}); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return w, nil
|
return w, nil
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/coreos/etcd/pkg/pbutil"
|
||||||
"github.com/coreos/etcd/raft/raftpb"
|
"github.com/coreos/etcd/raft/raftpb"
|
||||||
"github.com/coreos/etcd/wal/walpb"
|
"github.com/coreos/etcd/wal/walpb"
|
||||||
)
|
)
|
||||||
@ -58,6 +59,13 @@ func TestNew(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err = %v, want nil", err)
|
t.Fatalf("err = %v, want nil", err)
|
||||||
}
|
}
|
||||||
|
r := &walpb.Record{
|
||||||
|
Type: snapshotType,
|
||||||
|
Data: pbutil.MustMarshal(&walpb.Snapshot{}),
|
||||||
|
}
|
||||||
|
if err = e.encode(r); err != nil {
|
||||||
|
t.Fatalf("err = %v, want nil", err)
|
||||||
|
}
|
||||||
e.flush()
|
e.flush()
|
||||||
if !reflect.DeepEqual(gd, wb.Bytes()) {
|
if !reflect.DeepEqual(gd, wb.Bytes()) {
|
||||||
t.Errorf("data = %v, want %v", gd, wb.Bytes())
|
t.Errorf("data = %v, want %v", gd, wb.Bytes())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user