catfs icon indicating copy to clipboard operation
catfs copied to clipboard

Race condition on concurrent reads when first reader has not completed caching source file

Open jpedrick opened this issue 2 years ago • 0 comments

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.

jpedrick avatar Mar 17 '23 22:03 jpedrick