xoofx / zio

A cross-platform abstract/virtual filesystem framework with many built-ins filesystems for .NET
BSD 2-Clause "Simplified" License
827 stars 61 forks source link

FileSystemWatcher on MemoryFileSystem #51

Open Ellested opened 4 years ago

Ellested commented 4 years ago

Just a note, on a couple of things I've come across while working with zio.

I'm using a configuration with a mount file system as the root, which is mounting both physical and memory file systems.

  1. I've noticed that using a watcher on the root, produces a lot of change events from the memory file system. I haven't looked into the details, but I guess the implementation is built around a block write or similar. Anyway, if this behavior is not expected, I could take a deeper look to see if I can find something.

  2. I've also experienced deadlocks when accessing the MemoryFileSystem. I wonder if the library itself is supposed to be thread safe or not. The file system itself obviously have locks, but I'm not sure if I need to protect thread access to the zio API on top of that.

xoofx commented 4 years ago

I've noticed that using a watcher on the root, produces a lot of change events from the memory file system. I haven't looked into the details, but I guess the implementation is built around a block write or similar. Anyway, if this behavior is not expected, I could take a deeper look to see if I can find something.

I can't tell, I have not dug into how much different are the events from a physical compare to the in memory representation.

I've also experienced deadlocks when accessing the MemoryFileSystem. I wonder if the library itself is supposed to be thread safe or not. The file system itself obviously have locks, but I'm not sure if I need to protect thread access to the zio API on top of that.

This should not happen, so it might be a bug in the library.