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},
|
Added: []*treechangeproto.RawTreeChangeWithId{rawChange},
|
||||||
Mode: Append,
|
Mode: Append,
|
||||||
}
|
}
|
||||||
|
log.With("treeId", ot.id).With("head", objChange.Id).
|
||||||
|
Debug("finished adding content")
|
||||||
return
|
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) {
|
func (d *diff) Ranges(ctx context.Context, ranges []Range, resBuf []RangeResult) (results []RangeResult, err error) {
|
||||||
d.mu.RLock()
|
d.mu.RLock()
|
||||||
defer d.mu.RUnlock()
|
defer d.mu.RUnlock()
|
||||||
|
|
||||||
|
return d.ranges(ranges, resBuf)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *diff) ranges(ranges []Range, resBuf []RangeResult) (results []RangeResult, err error) {
|
||||||
results = resBuf[:0]
|
results = resBuf[:0]
|
||||||
for _, r := range ranges {
|
for _, r := range ranges {
|
||||||
results = append(results, d.getRange(r))
|
results = append(results, d.getRange(r))
|
||||||
@ -251,7 +256,7 @@ func (d *diff) Diff(ctx context.Context, dl Remote) (newIds, changedIds, removed
|
|||||||
return
|
return
|
||||||
default:
|
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
|
return
|
||||||
}
|
}
|
||||||
if dctx.otherRes, err = dl.Ranges(ctx, dctx.toSend, dctx.otherRes); err != nil {
|
if dctx.otherRes, err = dl.Ranges(ctx, dctx.toSend, dctx.otherRes); err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user