mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
raft: return offset for unstableEnts
This commit is contained in:
parent
311db876b0
commit
e850c644da
@ -84,10 +84,11 @@ func (l *raftLog) findConflict(from int64, ents []Entry) int64 {
|
||||
return -1
|
||||
}
|
||||
|
||||
func (l *raftLog) unstableEnts() []Entry {
|
||||
func (l *raftLog) unstableEnts() (int64, []Entry) {
|
||||
offset := l.unstable
|
||||
ents := l.entries(l.unstable)
|
||||
l.unstable = l.lastIndex() + 1
|
||||
return ents
|
||||
return offset, ents
|
||||
}
|
||||
|
||||
func (l *raftLog) lastIndex() int64 {
|
||||
|
@ -98,7 +98,10 @@ func TestCompactionSideEffects(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
unstableEnts := raftLog.unstableEnts()
|
||||
offset, unstableEnts := raftLog.unstableEnts()
|
||||
if offset != 501 {
|
||||
t.Errorf("offset(unstableEntries) = %d, want = %d", offset, 500)
|
||||
}
|
||||
if g := len(unstableEnts); g != 500 {
|
||||
t.Errorf("len(unstableEntries) = %d, want = %d", g, 500)
|
||||
}
|
||||
@ -119,18 +122,22 @@ func TestUnstableEnts(t *testing.T) {
|
||||
previousEnts := []Entry{{Term: 1}, {Term: 2}}
|
||||
tests := []struct {
|
||||
unstable int64
|
||||
woffset int64
|
||||
wents []Entry
|
||||
wunstable int64
|
||||
}{
|
||||
{3, nil, 3},
|
||||
{1, []Entry{{Term: 1}, {Term: 2}}, 3},
|
||||
{3, 3, nil, 3},
|
||||
{1, 1, []Entry{{Term: 1}, {Term: 2}}, 3},
|
||||
}
|
||||
|
||||
for i, tt := range tests {
|
||||
raftLog := newLog()
|
||||
raftLog.ents = append(raftLog.ents, previousEnts...)
|
||||
raftLog.unstable = tt.unstable
|
||||
ents := raftLog.unstableEnts()
|
||||
offset, ents := raftLog.unstableEnts()
|
||||
if offset != tt.woffset {
|
||||
t.Errorf("#%d: offset = %d, want = %d", i, offset, tt.woffset)
|
||||
}
|
||||
if !reflect.DeepEqual(ents, tt.wents) {
|
||||
t.Errorf("#%d: unstableEnts = %+v, want %+v", i, ents, tt.wents)
|
||||
}
|
||||
|
@ -206,7 +206,8 @@ func (n *Node) UpdateConf(t int64, c *Config) {
|
||||
}
|
||||
|
||||
// UnstableEnts retuens all the entries that need to be persistent.
|
||||
func (n *Node) UnstableEnts() []Entry {
|
||||
// The first return value is offset, and the second one is unstable entries.
|
||||
func (n *Node) UnstableEnts() (int64, []Entry) {
|
||||
return n.sm.raftLog.unstableEnts()
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user