Browse Source

Merge pull request #10684 from nvanbenschoten/nvanbenschoten/appendAndCopy

raft: Avoid multiple allocs when merging stable and unstable log
Xiang Li 6 năm trước cách đây
mục cha
commit
e3f37534e1
1 tập tin đã thay đổi với 4 bổ sung2 xóa
  1. 4 2
      raft/log.go

+ 4 - 2
raft/log.go

@@ -332,8 +332,10 @@ func (l *raftLog) slice(lo, hi, maxSize uint64) ([]pb.Entry, error) {
 	if hi > l.unstable.offset {
 		unstable := l.unstable.slice(max(lo, l.unstable.offset), hi)
 		if len(ents) > 0 {
-			ents = append([]pb.Entry{}, ents...)
-			ents = append(ents, unstable...)
+			combined := make([]pb.Entry, len(ents)+len(unstable))
+			n := copy(combined, ents)
+			copy(combined[n:], unstable)
+			ents = combined
 		} else {
 			ents = unstable
 		}