Closed mniewrzal closed 7 months ago
https://github.com/storj/infectious/pull/1 should eventually fix this.
The underlying problem was that uplink had this logic:
for r.pendingReaders() {
for r.readAvailableShares(ctx, num) == 0 { // C
<-r.newData
}
if r.hasEnoughShares() {
shares := make([]infectious.Share, 0, len(r.inmap))
for num, data := range r.inmap {
shares = append(shares, infectious.Share{
Number: num,
Data: data, // D
})
}
out, err := r.scheme.Decode(p, shares) // A
if err != nil {
if r.shouldWaitForMore(err) { // B
continue
}
.Decode
with some shares being invalid, this ended up "miscorrecting" some of the actually valid shares.Decode
now uses the miscorrected "data" from the previous round, causing new problemsChange go.mod: bump storj.io/infectious@v0.0.2 mentions this issue.
storj.io/uplink/private/eestream.TestRSRandomData https://build.dev.storj.tools/job/uplink-gerrit/2765/