diff --git a/accounts-db/src/accounts_index/in_mem_accounts_index.rs b/accounts-db/src/accounts_index/in_mem_accounts_index.rs index 96059575dad204..d3469ba7f10e90 100644 --- a/accounts-db/src/accounts_index/in_mem_accounts_index.rs +++ b/accounts-db/src/accounts_index/in_mem_accounts_index.rs @@ -275,22 +275,41 @@ impl + Into> InMemAccountsIndex = map .iter() .filter(|&(k, _v)| range.contains(k)) .map(|(k, v)| (*k, Arc::clone(v))) .collect(); - self.hold_range_in_memory(range, false); + + // Collect items from the disk if they are not in-memory. + if let Some(disk) = self.bucket.as_ref() { + let items = disk.items_in_range(&Some(range)); + for item in items { + if !map.contains_key(&item.pubkey) { + index_items.insert( + item.pubkey, + self.disk_to_cache_entry(item.slot_list, item.ref_count), + ); + } + } + } + drop(map); + drop(flush_guard); + + let result = index_items.into_iter().collect(); Self::update_stat(&self.stats().items, 1); Self::update_time_stat(&self.stats().items_us, m); result