Failing to take snapshot due to FileNotFoundException
- FlushSnapshotSubprocedure.RegionSnapshotTask takes a region level read lock
- Call to HRegion#addRegionToSnapshot.
- Call to SnapshotManifest#addRegion. This gets the current list of store files.
- RACE → File is marked as compacted away and HFileArchiver moves the file to archive under store level lock.
- SnapshotManifest#addRegion visits the stale list of store files one by one. It does a file.getStatus() call to get length of each file. Since the file object still points to the original file, file.getStatus() fails with FileNotFoundException.