FluentStorage icon indicating copy to clipboard operation
FluentStorage copied to clipboard

ZipArchive backed IBlobStorage throws occasionally when calling WriteAsync

Open ckpearson opened this issue 2 years ago • 2 comments

Sometimes when doing the following:

using var stream = ... // a Stream here
await blobStorage.WriteAsync("path_here", stream);

OR:

var stream = ... // a Stream here
await blobStorage.WriteAsync("path_here", stream);
await stream.DisposeAsync();

OR:

var bytes = ... // a byte array
await blobStorage.WriteAsync("path_here", bytes);

Occasionally a System.ObjectDisposedException: 'Cannot access a closed file.' will be raised.

This code path is being called by a background processor that utilises a worker pool, the idea being that files for writing are enqueued as tasks, and the pool will wait for all tasks to complete; so I'm wondering if there's a threading / async issue occurring here?

ckpearson avatar Sep 13 '23 21:09 ckpearson

If I set my worker pool to only have a single worker (essentially emulating sequential processing) then the issue does disappear.

ckpearson avatar Sep 13 '23 21:09 ckpearson

Any fix and PR will be greatly appreciated.

robinrodricks avatar Feb 03 '24 07:02 robinrodricks