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

Merge hotfix release/2.19.0-dual-transmission to develop #15859

Open
wants to merge 12 commits into
base: develop
Choose a base branch
from

Conversation

Bwest981
Copy link
Collaborator

@Bwest981 Bwest981 commented Jan 7, 2025

This branch was cut off of latest release/2.19.0-dual-transmission - commit 480a3e5. This PR is to merge the v2.19.0-dual-transmission hotfix back into develop branch.

Bwest981 and others added 12 commits November 19, 2024 14:43
* [Keystone] Disable remote calls to RegisterToWorkflow

* Remove failing test

---------

Co-authored-by: Cedric Cordenier <[email protected]>
…n multinode state map [v2.19] (#15372)

(cherry picked from commit 0cabe54)

Co-authored-by: Brandon West <[email protected]>
* Consume latest changeset and update changelog

* Update CHANGELOG.md
* Txmv2_from_2.18

* Refactor secondary transmission

* Add dual transmission ABI

* Update dual transmission ABI

* Update ABI
Add forwarder for secondary transmission

* Refactor dual transmitter
Add tests

* Add missing test file

* Add missing file

* Fix lint

* Fix lint
Fix test

* Pass txManagerOCR2 to ocr2FeedsDualTransmission

* Add dualTransmission meta validation

* Implement feedback

* Add ContractTransmitter helper function

* Add debug logging

* Update chain selector

* Update chain selector go.mod and go.sum

* Fix config tests

* Fix integration test go.mod lint

* Fix integration test load go.sum lint

* Revert "Fix integration test load go.sum lint"

This reverts commit 4b08b01.

* Revert "Fix integration test go.mod lint"

This reverts commit 840e84d.

* Revert "Update chain selector go.mod and go.sum"

This reverts commit e56459b.

* Revert "Update chain selector"

This reverts commit 2d900c0.

* Add Abandon support

* Latest TXMv2 updates

* Fix CI

* Add hint and refund validation

---------

Co-authored-by: Dimitris <[email protected]>
* bumping wsrpc (#15549)

* Update go.mod

* make gomodtidy

---------

Co-authored-by: Patrick <[email protected]>
* Improvements

* Disable Solana tests

* Add support for beholder events

* Add log for url
@Bwest981 Bwest981 changed the title Release 2.19.0 dual transmission to develop Merge hotfix release/2.19.0-dual-transmission to develop Jan 7, 2025
@Bwest981 Bwest981 marked this pull request as ready for review January 7, 2025 18:26
@Bwest981 Bwest981 requested review from a team as code owners January 7, 2025 18:26
Copy link
Contributor

github-actions bot commented Jan 7, 2025

AER Report: CI Core

aer_workflow , commit , Clean Go Tidy & Generate , Detect Changes , Scheduled Run Frequency , GolangCI Lint (.) , Core Tests (go_core_tests) , Core Tests (go_core_tests_integration) , Core Tests (go_core_ccip_deployment_tests) , Core Tests (go_core_fuzz) , Core Tests (go_core_race_tests) , test-scripts , SonarQube Scan , lint

1. Missing go.sum entry for module:

[go_core_race_tests]

Source of Error:
core/services/keystore/keys/csakey/key_v2.go:10:2: missing go.sum entry for module providing package github.com/smartcontractkit/wsrpc/credentials (imported by github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc); to add:
	go get github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc
core/services/relay/evm/mercury/wsrpc/pb/mercury_wsrpc.pb.go:10:2: missing go.sum entry for module providing package github.com/smartcontractkit/wsrpc (imported by github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc); to add:
	go get github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc
core/services/relay/evm/mercury/wsrpc/client.go:17:2: missing go.sum entry for module providing package github.com/smartcontractkit/wsrpc/connectivity (imported by github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc); to add:
	go get github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc
core/services/synchronization/telemetry_ingress_batch_client.go:13:2: missing go.sum entry for module providing package github.com/smartcontractkit/wsrpc/examples/simple/keys (imported by github.com/smartcontractkit/chainlink/v2/core/services/synchronization); to add:
	go get github.com/smartcontractkit/chainlink/v2/core/services/synchronization

Why: The go.sum file is missing entries for the specified modules, which are required for the build process.

Suggested fix: Run go get for the missing modules to update the go.sum file with the necessary entries.

2. Too many return values:

[Golang Lint (.)]

Source of Error:
core/chains/legacyevm/evm_txm.go:59:30: too many return values
	have ("github.com/smartcontractkit/chainlink/v2/common/txmgr".TxManager[*"math/big".Int, *"github.com/smartcontractkit/chainlink/v2/core/chains/evm/types".Head, "github.com/ethereum/go-ethereum/common".Address, "github.com/ethereum/go-ethereum/common".Hash, "github.com/ethereum/go-ethereum/common".Hash, "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types".Nonce, gas.EvmFee], gas.EvmFeeEstimator, error)
	want ("github.com/smartcontractkit/chainlink/v2/common/txmgr".TxManager[*"math/big".Int, *"github.com/smartcontractkit/chainlink/v2/core/chains/evm/types".Head, "github.com/ethereum/go-ethereum/common".Address, "github.com/ethereum/go-ethereum/common".Hash, "github.com/ethereum/go-ethereum/common".Hash, "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types".Nonce, gas.EvmFee], error) (typecheck)

Why: The function evm_txm.go is returning more values than expected by its signature.

Suggested fix: Adjust the function signature to match the number of return values or modify the return statement to return the expected number of values.

3. Undefined fields or methods:

[Golang Lint (.)]

Source of Error:
core/services/gateway/gateway.go:110:23: g.connMgr.Start undefined (type ConnectionManager has no field or method Start) (typecheck)
	if err := g.connMgr.Start(ctx); err != nil {
	 ^
core/services/gateway/gateway.go:121:41: g.connMgr.Close undefined (type ConnectionManager has no field or method Close) (typecheck)
	err = multierr.Combine(err, g.connMgr.Close())
	 ^
core/services/webhook/delegate.go:161:17: spec.ID undefined (type registeredJob has no field or method ID) (typecheck)
	"jobID", spec.ID,
	 ^
core/services/webhook/delegate.go:162:16: spec.ExternalJobID undefined (type registeredJob has no field or method ExternalJobID) (typecheck)
	"uuid", spec.ExternalJobID,
	 ^
core/services/webhook/delegate.go:170:26: spec.ID undefined (type registeredJob has no field or method ID) (typecheck)
		"databaseID": spec.ID,
		 ^
core/services/webhook/delegate.go:171:26: spec.ExternalJobID undefined (type registeredJob has no field or method ExternalJobID) (typecheck)
		"externalJobID": spec.ExternalJobID,
		 ^
core/services/webhook/delegate.go:172:26: spec.Name undefined (type registeredJob has no field or method Name) (typecheck)
		"name": spec.Name.ValueOrZero(),
		 ^
core/services/webhook/delegate.go:180:31: spec.PipelineSpec undefined (type registeredJob has no field or method PipelineSpec) (typecheck)
run := pipeline.NewRun(*spec.PipelineSpec, vars)
	 ^
core/internal/cltest/cltest.go:263:38: app.KeyStore undefined (type *TestApplication has no field or method KeyStore) (typecheck)
	k, _ := MustInsertRandomKey(t, app.KeyStore.Eth(), chainID)
	 ^
core/internal/cltest/cltest.go:266:34: app.KeyStore undefined (type *TestApplication has no field or method KeyStore) (typecheck)
	id, ks := chainID.ToInt(), app.KeyStore.Eth()
	 ^
core/internal/cltest/cltest.go:279:25: app.KeyStore undefined (type *TestApplication has no field or method KeyStore) (typecheck)
	require.NoError(t, app.KeyStore.Unlock(ctx, Password))
	 ^
core/internal/cltest/cltest.go:286:27: app.GetKeyStore undefined (type *TestApplication has no field or method GetKeyStore) (typecheck)
	require.NoError(t, app.GetKeyStore().P2P().Add(ctx, v))
	 ^
core/internal/cltest/cltest.go:288:27: app.GetKeyStore undefined (type *TestApplication has no field or method GetKeyStore) (typecheck)
	require.NoError(t, app.GetKeyStore().CSA().Add(ctx, v))
	 ^
core/internal/cltest/cltest.go:290:27: app.GetKeyStore undefined (type *TestApplication has no field or method GetKeyStore) (typecheck)
	require.NoError(t, app.GetKeyStore().OCR2().Add(ctx, v))
	 ^
core/internal/cltest/cltest.go:641:12: ta.GetDB undefined (type *TestApplication has no field or method GetDB) (typecheck)
	err := ta.GetDB().GetContext(ctx, &id, `INSERT INTO sessions (id, email, last_used, created_at) VALUES ($1, $2, $3, NOW()) RETURNING id`, session.ID, email, session.LastUsed)
	 ^
core/internal/cltest/cltest.go:648:27: ta.KeyStore undefined (type *TestApplication has no field or method KeyStore) (typecheck)
	require.NoError(ta.t, ta.KeyStore.Unlock(ctx, Password))
	 ^
core/internal/cltest/cltest.go:649:15: ta.KeyStore undefined (type *TestApplication has no field or method KeyStore) (typecheck)
	_, err := ta.KeyStore.Eth().Import(ctx, []byte(content), Password, &FixtureChainID)
	 ^
core/internal/cltest/cltest.go:677:11: ta.BasicAdminUsersORM undefined (type *TestApplication has no field or method BasicAdminUsersORM) (typecheck)
	err = ta.BasicAdminUsersORM().CreateUser(ctx, &u)
	 ^
core/internal/cltest/cltest.go:699:38: ta.GetConfig undefined (type *TestApplication has no field or method GetConfig) (typecheck)
	Config: ta.GetConfig(),
	 ^
core/internal/cltest/cltest.go:718:38: ta.GetConfig undefined (type *TestApplication has no field or method GetConfig) (typecheck)
	Config: ta.GetConfig(),
	 ^
core/internal/cltest/cltest.go:1310:95: app.GetConfig undefined (type *TestApplication has no field or method GetConfig) (typecheck)
ethClient.On("ConfiguredChainID", mock.Anything).Return(evmtest.MustGetDefaultChainID(t, app.GetConfig().EVMConfigs()), nil)
	 ^
core/capabilities/integration_tests/framework/don.go:260:18: node.Stop undefined (type *capabilityNode has no field or method Stop) (typecheck)
	if err := node.Stop(); err != nil {
	 ^
core/capabilities/integration_tests/framework/don.go:337:15: node.AddJobV2 undefined (type *capabilityNode has no field or method AddJobV2) (typecheck)
	err := node.AddJobV2(ctx, j)
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:181:90: ccipContracts.Dest undefined (type CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
c, err := node.App.GetRelayers().LegacyEVMChains().Get(strconv.FormatUint(ccipContracts.Dest.ChainID, 10))
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:198:131: ccipContracts.Dest undefined (type CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
}, testutils.WaitTimeout(t), 1*time.Second).Should(gomega.BeTrue(), "node is not using updated price registry %s", ccipContracts.Dest.PriceRegistry.Address().Hex())
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:185:17: ccipContracts.Source undefined (type CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	ccipContracts.Source.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:186:17: ccipContracts.Dest undefined (type CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
	ccipContracts.Dest.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:207:17: ccipContracts.Source undefined (type CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	ccipContracts.Source.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:232:17: ccipContracts.Source undefined (type CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	ccipContracts.Source.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:253:90: ccipContracts.Source undefined (type *CCIPIntegrationTestHarness has no field or method Source) (typecheck)
c, err := node.App.GetRelayers().LegacyEVMChains().Get(strconv.FormatUint(ccipContracts.Source.ChainID, 10))
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:257:17: ccipContracts.Source undefined (type *CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	ccipContracts.Source.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:258:17: ccipContracts.Dest undefined (type *CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
	ccipContracts.Dest.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:280:90: ccipContracts.Dest undefined (type *CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
c, err := node.App.GetRelayers().LegacyEVMChains().Get(strconv.FormatUint(ccipContracts.Dest.ChainID, 10))
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:284:17: ccipContracts.Source undefined (type *CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	ccipContracts.Source.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:285:17: ccipContracts.Dest undefined (type *CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
	ccipContracts.Dest.Chain.Commit()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:442:19: keyStore.Eth undefined (type *ksa has no field or method Eth) (typecheck)
	ETHKS: keyStore.Eth(),
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:581:32: c.Source undefined (type *CCIPIntegrationTestHarness has no field or method Source) (typecheck)
sourceWrappedNative, err := c.Source.Router.GetWrappedNative(nil)
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:583:30: c.Dest undefined (type *CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
destWrappedNative, err := c.Dest.Router.GetWrappedNative(nil)
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:594:30: c.Dest undefined (type *CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
	linkUSD.URL, ethUSD.URL, c.Dest.LinkToken.Address(), sourceWrappedNative, destWrappedNative)
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:600:24: c.Dest undefined (type *CCIPIntegrationTestHarness has no field or method Dest) (typecheck)
jobParams.OffRamp = c.Dest.OffRamp.Address()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:731:23: c.Source undefined (type *CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	require.NotNil(t, c.Source.OnRamp, "no onramp configured")
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:732:14: c.Source undefined (type *CCIPIntegrationTestHarness has no field or method Source) (typecheck)
	onRamp = c.Source.OnRamp.Address()
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:991:4: c.Oracles undefined (type *CCIPIntegrationTestHarness has no field or method Oracles) (typecheck)
	c.Oracles = oracles
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:992:27: c.CreateDefaultCommitOnchainConfig undefined (type *CCIPIntegrationTestHarness has no field or method CreateDefaultCommitOnchainConfig) (typecheck)
commitOnchainConfig := c.CreateDefaultCommitOnchainConfig(t)
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:993:28: c.CreateDefaultCommitOffchainConfig undefined (type *CCIPIntegrationTestHarness has no field or method CreateDefaultCommitOffchainConfig) (typecheck)
commitOffchainConfig := c.CreateDefaultCommitOffchainConfig(t)
	 ^
core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go:994:25: c.CreateDefaultExecOnchainConfig undefined (type *CCIPIntegrationTestHarness has no field or method CreateDefaultExecOnchainConfig) (typecheck)
execOnchainConfig := c.CreateDefaultExecOnchainConfig(t)
	 ^

Why: The code is referencing fields or methods that do not exist in the specified types.

Suggested fix: Verify the type definitions and ensure that the referenced fields or methods exist. If they do not, either update the type definitions or modify the code to use the correct fields or methods.

4. Process completed with exit code 1:

[Ensure clean after generate]

Source of Error:
common/client/mock_head_test.go | 173 -
common/client/mock_node_selector_test.go | 127 -
common/client/mock_node_test.go | 567 ---
.../client/mock_pool_chain_info_provider_test.go | 132 -
common/client/mock_rpc_client_test.go | 510 --
common/client/mock_send_only_client_test.go | 173 -
common/client/mock_send_only_node_test.go | 357 --
common/headtracker/mocks/head_broadcaster.go | 360 --
common/headtracker/mocks/head_trackable.go | 72 -
common/headtracker/mocks/head_tracker.go | 427 --
common/txmgr/mocks/tx_manager.go | 1131 -----
common/txmgr/types/mocks/forwarder_manager.go | 444 --
common/txmgr/types/mocks/key_store.go | 205 -
common/txmgr/types/mocks/tx_attempt_builder.go | 767 ---
common/txmgr/types/mocks/tx_store.go | 2697 -----------
common/txmgr/types/mocks/tx_strategy.go | 143 -
common/types/mocks/head.go | 607 ---
common/types/mocks/monitoring_endpoint.go | 65 -
common/types/mocks/subscription.go | 111 -
core/bridges/mocks/orm.go | 918 ----
core/capabilities/ccip/types/mocks/ccip_oracle.go | 122 -
.../ccip/types/mocks/oracle_creator.go | 142 -
core/capabilities/remote/types/mocks/dispatcher.go | 396 --
core/capabilities/remote/types/mocks/receiver.go | 71 -
.../targets/mocks/contract_value_getter.go | 136 -
core/capabilities/targets/mocks/contract_writer.go | 435 --
core/chains/evm/client/mocks/client.go | 2121 ---------
.../chains/evm/config/mocks/chain_scoped_config.go | 82 -
core/chains/evm/config/mocks/gas_estimator.go | 1054 -----
core/chains/evm/forwarders/mocks/orm.go | 335 --
core/chains/evm/gas/mocks/evm_estimator.go | 623 ---
core/chains/evm/gas/mocks/evm_fee_estimator.go | 588 ---
core/chains/evm
</cicore>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants