Skip to content

Commit

Permalink
Merge pull request #6219 from sinsharat/master
Browse files Browse the repository at this point in the history
raft: handled panic for Term due to IOB
  • Loading branch information
xiang90 authored Aug 18, 2016
2 parents a8fc439 + 9b3b1f8 commit 8021487
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 2 deletions.
2 changes: 1 addition & 1 deletion raft/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ func (l *raftLog) term(i uint64) (uint64, error) {
if err == nil {
return t, nil
}
if err == ErrCompacted {
if err == ErrCompacted || err == ErrUnavailable {
return 0, err
}
panic(err) // TODO(bdarnell)
Expand Down
3 changes: 3 additions & 0 deletions raft/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@ func (ms *MemoryStorage) Term(i uint64) (uint64, error) {
if i < offset {
return 0, ErrCompacted
}
if int(i-offset) >= len(ms.ents) {
return 0, ErrUnavailable
}
return ms.ents[i-offset].Term, nil
}

Expand Down
2 changes: 1 addition & 1 deletion raft/storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestStorageTerm(t *testing.T) {
{3, nil, 3, false},
{4, nil, 4, false},
{5, nil, 5, false},
{6, nil, 0, true},
{6, ErrUnavailable, 0, false},
}

for i, tt := range tests {
Expand Down

0 comments on commit 8021487

Please sign in to comment.