You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I identified a race condition when N multiple processes attempt to read the same file at the same time, for the first time.
P_1 -> catfs notices file is missing from cache, begins caching
P_2 ... P_N -> notices cached file is present
P_2 ... P_N -> while reading cached file, file is truncated because loading process from P1 is incomplete.
My solution was to wrap the fd's in a Arc<RwLock> and all of the downstream consequences.
Currently has the downside, that P_2 - P_N block for the entirety of the time it takes to cache the entire file. It should be possible to allow readers up to what has successfully cached.
The text was updated successfully, but these errors were encountered:
I identified a race condition when N multiple processes attempt to read the same file at the same time, for the first time.
P_1 -> catfs notices file is missing from cache, begins caching
P_2 ... P_N -> notices cached file is present
P_2 ... P_N -> while reading cached file, file is truncated because loading process from P1 is incomplete.
My solution was to wrap the fd's in a Arc<RwLock> and all of the downstream consequences.
Currently has the downside, that P_2 - P_N block for the entirety of the time it takes to cache the entire file. It should be possible to allow readers up to what has successfully cached.
The text was updated successfully, but these errors were encountered: