rocksdb/cache
Peter Dillinger b6e33dbc0e Fix HyperClockCache Rollback bug in #10801 (#10843)
Summary:
In https://github.com/facebook/rocksdb/issues/10801 in ClockHandleTable::Evict, we saved a reference to the hash value (`const UniqueId64x2& hashed_key`) instead of saving the hash value itself before marking the handle as empty and thus free for use by other threads. This could lead to Rollback seeing the wrong hash value for updating the `displacements` after an entry is removed.

The fix is (like other places) to copy the hash value before it's released. (We could Rollback while we own the entry, but that creates more dependences between atomic updates, because in that case, based on the code, the Rollback writes would have to happen before or after the entry is released by marking empty. By doing the relaxed Rollback after marking empty, there's more opportunity for re-ordering / ILP.)

Intended follow-up: refactoring for better code sharing in clock_cache.cc

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10843

Test Plan: watch for clean crash test, TSAN

Reviewed By: siying

Differential Revision: D40579680

Pulled By: pdillinger

fbshipit-source-id: 258e43b3b80bc980a161d5c675ccc6708ecb8025
2022-10-21 12:09:03 -07:00
..
cache.cc Add enable_split_merge option for CompressedSecondaryCache (#10690) 2022-09-16 15:41:49 -07:00
cache_bench.cc Add (& fix) some simple source code checks (#8821) 2021-09-07 21:19:27 -07:00
cache_bench_tool.cc Call experimental new clock cache HyperClockCache (#10684) 2022-09-16 12:47:29 -07:00
cache_entry_roles.cc Add a dedicated cache entry role for blobs (#10601) 2022-08-29 16:11:59 -07:00
cache_entry_roles.h Expose CacheEntryRole and map keys for block cache stat collections (#9838) 2022-04-14 09:38:55 -07:00
cache_entry_stats.h New stable, fixed-length cache keys (#9126) 2021-12-16 17:15:13 -08:00
cache_helpers.h Eliminate the copying of blobs when serving reads from the cache (#10297) 2022-07-06 18:57:29 -07:00
cache_key.cc Derive cache keys from SST unique IDs (#10394) 2022-08-12 13:49:49 -07:00
cache_key.h Derive cache keys from SST unique IDs (#10394) 2022-08-12 13:49:49 -07:00
cache_reservation_manager.cc Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
cache_reservation_manager.h Account memory of FileMetaData in global memory limit (#9924) 2022-06-14 13:06:40 -07:00
cache_reservation_manager_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
cache_test.cc Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
charged_cache.cc Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
charged_cache.h Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
clock_cache.cc Fix HyperClockCache Rollback bug in #10801 (#10843) 2022-10-21 12:09:03 -07:00
clock_cache.h Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
compressed_secondary_cache.cc add SetCapacity and GetCapacity for secondary cache (#10712) 2022-09-29 19:15:04 -07:00
compressed_secondary_cache.h add SetCapacity and GetCapacity for secondary cache (#10712) 2022-09-29 19:15:04 -07:00
compressed_secondary_cache_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
fast_lru_cache.cc Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
fast_lru_cache.h Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
lru_cache.cc Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
lru_cache.h Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
lru_cache_test.cc Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
sharded_cache.cc Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00
sharded_cache.h Refactor ShardedCache for more sharing, static polymorphism (#10801) 2022-10-18 22:06:57 -07:00