Open CalvinNeo opened 1 month ago
By @JaySon-Huang Thread B Background GC: Find that blob_id=161 should do full gc Copy the data from blob_id=161 to blob_id=221
Thread A DumpIncrSnap: Acquire a snap-A Call dumpIncrementalCheckpoint, get edit_from_mem with page_id_1 -> e1{blob_id=161} [v1] Thread A yield
Thread B resume: Copy data from blob_id=161 to blob_id=221 done, blob_id=161 become "ReadOnly" gcApply will add a new "version" that page_id_1 -> e1'{blob_id=221} [v1'] in the PageDirectory Next GC round run, PageDirectory::gcInMemEntries will remove [v1] but keep [v1'] for page_id_1 blob_id=161 is "ReadOnly" and [v1] is removed, no others entries left on blob_id=161, then the file is removed from disk
Thread A resume: Try to read page data by e1{blob_id=161}, but find that blob_id=161 is already removed from disk
Bug Report
Please answer these questions before submitting your issue. Thanks!
with
profiles.default.remote_checkpoint_only_upload_manifest = false
1. Minimal reproduce step (Required)
2. What did you expect to see? (Required)
3. What did you see instead (Required)
4. What is your TiFlash version? (Required)