FluentStorage
FluentStorage copied to clipboard
ZipArchive backed IBlobStorage throws occasionally when calling WriteAsync
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?
If I set my worker pool to only have a single worker (essentially emulating sequential processing) then the issue does disappear.
Any fix and PR will be greatly appreciated.