@@ -37,6 +37,11 @@ type Pruner struct {
3737 observer PrunerObserver
3838
3939 metrics * Metrics
40+
41+ // Preserve the number of state entries pruned.
42+ // Used to calculated correctly when to trigger compactions
43+ // TODO This is unused and should be removed from V1 and main as well.
44+ prunedStates uint64
4045}
4146
4247type prunerConfig struct {
@@ -303,10 +308,16 @@ func (p *Pruner) pruneABCIResToRetainHeight(lastRetainHeight int64) int64 {
303308 return lastRetainHeight
304309 }
305310
311+ // If the block retain height is 0, pruning of the block and state stores might be disabled
312+ // This should not prevent Comet from pruning ABCI results if needed.
313+ // We could by default always compact when pruning the responses, but in case the state store
314+ // is being compacted we introduce an overhead that might cause performance penalties.
315+ forceCompact := p .findMinBlockRetainHeight () == 0
316+
306317 // newRetainHeight is the height just after that which we have successfully
307318 // pruned. In case of an error it will be 0, but then it will also be
308319 // ignored.
309- numPruned , newRetainHeight , err := p .stateStore .PruneABCIResponses (targetRetainHeight )
320+ numPruned , newRetainHeight , err := p .stateStore .PruneABCIResponses (targetRetainHeight , forceCompact )
310321 if err != nil {
311322 p .logger .Error ("Failed to prune ABCI responses" , "err" , err , "targetRetainHeight" , targetRetainHeight )
312323 return lastRetainHeight
@@ -357,8 +368,13 @@ func (p *Pruner) pruneBlocksToHeight(height int64) (uint64, int64, error) {
357368 if err != nil {
358369 return 0 , 0 , ErrFailedToPruneBlocks {Height : height , Err : err }
359370 }
360- if err := p .stateStore .PruneStates (base , height , evRetainHeight ); err != nil {
361- return 0 , 0 , ErrFailedToPruneStates {Height : height , Err : err }
371+
372+ if pruned > 0 {
373+
374+ _ , err = p .stateStore .PruneStates (base , height , evRetainHeight )
375+ if err != nil {
376+ return 0 , 0 , ErrFailedToPruneStates {Height : height , Err : err }
377+ }
362378 }
363379 return pruned , evRetainHeight , err
364380}
0 commit comments