Fix bug with nested read locks in diff
This commit is contained in:
parent
f920200be9
commit
e0e0ed08ae
@ -177,6 +177,8 @@ func (ot *objectTree) AddContent(ctx context.Context, content SignableChangeCont
|
||||
Added: []*treechangeproto.RawTreeChangeWithId{rawChange},
|
||||
Mode: Append,
|
||||
}
|
||||
log.With("treeId", ot.id).With("head", objChange.Id).
|
||||
Debug("finished adding content")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -217,6 +217,11 @@ func (d *diff) getRange(r Range) (rr RangeResult) {
|
||||
func (d *diff) Ranges(ctx context.Context, ranges []Range, resBuf []RangeResult) (results []RangeResult, err error) {
|
||||
d.mu.RLock()
|
||||
defer d.mu.RUnlock()
|
||||
|
||||
return d.ranges(ranges, resBuf)
|
||||
}
|
||||
|
||||
func (d *diff) ranges(ranges []Range, resBuf []RangeResult) (results []RangeResult, err error) {
|
||||
results = resBuf[:0]
|
||||
for _, r := range ranges {
|
||||
results = append(results, d.getRange(r))
|
||||
@ -251,7 +256,7 @@ func (d *diff) Diff(ctx context.Context, dl Remote) (newIds, changedIds, removed
|
||||
return
|
||||
default:
|
||||
}
|
||||
if dctx.myRes, err = d.Ranges(ctx, dctx.toSend, dctx.myRes); err != nil {
|
||||
if dctx.myRes, err = d.ranges(dctx.toSend, dctx.myRes); err != nil {
|
||||
return
|
||||
}
|
||||
if dctx.otherRes, err = dl.Ranges(ctx, dctx.toSend, dctx.otherRes); err != nil {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user