Skip to content

Commit

Permalink
Add debug check for cache coherency
Browse files Browse the repository at this point in the history
  • Loading branch information
mystenmark committed May 30, 2024
1 parent 01cf6cd commit 52ce620
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion crates/sui-core/src/execution_cache/writeback_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,32 @@ impl WritebackCache {
) -> CacheResult<(SequenceNumber, ObjectEntry)> {
self.metrics
.record_cache_request(request_type, "object_by_id");
if let Some(entry) = self.cached.object_by_id_cache.get(object_id) {
let entry = self.cached.object_by_id_cache.get(object_id);

if cfg!(debug_assertions) {
if let Some(entry) = &entry {
// check that cache is coherent
let highest = self
.dirty
.objects
.get(object_id)
.and_then(|entry| entry.get_highest().map(|(version, _)| *version))
.or_else(|| {
let object = self.store.get_object(object_id).unwrap();
object.map(|o| o.version())
});

assert_eq!(
highest,
match &*entry.lock() {
LatestObjectCacheEntry::Object(version, _) => Some(*version),
LatestObjectCacheEntry::NonExistent => None,
}
);
}
}

if let Some(entry) = entry {
let entry = entry.lock();
match &*entry {
LatestObjectCacheEntry::Object(latest_version, latest_object) => {
Expand Down

0 comments on commit 52ce620

Please sign in to comment.