Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dual transmission for 2.19 #15464

Closed
wants to merge 11 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/cool-owls-laugh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"chainlink": minor
---

Bump to start the next version
4 changes: 4 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@
/core/services/ccip @smartcontractkit/ccip
/core/services/ocr2/plugins/ccip @smartcontractkit/ccip

# CCIP
/core/services/ccip @smartcontractkit/ccip
/core/services/ocr2/plugins/ccip @smartcontractkit/ccip

# VRF-related services
/core/services/vrf @smartcontractkit/dev-services @smartcontractkit/core
/core/services/blockhashstore @smartcontractkit/dev-services @smartcontractkit/core
Expand Down
6 changes: 6 additions & 0 deletions .mockery.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@ packages:
BalanceMonitor:
config:
dir: "{{ .InterfaceDir }}/../mocks"
github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm:
interfaces:
Client:
TxStore:
AttemptBuilder:
Keystore:
github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr:
interfaces:
ChainConfig:
Expand Down
123 changes: 5 additions & 118 deletions CHANGELOG.md

Large diffs are not rendered by default.

150 changes: 150 additions & 0 deletions common/txmgr/confirmer.go
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,23 @@
return err
}
ec.lggr.Debugw("Finished RebroadcastWhereNecessary", "headNum", head.BlockNumber(), "time", time.Since(mark), "id", "confirmer")
mark = time.Now()

if err := ec.EnsureConfirmedTransactionsInLongestChain(ctx, head); err != nil {
return fmt.Errorf("EnsureConfirmedTransactionsInLongestChain failed: %w", err)
}

ec.lggr.Debugw("Finished EnsureConfirmedTransactionsInLongestChain", "headNum", head.BlockNumber(), "time", time.Since(mark), "id", "confirmer")

if ec.resumeCallback != nil {
mark = time.Now()
if err := ec.ResumePendingTaskRuns(ctx, head.BlockNumber(), latestFinalizedHead.BlockNumber()); err != nil {

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

undefined: latestFinalizedHead

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.ResumePendingTaskRuns undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method ResumePendingTaskRuns)

Check failure on line 295 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

undefined: latestFinalizedHead
return fmt.Errorf("ResumePendingTaskRuns failed: %w", err)
}

ec.lggr.Debugw("Finished ResumePendingTaskRuns", "headNum", head.BlockNumber(), "time", time.Since(mark), "id", "confirmer")
}

ec.lggr.Debugw("processHead finish", "headNum", head.BlockNumber(), "id", "confirmer")

return nil
Expand Down Expand Up @@ -800,6 +817,139 @@
}
}

// EnsureConfirmedTransactionsInLongestChain finds all confirmed txes up to the earliest head
// of the given chain and ensures that every one has a receipt with a block hash that is
// in the given chain.
//
// If any of the confirmed transactions does not have a receipt in the chain, it has been
// re-org'd out and will be rebroadcast.
func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) EnsureConfirmedTransactionsInLongestChain(ctx context.Context, head types.Head[BLOCK_HASH]) error {
logArgs := []interface{}{
"chainLength", head.ChainLength(),
}

//Here, we rely on the finalized block provided in the chain instead of the one
//provided via a dedicated method to avoid the false warning of the chain being
//too short. When `FinalityTagBypass = true,` HeadTracker tracks `finality depth
//+ history depth` to prevent excessive CPU usage. Thus, the provided chain may
//be shorter than the chain from the latest to the latest finalized, marked with
//a tag. A proper fix of this issue and complete switch to finality tag support
//will be introduced in BCFR-620
latestFinalized := head.LatestFinalizedHead()
if latestFinalized == nil || !latestFinalized.IsValid() {
if ec.nConsecutiveBlocksChainTooShort > logAfterNConsecutiveBlocksChainTooShort {

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 840 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

undefined: logAfterNConsecutiveBlocksChainTooShort
warnMsg := "Chain length supplied for re-org detection was shorter than the depth from the latest head to the finalized head. Re-org protection is not working properly. This could indicate a problem with the remote RPC endpoint, a compatibility issue with a particular blockchain, a bug with this particular blockchain, heads table being truncated too early, remote node out of sync, or something else. If this happens a lot please raise a bug with the Chainlink team including a log output sample and details of the chain and RPC endpoint you are using."
ec.lggr.Warnw(warnMsg, append(logArgs, "nConsecutiveBlocksChainTooShort", ec.nConsecutiveBlocksChainTooShort)...)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 842 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)
} else {
logMsg := "Chain length supplied for re-org detection was shorter than the depth from the latest head to the finalized head"
ec.lggr.Debugw(logMsg, append(logArgs, "nConsecutiveBlocksChainTooShort", ec.nConsecutiveBlocksChainTooShort)...)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 845 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)
}
ec.nConsecutiveBlocksChainTooShort++

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 847 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)
} else {
ec.nConsecutiveBlocksChainTooShort = 0

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)

