Skip to content

Commit 875a9cc

Browse files
author
cyk
committed
feat(stream): add debug logging for SeekableStream operations and improve Reader handling
1 parent 9cf9686 commit 875a9cc

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

internal/stream/stream.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ func NewSeekableStream(fs *FileStream, link *model.Link) (*SeekableStream, error
287287
}
288288

289289
if fs.Reader != nil {
290+
log.Debugf("[NewSeekableStream] FileStream already has Reader (type: %T), using it directly", fs.Reader)
290291
fs.Add(link)
291292
return &SeekableStream{FileStream: fs}, nil
292293
}
@@ -300,15 +301,10 @@ func NewSeekableStream(fs *FileStream, link *model.Link) (*SeekableStream, error
300301
if err != nil {
301302
return nil, err
302303
}
303-
if _, ok := rr.(*model.FileRangeReader); ok {
304-
var rc io.ReadCloser
305-
rc, err = rr.RangeRead(fs.Ctx, http_range.Range{Length: -1})
306-
if err != nil {
307-
return nil, err
308-
}
309-
fs.Reader = rc
310-
fs.Add(rc)
311-
}
304+
// IMPORTANT: Do NOT create Reader early for FileRangeReader!
305+
// Let generateReader() create it on-demand when actually needed for reading
306+
// This prevents the Reader from being consumed by intermediate operations like hash calculation
307+
log.Debugf("[NewSeekableStream] Created RangeReader (type: %T), Reader will be generated on-demand", rr)
312308
fs.size = size
313309
fs.Add(link)
314310
return &SeekableStream{FileStream: fs, rangeReader: rr}, nil
@@ -332,11 +328,13 @@ func (ss *SeekableStream) RangeRead(httpRange http_range.Range) (io.Reader, erro
332328

333329
// only provide Reader as full stream when it's demanded. in rapid-upload, we can skip this to save memory
334330
func (ss *SeekableStream) Read(p []byte) (n int, err error) {
335-
log.Debugf("[SeekableStream.Read] Called, will trigger generateReader if needed")
331+
log.Debugf("[SeekableStream.Read] Called with buffer size: %d", len(p))
336332
if err := ss.generateReader(); err != nil {
337333
return 0, err
338334
}
339-
return ss.FileStream.Read(p)
335+
n, err = ss.FileStream.Read(p)
336+
log.Debugf("[SeekableStream.Read] Read %d bytes, err: %v", n, err)
337+
return n, err
340338
}
341339

342340
func (ss *SeekableStream) generateReader() error {
@@ -351,9 +349,9 @@ func (ss *SeekableStream) generateReader() error {
351349
}
352350
ss.Add(rc)
353351
ss.Reader = rc
354-
log.Warnf("[SeekableStream.generateReader] Reader has been set, stream is now consumed!")
352+
log.Warnf("[SeekableStream.generateReader] Reader has been set, type: %T", rc)
355353
} else {
356-
log.Debugf("[SeekableStream.generateReader] Reader already exists, reusing")
354+
log.Debugf("[SeekableStream.generateReader] Reader already exists (type: %T), reusing", ss.Reader)
357355
}
358356
return nil
359357
}

0 commit comments

Comments
 (0)