@@ -81,9 +81,10 @@ type cachedSectionReader struct {
81
81
// err is non-nil if there's an error getting the underlying piece reader
82
82
err error
83
83
// cancel for underlying GetPieceReader call
84
- cancel func ()
85
- refs int
86
- expired bool
84
+ cancel func ()
85
+ refs int
86
+ expired bool
87
+ pdpPiece bool
87
88
}
88
89
89
90
func (r * cachedSectionReader ) Close () error {
@@ -192,7 +193,7 @@ func (cpr *CachedPieceReader) getPieceReaderFromPiecePark(ctx context.Context, p
192
193
return reader , abi .UnpaddedPieceSize (pieceData [0 ].PieceRawSize ), nil
193
194
}
194
195
195
- func (cpr * CachedPieceReader ) GetSharedPieceReader (ctx context.Context , pieceCid cid.Cid ) (storiface.Reader , abi.UnpaddedPieceSize , error ) {
196
+ func (cpr * CachedPieceReader ) GetSharedPieceReader (ctx context.Context , pieceCid cid.Cid ) (storiface.Reader , abi.UnpaddedPieceSize , bool , error ) {
196
197
var r * cachedSectionReader
197
198
198
199
// Check if there is already a piece reader in the cache
@@ -228,8 +229,9 @@ func (cpr *CachedPieceReader) GetSharedPieceReader(ctx context.Context, pieceCid
228
229
r .err = fmt .Errorf ("failed to get piece reader from sector or piece park: %w, %w" , err , serr )
229
230
readerCtxCancel ()
230
231
231
- return nil , 0 , r .err
232
+ return nil , 0 , false , r .err
232
233
}
234
+ r .pdpPiece = true
233
235
}
234
236
235
237
r .reader = reader
@@ -248,7 +250,7 @@ func (cpr *CachedPieceReader) GetSharedPieceReader(ctx context.Context, pieceCid
248
250
// The context timed out. Dereference the cached piece reader and
249
251
// return an error.
250
252
_ = r .Close ()
251
- return nil , 0 , ctx .Err ()
253
+ return nil , 0 , false , ctx .Err ()
252
254
case <- r .ready :
253
255
}
254
256
}
@@ -257,7 +259,7 @@ func (cpr *CachedPieceReader) GetSharedPieceReader(ctx context.Context, pieceCid
257
259
// that the cached reader gets cleaned up
258
260
if r .err != nil {
259
261
_ = r .Close ()
260
- return nil , 0 , r .err
262
+ return nil , 0 , false , r .err
261
263
}
262
264
263
265
rs := io .NewSectionReader (r .reader , 0 , int64 (r .pieceSize ))
@@ -272,5 +274,5 @@ func (cpr *CachedPieceReader) GetSharedPieceReader(ctx context.Context, pieceCid
272
274
Reader : rs ,
273
275
Seeker : rs ,
274
276
ReaderAt : r .reader ,
275
- }, r .pieceSize , nil
277
+ }, r .pieceSize , r . pdpPiece , nil
276
278
}
0 commit comments