Check failure on line 849 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.nConsecutiveBlocksChainTooShort undefined (type *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method nConsecutiveBlocksChainTooShort)
}
etxs, err := ec.txStore.FindTransactionsConfirmedInBlockRange(ctx, head.BlockNumber(), head.EarliestHeadInChain().BlockNumber(), ec.chainID)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)

Check failure on line 851 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.txStore.FindTransactionsConfirmedInBlockRange undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method FindTransactionsConfirmedInBlockRange)
if err != nil {
return fmt.Errorf("findTransactionsConfirmedInBlockRange failed: %w", err)
}

for _, etx := range etxs {
if !hasReceiptInLongestChain(*etx, head) {
if err := ec.markForRebroadcast(ctx, *etx, head); err != nil {
return fmt.Errorf("markForRebroadcast failed for etx %v: %w", etx.ID, err)
}
}
}

// It is safe to process separate keys concurrently
// NOTE: This design will block one key if another takes a really long time to execute
var wg sync.WaitGroup
errors := []error{}
var errMu sync.Mutex
wg.Add(len(ec.enabledAddresses))
for _, address := range ec.enabledAddresses {
go func(fromAddress ADDR) {
if err := ec.handleAnyInProgressAttempts(ctx, fromAddress, head.BlockNumber()); err != nil {
errMu.Lock()
errors = append(errors, err)
errMu.Unlock()
ec.lggr.Errorw("Error in handleAnyInProgressAttempts", "err", err, "fromAddress", fromAddress)
}

wg.Done()
}(address)
}

wg.Wait()

return multierr.Combine(errors...)
}

func hasReceiptInLongestChain[
CHAIN_ID types.ID,
ADDR types.Hashable,
TX_HASH, BLOCK_HASH types.Hashable,
SEQ types.Sequence,
FEE feetypes.Fee,
](etx txmgrtypes.Tx[CHAIN_ID, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE], head types.Head[BLOCK_HASH]) bool {
for {
for _, attempt := range etx.TxAttempts {
for _, receipt := range attempt.Receipts {
if receipt.GetBlockHash().String() == head.BlockHash().String() && receipt.GetBlockNumber().Int64() == head.BlockNumber() {
return true
}
}
}

head = head.GetParent()
if head == nil {
return false
}
}
}

func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) markForRebroadcast(ctx context.Context, etx txmgrtypes.Tx[CHAIN_ID, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE], head types.Head[BLOCK_HASH]) error {
if len(etx.TxAttempts) == 0 {
return fmt.Errorf("invariant violation: expected tx %v to have at least one attempt", etx.ID)
}

// Rebroadcast the one with the highest gas price
attempt := etx.TxAttempts[0]
var receipt txmgrtypes.ChainReceipt[TX_HASH, BLOCK_HASH]
if len(attempt.Receipts) > 0 {
receipt = attempt.Receipts[0]
}

logValues := []interface{}{
"txhash", attempt.Hash.String(),
"currentBlockNum", head.BlockNumber(),
"currentBlockHash", head.BlockHash().String(),
"txID", etx.ID,
"attemptID", attempt.ID,
"nReceipts", len(attempt.Receipts),
"id", "confirmer",
}

// nil check on receipt interface
if receipt != nil {
logValues = append(logValues,
"replacementBlockHashAtConfirmedHeight", head.HashAtHeight(receipt.GetBlockNumber().Int64()),
"confirmedInBlockNum", receipt.GetBlockNumber(),
"confirmedInBlockHash", receipt.GetBlockHash(),
"confirmedInTxIndex", receipt.GetTransactionIndex(),
)
}

ec.lggr.Infow(fmt.Sprintf("Re-org detected. Rebroadcasting transaction %s which may have been re-org'd out of the main chain", attempt.Hash.String()), logValues...)

// Put it back in progress and delete all receipts (they do not apply to the new chain)
if err := ec.txStore.UpdateTxForRebroadcast(ctx, etx, attempt); err != nil {

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests_integration)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_ccip_deployment_tests)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_tests)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / lint

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_race_tests)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Core Tests (go_core_fuzz)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-amd64

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / split-arm64

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/config/docs, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/chainlink, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2,github.com/smartcontract...

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/chains/evm/txm/storage, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/services/vrf, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)

Check failure on line 946 in common/txmgr/confirmer.go

View workflow job for this annotation

GitHub Actions / Find New Flaky Tests In Chainlink Project / Run Tests (github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ocrimpls, ubuntu-latest)

ec.txStore.UpdateTxForRebroadcast undefined (type "github.com/smartcontractkit/chainlink/v2/common/txmgr/types".TxStore[ADDR, CHAIN_ID, TX_HASH, BLOCK_HASH, R, SEQ, FEE] has no field or method UpdateTxForRebroadcast)
return fmt.Errorf("markForRebroadcast failed: %w", err)
}

return nil
}

// ForceRebroadcast sends a transaction for every sequence in the given sequence range at the given gas price.
// If an tx exists for this sequence, we re-send the existing tx with the supplied parameters.
// If an tx doesn't exist for this sequence, we send a zero transaction.
Expand Down
33 changes: 32 additions & 1 deletion common/txmgr/txmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,19 @@ type TxManager[
GetTransactionStatus(ctx context.Context, transactionID string) (state commontypes.TransactionStatus, err error)
}

type TxmV2Wrapper[
CHAIN_ID types.ID,
HEAD types.Head[BLOCK_HASH],
ADDR types.Hashable,
TX_HASH types.Hashable,
BLOCK_HASH types.Hashable,
SEQ types.Sequence,
FEE feetypes.Fee,
] interface {
services.Service
CreateTransaction(ctx context.Context, txRequest txmgrtypes.TxRequest[ADDR, TX_HASH]) (etx txmgrtypes.Tx[CHAIN_ID, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE], err error)
}

type reset struct {
// f is the function to execute between stopping/starting the
// Broadcaster and Confirmer
Expand Down Expand Up @@ -112,6 +125,7 @@ type Txm[
fwdMgr txmgrtypes.ForwarderManager[ADDR]
txAttemptBuilder txmgrtypes.TxAttemptBuilder[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE]
newErrorClassifier NewErrorClassifier
txmv2wrapper TxmV2Wrapper[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE]
}

func (b *Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) RegisterResumeCallback(fn ResumeCallback) {
Expand Down Expand Up @@ -147,6 +161,7 @@ func NewTxm[
tracker *Tracker[CHAIN_ID, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE],
finalizer txmgrtypes.Finalizer[BLOCK_HASH, HEAD],
newErrorClassifierFunc NewErrorClassifier,
txmv2wrapper TxmV2Wrapper[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE],
) *Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE] {
b := Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]{
logger: logger.Sugared(lggr),
Expand All @@ -169,6 +184,7 @@ func NewTxm[
tracker: tracker,
newErrorClassifier: newErrorClassifierFunc,
finalizer: finalizer,
txmv2wrapper: txmv2wrapper,
}

if txCfg.ResendAfterThreshold() <= 0 {
Expand Down Expand Up @@ -207,6 +223,12 @@ func (b *Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) Start(ctx
return fmt.Errorf("Txm: Finalizer failed to start: %w", err)
}

if b.txmv2wrapper != nil {
if err := ms.Start(ctx, b.txmv2wrapper); err != nil {
return fmt.Errorf("Txm: Txmv2 failed to start: %w", err)
}
}

b.logger.Info("Txm starting runLoop")
b.wg.Add(1)
go b.runLoop()
Expand Down Expand Up @@ -460,6 +482,12 @@ func (b *Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) runLoop()
if err != nil && (!errors.Is(err, services.ErrAlreadyStopped) || !errors.Is(err, services.ErrCannotStopUnstarted)) {
b.logger.Errorw(fmt.Sprintf("Failed to Close Finalizer: %v", err), "err", err)
}
if b.txmv2wrapper != nil {
err = b.txmv2wrapper.Close()
if err != nil && (!errors.Is(err, services.ErrAlreadyStopped) || !errors.Is(err, services.ErrCannotStopUnstarted)) {
b.logger.Errorw(fmt.Sprintf("Failed to Close Finalizer: %v", err), "err", err)
}
}
return
case <-keysChanged:
// This check prevents the weird edge-case where you can select
Expand Down Expand Up @@ -513,11 +541,14 @@ func (b *Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) Trigger(ad
func (b *Txm[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) CreateTransaction(ctx context.Context, txRequest txmgrtypes.TxRequest[ADDR, TX_HASH]) (tx txmgrtypes.Tx[CHAIN_ID, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE], err error) {
// Check for existing Tx with IdempotencyKey. If found, return the Tx and do nothing
// Skipping CreateTransaction to avoid double send
if b.txmv2wrapper != nil && txRequest.Meta != nil && txRequest.Meta.DualBroadcast != nil && *txRequest.Meta.DualBroadcast {
return b.txmv2wrapper.CreateTransaction(ctx, txRequest)
}
if txRequest.IdempotencyKey != nil {
var existingTx *txmgrtypes.Tx[CHAIN_ID, ADDR, TX_HASH, BLOCK_HASH, SEQ, FEE]
existingTx, err = b.txStore.FindTxWithIdempotencyKey(ctx, *txRequest.IdempotencyKey, b.chainID)
if err != nil {
return tx, fmt.Errorf("Failed to search for transaction with IdempotencyKey: %w", err)
return tx, fmt.Errorf("failed to search for transaction with IdempotencyKey: %w", err)
}
if existingTx != nil {
b.logger.Infow("Found a Tx with IdempotencyKey. Returning existing Tx without creating a new one.", "IdempotencyKey", *txRequest.IdempotencyKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,8 @@ func makeTestEvmTxm(
lp,
keyStore,
estimator,
ht)
ht,
nil)
require.NoError(t, err, "can't create tx manager")

_, unsub := broadcaster.Subscribe(txm)
Expand Down Expand Up @@ -603,8 +604,8 @@ func (d *TestDAOracleConfig) OracleType() *toml.DAOracleType {
return &oracleType
}

func (d *TestDAOracleConfig) OracleAddress() *evmtypes.EIP55Address {
a, err := evmtypes.NewEIP55Address("0x420000000000000000000000000000000000000F")
func (d *TestDAOracleConfig) OracleAddress() *types.EIP55Address {
a, err := types.NewEIP55Address("0x420000000000000000000000000000000000000F")
if err != nil {
panic(err)
}
Expand Down
4 changes: 4 additions & 0 deletions core/chains/evm/config/chain_scoped.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ func (e *EVMConfig) BalanceMonitor() BalanceMonitor {
return &balanceMonitorConfig{c: e.C.BalanceMonitor}
}

func (e *EVMConfig) TxmV2() TxmV2 {
return &txmv2Config{c: e.C.TxmV2}
}

func (e *EVMConfig) Transactions() Transactions {
return &transactionsConfig{c: e.C.Transactions}
}
Expand Down
25 changes: 25 additions & 0 deletions core/chains/evm/config/chain_scoped_txmv2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package config

import (
"net/url"
"time"

"github.com/smartcontractkit/chainlink/v2/core/chains/evm/config/toml"
)

type txmv2Config struct {
c toml.TxmV2
}

func (t *txmv2Config) Enabled() bool {
return *t.c.Enabled
}

func (t *txmv2Config) BlockTime() *time.Duration {
d := t.c.BlockTime.Duration()
return &d
}

func (t *txmv2Config) CustomURL() *url.URL {
return t.c.CustomURL.URL()
}
6 changes: 5 additions & 1 deletion core/chains/evm/config/chaintype/chaintype.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ const (
ChainZkEvm ChainType = "zkevm"
ChainZkSync ChainType = "zksync"
ChainZircuit ChainType = "zircuit"
ChainDualBroadcast ChainType = "dualBroadcast"
)

// IsL2 returns true if this chain is a Layer 2 chain. Notably:
Expand All @@ -39,7 +40,7 @@ func (c ChainType) IsL2() bool {

func (c ChainType) IsValid() bool {
switch c {
case "", ChainArbitrum, ChainAstar, ChainCelo, ChainGnosis, ChainHedera, ChainKroma, ChainMantle, ChainMetis, ChainOptimismBedrock, ChainScroll, ChainWeMix, ChainXLayer, ChainZkEvm, ChainZkSync, ChainZircuit:
case "", ChainArbitrum, ChainAstar, ChainCelo, ChainGnosis, ChainHedera, ChainKroma, ChainMantle, ChainMetis, ChainOptimismBedrock, ChainScroll, ChainWeMix, ChainXLayer, ChainZkEvm, ChainZkSync, ChainZircuit, ChainDualBroadcast:
return true
}
return false
Expand Down Expand Up @@ -77,6 +78,8 @@ func FromSlug(slug string) ChainType {
return ChainZkSync
case "zircuit":
return ChainZircuit
case "dualBroadcast":
return ChainDualBroadcast
default:
return ChainType(slug)
}
Expand Down Expand Up @@ -144,4 +147,5 @@ var ErrInvalid = fmt.Errorf("must be one of %s or omitted", strings.Join([]strin
string(ChainZkEvm),
string(ChainZkSync),
string(ChainZircuit),
string(ChainDualBroadcast),
}, ", "))
7 changes: 7 additions & 0 deletions core/chains/evm/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
type EVM interface {
HeadTracker() HeadTracker
BalanceMonitor() BalanceMonitor
TxmV2() TxmV2
Transactions() Transactions
GasEstimator() GasEstimator
OCR() OCR
Expand Down Expand Up @@ -102,6 +103,12 @@ type ClientErrors interface {
TooManyResults() string
}

type TxmV2 interface {
Enabled() bool
BlockTime() *time.Duration
CustomURL() *url.URL
}

type Transactions interface {
ForwardersEnabled() bool
ReaperInterval() time.Duration
Expand Down
Loading
Loading