@@ -4,7 +4,7 @@ use codec::{Decode, Encode};
44use sc_client_api:: backend:: AuxStore ;
55use sp_blockchain:: { Error as ClientError , Result as ClientResult } ;
66use sp_executor:: ExecutionReceipt ;
7- use sp_runtime:: traits:: { Block as BlockT , NumberFor , One , SaturatedConversion , Saturating } ;
7+ use sp_runtime:: traits:: { Block as BlockT , NumberFor , One , SaturatedConversion } ;
88use subspace_core_primitives:: BlockNumber ;
99
1010const EXECUTION_RECEIPT_KEY : & [ u8 ] = b"execution_receipt" ;
@@ -50,18 +50,17 @@ pub(super) fn write_execution_receipt<Backend: AuxStore, Block: BlockT, PBlock:
5050
5151 let mut new_first_saved_receipt = first_saved_receipt;
5252
53- let keys_to_delete = if best_execution_chain_number. saturating_sub ( first_saved_receipt) >=
54- PRUNING_DEPTH . into ( )
55- {
56- // `first_saved_receipt` starts from 1 instead of 0, hence `PRUNING_DEPTH` - 1.
57- new_first_saved_receipt =
58- best_execution_chain_number. saturating_sub ( ( PRUNING_DEPTH - 1 ) . saturated_into ( ) ) ;
53+ let mut keys_to_delete = vec ! [ ] ;
5954
60- let mut keys_to_delete = vec ! [ ] ;
61- let mut to_delete_start = first_saved_receipt;
62- while to_delete_start < new_first_saved_receipt {
55+ if let Some ( delete_receipts_to) = best_execution_chain_number
56+ . saturated_into :: < BlockNumber > ( )
57+ . checked_sub ( PRUNING_DEPTH )
58+ {
59+ new_first_saved_receipt = Into :: < NumberFor < Block > > :: into ( delete_receipts_to) + One :: one ( ) ;
60+ for receipt_to_delete in first_saved_receipt. saturated_into ( ) ..=delete_receipts_to {
6361 let delete_block_number_key =
64- ( EXECUTION_RECEIPT_BLOCK_NUMBER , to_delete_start) . encode ( ) ;
62+ ( EXECUTION_RECEIPT_BLOCK_NUMBER , receipt_to_delete) . encode ( ) ;
63+
6564 if let Some ( hashes_to_delete) =
6665 load_decode :: < _ , Vec < Block :: Hash > > ( backend, delete_block_number_key. as_slice ( ) ) ?
6766 {
@@ -70,13 +69,8 @@ pub(super) fn write_execution_receipt<Backend: AuxStore, Block: BlockT, PBlock:
7069 ) ;
7170 keys_to_delete. push ( delete_block_number_key) ;
7271 }
73- to_delete_start = to_delete_start. saturating_add ( One :: one ( ) ) ;
7472 }
75-
76- keys_to_delete
77- } else {
78- vec ! [ ]
79- } ;
73+ }
8074
8175 backend. insert_aux (
8276 & [
0 commit comments