From a107ccdba14700d6d068f76301d8b17dd758b9cc Mon Sep 17 00:00:00 2001 From: Adam Tucker Date: Sat, 4 May 2024 22:47:32 -0600 Subject: [PATCH] use retain heights --- consensus/state.go | 18 ++++++++++++++ go.mod | 2 +- state/pruner.go | 58 +++++++++++++++++++++++----------------------- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/consensus/state.go b/consensus/state.go index b4687dd1b8..ec62a6576a 100644 --- a/consensus/state.go +++ b/consensus/state.go @@ -1731,6 +1731,24 @@ func (cs *State) finalizeCommit(height int64) { } else { logger.Debug("application retain height set") } + err = cs.blockExec.Pruner().SetTxIndexerRetainHeight(retainHeight) + if err != nil { + logger.Error("failed to set tx indexer retain height to", "retain_height", retainHeight, "err", err) + } else { + logger.Debug("tx indexer retain height set") + } + err = cs.blockExec.Pruner().SetBlockIndexerRetainHeight(retainHeight) + if err != nil { + logger.Error("failed to set block indexer retain height to", "retain_height", retainHeight, "err", err) + } else { + logger.Debug("block indexer retain height set") + } + err = cs.blockExec.Pruner().SetABCIResRetainHeight(retainHeight) + if err != nil { + logger.Error("failed to set abci res retain height to", "retain_height", retainHeight, "err", err) + } else { + logger.Debug("abci res retain height set") + } } // must be called before we update state diff --git a/go.mod b/go.mod index 7e8051e2b7..951b217339 100644 --- a/go.mod +++ b/go.mod @@ -54,6 +54,7 @@ require ( github.com/golang/protobuf v1.5.3 github.com/oasisprotocol/curve25519-voi v0.0.0-20220708102147-0a8a51822cae github.com/vektra/mockery/v2 v2.14.0 + golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df golang.org/x/sync v0.3.0 gonum.org/v1/gonum v0.8.2 google.golang.org/protobuf v1.31.0 @@ -283,7 +284,6 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect - golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/sys v0.18.0 // indirect diff --git a/state/pruner.go b/state/pruner.go index 6f6160c920..89457bb9d0 100644 --- a/state/pruner.go +++ b/state/pruner.go @@ -339,7 +339,6 @@ func (p *Pruner) pruneBlocks() { fmt.Println() fmt.Println("pruneBlocks Last Retain Height: ", lastRetainHeight) newRetainHeight := p.pruneBlocksToRetainHeight(lastRetainHeight) - fmt.Println("pruneBlocks New Retain Height: ", newRetainHeight) fmt.Println("prune tx indexer") p.pruneTxIndexerToRetainHeight(lastRetainHeight) fmt.Println("prune block indexer") @@ -352,6 +351,7 @@ func (p *Pruner) pruneBlocks() { ToHeight: newRetainHeight - 1, }) } + fmt.Println("pruneBlocks New Retain Height: ", newRetainHeight) lastRetainHeight = newRetainHeight time.Sleep(p.interval) } @@ -375,21 +375,21 @@ func (p *Pruner) pruneBlocks() { // } // } -func (p *Pruner) pruneTxIndexerToRetainHeight(targetRetainHeight int64) int64 { - // targetRetainHeight, err := p.GetTxIndexerRetainHeight() - // if err != nil { - // // Indexer retain height has not yet been set - do not log any - // // errors at this time. - // if errors.Is(err, ErrKeyNotFound) { - // return 0 - // } - // p.logger.Error("Failed to get Indexer retain height", "err", err) - // return lastRetainHeight - // } +func (p *Pruner) pruneTxIndexerToRetainHeight(lastRetainHeight int64) int64 { + targetRetainHeight, err := p.GetTxIndexerRetainHeight() + if err != nil { + // Indexer retain height has not yet been set - do not log any + // errors at this time. + if errors.Is(err, ErrKeyNotFound) { + return 0 + } + p.logger.Error("Failed to get Indexer retain height", "err", err) + return lastRetainHeight + } - // if lastRetainHeight >= targetRetainHeight { - // return lastRetainHeight - // } + if lastRetainHeight >= targetRetainHeight { + return lastRetainHeight + } numPrunedTxIndexer, newTxIndexerRetainHeight, err := p.txIndexer.Prune(targetRetainHeight) if err != nil { @@ -401,21 +401,21 @@ func (p *Pruner) pruneTxIndexerToRetainHeight(targetRetainHeight int64) int64 { return newTxIndexerRetainHeight } -func (p *Pruner) pruneBlockIndexerToRetainHeight(targetRetainHeight int64) int64 { - // targetRetainHeight, err := p.GetBlockIndexerRetainHeight() - // if err != nil { - // // Indexer retain height has not yet been set - do not log any - // // errors at this time. - // if errors.Is(err, ErrKeyNotFound) { - // return 0 - // } - // p.logger.Error("Failed to get Indexer retain height", "err", err) - // return lastRetainHeight - // } +func (p *Pruner) pruneBlockIndexerToRetainHeight(lastRetainHeight int64) int64 { + targetRetainHeight, err := p.GetBlockIndexerRetainHeight() + if err != nil { + // Indexer retain height has not yet been set - do not log any + // errors at this time. + if errors.Is(err, ErrKeyNotFound) { + return 0 + } + p.logger.Error("Failed to get Indexer retain height", "err", err) + return lastRetainHeight + } - // if lastRetainHeight >= targetRetainHeight { - // return lastRetainHeight - // } + if lastRetainHeight >= targetRetainHeight { + return lastRetainHeight + } numPrunedBlockIndexer, newBlockIndexerRetainHeight, err := p.blockIndexer.Prune(targetRetainHeight) if err != nil {