Fix bug with nested read locks in diff

This commit is contained in:
mcrakhman 2022-10-20 21:48:31 +02:00 committed by Mikhail Iudin
parent f920200be9
commit e0e0ed08ae
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
2 changed files with 8 additions and 1 deletions

View File

@ -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
}

View File

@ -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 {