diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index 005bd6cddc..dc84aad9c0 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -2498,10 +2498,7 @@ impl StateWriter block_bodies.first().expect("already checked if there are blocks").first_tx_num(); let storage_range = BlockNumberAddress::range(range.clone()); - let storage_changeset = if let Some(_highest_block) = self - .static_file_provider - .get_highest_static_file_block(StaticFileSegment::StorageChangeSets) && - self.cached_storage_settings().storage_changesets_in_static_files + let storage_changeset = if self.cached_storage_settings().storage_changesets_in_static_files { let changesets = self.storage_changesets_range(range.clone())?; let mut changeset_writer = @@ -2511,7 +2508,16 @@ impl StateWriter } else { self.take::(storage_range)? }; - let account_changeset = self.take::(range)?; + let account_changeset = if self.cached_storage_settings().account_changesets_in_static_files + { + let changesets = self.account_changesets_range(range)?; + let mut changeset_writer = + self.static_file_provider.latest_writer(StaticFileSegment::AccountChangeSets)?; + changeset_writer.prune_account_changesets(block)?; + changesets + } else { + self.take::(range)? + }; // This is not working for blocks that are not at tip. as plain state is not the last // state of end range. We should rename the functions or add support to access