From 5c2970f211d82f699ce63d57492dc3a6608486aa Mon Sep 17 00:00:00 2001 From: Lazar <12626340+Lazar955@users.noreply.github.com> Date: Fri, 17 Jan 2025 17:41:13 +0100 Subject: [PATCH] fix: removing from metrics tracker (#184) We were returning nil, making the statement never true --- CHANGELOG.md | 4 ++++ .../stakingeventwatcher/stakingeventwatcher.go | 10 +++++----- .../stakingeventwatcher/tracked_delegations.go | 6 +++--- e2etest/unbondingwatcher_e2e_test.go | 4 ++++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55f889d2..abc2e66d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## Unreleased +### Bug Fixes + +* [#184](https://github.com/babylonlabs-io/vigilante/pull/184) fix: removing from metrics tracker + ## v0.19.5 ### Improvements diff --git a/btcstaking-tracker/stakingeventwatcher/stakingeventwatcher.go b/btcstaking-tracker/stakingeventwatcher/stakingeventwatcher.go index 2950acae..23b76089 100644 --- a/btcstaking-tracker/stakingeventwatcher/stakingeventwatcher.go +++ b/btcstaking-tracker/stakingeventwatcher/stakingeventwatcher.go @@ -264,8 +264,8 @@ func (sew *StakingEventWatcher) fetchDelegations() { delegationStartHeight: delegation.DelegationStartHeight, unbondingOutput: delegation.UnbondingOutput, } - - if sew.pendingTracker.GetDelegation(delegation.StakingTx.TxHash()) == nil && !delegation.HasProof { + _, exists := sew.pendingTracker.GetDelegation(delegation.StakingTx.TxHash()) + if !exists && !delegation.HasProof { _, _ = sew.pendingTracker.AddDelegation( del.stakingTx, del.stakingOutputIdx, @@ -617,7 +617,7 @@ func (sew *StakingEventWatcher) checkBtcForStakingTx() { } for del := range sew.pendingTracker.DelegationsIter(1000) { - if inProgDel := sew.inProgressTracker.GetDelegation(del.StakingTx.TxHash()); inProgDel != nil { + if inProgDel, _ := sew.inProgressTracker.GetDelegation(del.StakingTx.TxHash()); inProgDel != nil { sew.logger.Debugf("skipping tx %s, already in progress", inProgDel.StakingTx.TxHash().String()) continue @@ -639,7 +639,7 @@ func (sew *StakingEventWatcher) checkBtcForStakingTx() { continue } - if d := sew.verifiedNotInChainTracker.GetDelegation(txHash); d != nil { + if _, exists := sew.verifiedNotInChainTracker.GetDelegation(txHash); exists { sew.verifiedNotInChainTracker.RemoveDelegation(txHash) sew.metrics.NumberOfVerifiedNotInChainDelegations.Dec() } @@ -705,7 +705,7 @@ func (sew *StakingEventWatcher) activateBtcDelegation( return } - if d := sew.verifiedInsufficientConfTacker.GetDelegation(stakingTxHash); d != nil { + if _, exists := sew.verifiedInsufficientConfTacker.GetDelegation(stakingTxHash); exists { sew.verifiedNotInChainTracker.RemoveDelegation(stakingTxHash) sew.metrics.NumberOfVerifiedInsufficientConfDelegations.Dec() } diff --git a/btcstaking-tracker/stakingeventwatcher/tracked_delegations.go b/btcstaking-tracker/stakingeventwatcher/tracked_delegations.go index 2f65a033..70567786 100644 --- a/btcstaking-tracker/stakingeventwatcher/tracked_delegations.go +++ b/btcstaking-tracker/stakingeventwatcher/tracked_delegations.go @@ -30,16 +30,16 @@ func NewTrackedDelegations() *TrackedDelegations { } // GetDelegation returns the tracked delegation for the given staking tx hash or nil if not found. -func (td *TrackedDelegations) GetDelegation(stakingTxHash chainhash.Hash) *TrackedDelegation { +func (td *TrackedDelegations) GetDelegation(stakingTxHash chainhash.Hash) (*TrackedDelegation, bool) { td.mu.RLock() defer td.mu.RUnlock() del, ok := td.mapping[stakingTxHash] if !ok { - return nil + return nil, false } - return del + return del, true } // GetDelegations returns all tracked delegations as a slice. diff --git a/e2etest/unbondingwatcher_e2e_test.go b/e2etest/unbondingwatcher_e2e_test.go index 80cbde8e..8effdfbc 100644 --- a/e2etest/unbondingwatcher_e2e_test.go +++ b/e2etest/unbondingwatcher_e2e_test.go @@ -209,6 +209,10 @@ func TestActivatingDelegation(t *testing.T) { return promtestutil.ToFloat64(stakingTrackerMetrics.FailedReportedActivateDelegations) == 0 }, eventuallyWaitTimeOut, eventuallyPollTime) + require.Eventually(t, func() bool { + return promtestutil.ToFloat64(stakingTrackerMetrics.NumberOfVerifiedNotInChainDelegations) == 0 + }, eventuallyWaitTimeOut, eventuallyPollTime) + // created delegation lacks inclusion proof, once created it will be in // pending status, once convenant signatures are added it will be in verified status, // and once the stakingEventWatcher submits MsgAddBTCDelegationInclusionProof it will