diff --git a/core/scripts/go.mod b/core/scripts/go.mod index a1c7bed0ec3..827b0d1a207 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -43,7 +43,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.103 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip/chains/evm v0.0.0-20260618155522-3600f66e26cd - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-common/keystore v1.2.0 github.com/smartcontractkit/chainlink-data-streams v0.1.15-0.20260522094612-5f9f748bd87a github.com/smartcontractkit/chainlink-deployments-framework v0.105.0 diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 483d6be1897..82b69e131ed 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1571,8 +1571,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260511195239-0f6e1b177fc7/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h1:WjZwKtUA/0TPvzgCt8bcdq+BHMIL65S0oU79mxgZn/Y= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto= diff --git a/core/services/workflows/monitoring/monitoring.go b/core/services/workflows/monitoring/monitoring.go index 8d2fbc0d0fe..6bb1553fcd5 100644 --- a/core/services/workflows/monitoring/monitoring.go +++ b/core/services/workflows/monitoring/monitoring.go @@ -76,6 +76,10 @@ type EngineMetrics struct { triggerQueueToExecutionStartSeconds metric.Float64Histogram triggerPayloadBytes metric.Int64Histogram executionSemaphoreWaitSeconds metric.Float64Histogram + + donTimeCallsCounter metric.Int64Counter + donTimeTimeoutsCounter metric.Int64Counter + donTimeErrorsCounter metric.Int64Counter } func InitMonitoringResources() (em *EngineMetrics, err error) { @@ -401,6 +405,30 @@ func InitMonitoringResources() (em *EngineMetrics, err error) { return nil, fmt.Errorf("failed to register execution semaphore wait histogram: %w", err) } + em.donTimeCallsCounter, err = beholder.GetMeter().Int64Counter( + "platform_engine_dontime_calls_total", + metric.WithDescription("Total GetDONTime calls made by the workflow engine"), + ) + if err != nil { + return nil, fmt.Errorf("failed to register don time calls counter: %w", err) + } + + em.donTimeTimeoutsCounter, err = beholder.GetMeter().Int64Counter( + "platform_engine_dontime_timeouts_total", + metric.WithDescription("GetDONTime calls that timed out waiting for a response"), + ) + if err != nil { + return nil, fmt.Errorf("failed to register don time timeouts counter: %w", err) + } + + em.donTimeErrorsCounter, err = beholder.GetMeter().Int64Counter( + "platform_engine_dontime_errors_total", + metric.WithDescription("GetDONTime calls that failed without DON consensus recovery"), + ) + if err != nil { + return nil, fmt.Errorf("failed to register don time errors counter: %w", err) + } + return em, nil } @@ -743,3 +771,18 @@ func (c WorkflowsMetricLabeler) RecordExecutionSemaphoreWaitSeconds(ctx context. otelLabels := beholder.OtelAttributes(c.Labels).AsStringAttributes() c.em.executionSemaphoreWaitSeconds.Record(ctx, waitSeconds, metric.WithAttributes(otelLabels...)) } + +func (c WorkflowsMetricLabeler) IncrementDonTimeCallsCounter(ctx context.Context) { + otelLabels := beholder.OtelAttributes(c.Labels).AsStringAttributes() + c.em.donTimeCallsCounter.Add(ctx, 1, metric.WithAttributes(otelLabels...)) +} + +func (c WorkflowsMetricLabeler) IncrementDonTimeTimeoutsCounter(ctx context.Context) { + otelLabels := beholder.OtelAttributes(c.Labels).AsStringAttributes() + c.em.donTimeTimeoutsCounter.Add(ctx, 1, metric.WithAttributes(otelLabels...)) +} + +func (c WorkflowsMetricLabeler) IncrementDonTimeErrorsCounter(ctx context.Context) { + otelLabels := beholder.OtelAttributes(c.Labels).AsStringAttributes() + c.em.donTimeErrorsCounter.Add(ctx, 1, metric.WithAttributes(otelLabels...)) +} diff --git a/core/services/workflows/v2/config.go b/core/services/workflows/v2/config.go index f6775125268..5b208aef700 100644 --- a/core/services/workflows/v2/config.go +++ b/core/services/workflows/v2/config.go @@ -117,6 +117,7 @@ type EngineLimiters struct { UserMetricLabelValueLength limits.BoundLimiter[int] ExecutionTimestampsEnabled limits.GateLimiter + DONTimeRequestTimeout limits.TimeLimiter } // NewLimiters returns a new set of EngineLimiters based on the default configuration, and optionally modified by cfgFn. @@ -264,6 +265,10 @@ func (l *EngineLimiters) init(lf limits.Factory, cfgFn func(*cresettings.Workflo if err != nil { return } + l.DONTimeRequestTimeout, err = lf.MakeTimeLimiter(cfg.DONTime.RequestTimeout) + if err != nil { + return + } return } @@ -302,6 +307,7 @@ func (l *EngineLimiters) EvictWorkflow(workflowID string) error { l.ConfidentialHTTPCalls, l.SecretsCalls, l.ExecutionTimestampsEnabled, + l.DONTimeRequestTimeout, } var errs error for _, e := range evictables { @@ -343,11 +349,13 @@ func (l *EngineLimiters) Close() error { l.ConfidentialHTTPCalls, l.SecretsCalls, l.ExecutionTimestampsEnabled, + l.DONTimeRequestTimeout, ) } type EngineFeatureFlags struct { - FeatureMultiTriggerExecutionIDs limits.RangeLimiter[config.Timestamp] + FeatureMultiTriggerExecutionIDs limits.RangeLimiter[config.Timestamp] + FeatureUseSingleDONTimeProviderPerExecution limits.RangeLimiter[config.Timestamp] } func NewFeatureFlags(lf limits.Factory, cfgFn func(*cresettings.Workflows)) (*EngineFeatureFlags, error) { @@ -359,8 +367,13 @@ func NewFeatureFlags(lf limits.Factory, cfgFn func(*cresettings.Workflows)) (*En if err != nil { return nil, err } + featureUseSingleDONTimeProviderPerExecution, err := limits.MakeRangeLimiter(lf, cfg.FeatureUseSingleDONTimeProviderPerExecutionActivePeriod) + if err != nil { + return nil, err + } return &EngineFeatureFlags{ - FeatureMultiTriggerExecutionIDs: featureMultiTriggerExecutionIDs, + FeatureMultiTriggerExecutionIDs: featureMultiTriggerExecutionIDs, + FeatureUseSingleDONTimeProviderPerExecution: featureUseSingleDONTimeProviderPerExecution, }, nil } diff --git a/core/services/workflows/v2/engine.go b/core/services/workflows/v2/engine.go index 153f2c7c9fb..7436cf57bb7 100644 --- a/core/services/workflows/v2/engine.go +++ b/core/services/workflows/v2/engine.go @@ -424,7 +424,7 @@ func (e *Engine) runTriggerSubscriptionPhase(ctx context.Context) error { var timeProvider TimeProvider = &types.LocalTimeProvider{} if !e.cfg.UseLocalTimeProvider { - timeProvider = NewDonTimeProvider(e.cfg.DonTimeStore, e.cfg.WorkflowID, e.logger()) + timeProvider = NewDonTimeProvider(e.cfg.DonTimeStore, e.cfg.WorkflowID, e.donTimeRequestTimeout(subCtx, e.cfg.LocalLimiters.DONTimeRequestTimeout), e.logger(), e.metrics) } moduleExecuteMaxResponseSizeBytes, err := e.cfg.LocalLimiters.ExecutionResponse.Limit(ctx) @@ -721,9 +721,10 @@ func (e *Engine) startExecution(ctx context.Context, wrappedTriggerEvent enqueue lggr := e.logger().With(platform.KeyOrganizationID, e.orgID) var executionTimestamp time.Time + var executionDonTimeProvider TimeProvider if tsErr := e.cfg.LocalLimiters.ExecutionTimestampsEnabled.AllowErr(ctx); tsErr == nil { - executionTimeProvider := NewDonTimeProvider(e.cfg.DonTimeStore, fullExecutionID, lggr) - donTime, dtErr := executionTimeProvider.GetDONTime() + executionDonTimeProvider = NewDonTimeProvider(e.cfg.DonTimeStore, fullExecutionID, e.donTimeRequestTimeout(ctx, e.cfg.LocalLimiters.DONTimeRequestTimeout), lggr, e.metrics) + donTime, dtErr := executionDonTimeProvider.GetDONTime() if dtErr != nil { executionTimestamp = e.cfg.Clock.Now() lggr.Warnw("Failed to get DON time for execution timestamp, falling back to local time", "err", dtErr, "executionTimestamp", executionTimestamp) @@ -924,7 +925,11 @@ func (e *Engine) startExecution(ctx context.Context, wrappedTriggerEvent enqueue var timeProvider TimeProvider = &types.LocalTimeProvider{} if !e.cfg.UseLocalTimeProvider { - timeProvider = NewDonTimeProvider(e.cfg.DonTimeStore, executionID, lggr) + if e.cfg.FeatureFlags.FeatureUseSingleDONTimeProviderPerExecution.Check(ctx, config.NewTimestamp(executionTimestamp)) == nil && executionDonTimeProvider != nil { + timeProvider = executionDonTimeProvider + } else { + timeProvider = NewDonTimeProvider(e.cfg.DonTimeStore, executionID, e.donTimeRequestTimeout(execCtx, e.cfg.LocalLimiters.DONTimeRequestTimeout), lggr, e.metrics) + } } moduleExecuteMaxResponseSizeBytes, err := e.cfg.LocalLimiters.ExecutionResponse.Limit(ctx) @@ -1206,3 +1211,20 @@ func (e *Engine) emitUserLogs(ctx context.Context, userLogChan chan *protoevents } } } + +func (e *Engine) donTimeRequestTimeout(ctx context.Context, limiter limits.TimeLimiter) time.Duration { + defaultTimeout := cresettings.Default.PerWorkflow.DONTime.RequestTimeout.DefaultValue + if limiter != nil { + limit, err := limiter.Limit(ctx) + if err != nil { + e.logger().Errorw("Failed to get DON time request timeout", "err", err) + return defaultTimeout + } + if limit <= 0 { + e.logger().Warnw("DON time request timeout is less than or equal to 0, using default timeout", "defaultTimeout", defaultTimeout) + return defaultTimeout + } + return limit + } + return defaultTimeout +} diff --git a/core/services/workflows/v2/time_provider.go b/core/services/workflows/v2/time_provider.go index 0743ce1b9b6..cbf7666db90 100644 --- a/core/services/workflows/v2/time_provider.go +++ b/core/services/workflows/v2/time_provider.go @@ -1,10 +1,14 @@ package v2 import ( + "context" + "fmt" "time" "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/workflows/dontime" + + "github.com/smartcontractkit/chainlink/v2/core/services/workflows/monitoring" ) type TimeProvider interface { @@ -18,15 +22,25 @@ type DonTimeProvider struct { workflowExecutionID string timeSeqNum int donTimeStore *dontime.Store + requestTimeout time.Duration lggr logger.Logger + metrics *monitoring.WorkflowsMetricLabeler } -func NewDonTimeProvider(store *dontime.Store, workflowExecutionID string, lggr logger.Logger) TimeProvider { +func NewDonTimeProvider( + store *dontime.Store, + workflowExecutionID string, + requestTimeout time.Duration, + lggr logger.Logger, + metrics *monitoring.WorkflowsMetricLabeler, +) TimeProvider { return &DonTimeProvider{ workflowExecutionID: workflowExecutionID, timeSeqNum: 0, donTimeStore: store, + requestTimeout: requestTimeout, lggr: logger.Named(lggr, "TimeProvider"), + metrics: metrics, } } @@ -40,7 +54,29 @@ func (tp *DonTimeProvider) GetDONTime() (time.Time, error) { tp.timeSeqNum++ }() - donTimeResp := <-tp.donTimeStore.RequestDonTime(tp.workflowExecutionID, tp.timeSeqNum) + tp.recordDonTimeCall() + + ch := tp.donTimeStore.RequestDonTime(tp.workflowExecutionID, tp.timeSeqNum) + timer := time.NewTimer(tp.requestTimeout) + defer timer.Stop() + + select { + case donTimeResp := <-ch: + return tp.donTimeFromResponse(donTimeResp) + case <-timer.C: + tp.donTimeStore.RemoveRequest(tp.workflowExecutionID) + tp.recordDonTimeTimeout() + return tp.donTimeFromResponse(dontime.Response{ + WorkflowExecutionID: tp.workflowExecutionID, + SeqNum: tp.timeSeqNum, + Err: fmt.Errorf( + "timeout exceeded: could not process request before expiry, workflowExecutionID %s", + tp.workflowExecutionID), + }) + } +} + +func (tp *DonTimeProvider) donTimeFromResponse(donTimeResp dontime.Response) (time.Time, error) { if donTimeResp.Err != nil { // This node's request timed out, so it did not include the request in its observation. // However, consensus may still have been reached if other nodes included the request. @@ -48,6 +84,7 @@ func (tp *DonTimeProvider) GetDONTime() (time.Time, error) { // Consensus was reached; return the DON time generated by the network. return fromUnixMilli(*donTime), nil } + tp.recordDonTimeError() tp.lggr.Errorf("No DON time reached for time call sequence %d on executionID %s; returning local node time as fallback. "+ "This may result in non-deterministic behavior across nodes for this workflow step", tp.timeSeqNum, tp.workflowExecutionID) return tp.GetNodeTime(), nil @@ -55,6 +92,27 @@ func (tp *DonTimeProvider) GetDONTime() (time.Time, error) { return fromUnixMilli(donTimeResp.Timestamp), nil } +func (tp *DonTimeProvider) recordDonTimeCall() { + if tp.metrics == nil { + return + } + tp.metrics.IncrementDonTimeCallsCounter(context.Background()) +} + +func (tp *DonTimeProvider) recordDonTimeTimeout() { + if tp.metrics == nil { + return + } + tp.metrics.IncrementDonTimeTimeoutsCounter(context.Background()) +} + +func (tp *DonTimeProvider) recordDonTimeError() { + if tp.metrics == nil { + return + } + tp.metrics.IncrementDonTimeErrorsCounter(context.Background()) +} + func fromUnixMilli(ms int64) time.Time { return time.Unix(0, ms*int64(time.Millisecond)).UTC() } diff --git a/core/services/workflows/v2/time_provider_test.go b/core/services/workflows/v2/time_provider_test.go new file mode 100644 index 00000000000..c1dcf4b1179 --- /dev/null +++ b/core/services/workflows/v2/time_provider_test.go @@ -0,0 +1,35 @@ +package v2 + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/smartcontractkit/chainlink-common/pkg/workflows/dontime" + + "github.com/smartcontractkit/chainlink/v2/core/logger" +) + +func TestDonTimeProvider_GetDONTime_requestTimeout(t *testing.T) { + t.Parallel() + + store := dontime.NewStore(dontime.DefaultRequestTimeout) + provider := NewDonTimeProvider(store, "exec-id", 50*time.Millisecond, logger.TestLogger(t), nil) + + start := time.Now() + _, err := provider.GetDONTime() + elapsed := time.Since(start) + + require.NoError(t, err) + require.GreaterOrEqual(t, elapsed, 50*time.Millisecond) + require.Less(t, elapsed, 200*time.Millisecond) + + // A timed-out request must not block subsequent sequence numbers. + start = time.Now() + _, err = provider.GetDONTime() + elapsed = time.Since(start) + require.NoError(t, err) + require.GreaterOrEqual(t, elapsed, 50*time.Millisecond) + require.Less(t, elapsed, 200*time.Millisecond) +} diff --git a/deployment/go.mod b/deployment/go.mod index ca704b44d50..5ad4983ac01 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -42,7 +42,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260415165642-49f23e4d76cc github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260511195239-0f6e1b177fc7 github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260618155522-3600f66e26cd - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-common/keystore v1.2.0 github.com/smartcontractkit/chainlink-data-streams v0.1.15-0.20260522094612-5f9f748bd87a github.com/smartcontractkit/chainlink-deployments-framework v0.105.0 diff --git a/deployment/go.sum b/deployment/go.sum index f56e76ecd1f..7539256e40b 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1380,8 +1380,8 @@ github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260616151800-9a3a31c4e194 h1:QxZkbKtQyPtVLYP4eMwc+VbXY7M5ve1deSiLZ2pOA+Y= github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260616151800-9a3a31c4e194/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto= diff --git a/go.mod b/go.mod index d9322e15d4b..287e226531e 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260415165642-49f23e4d76cc github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260415165642-49f23e4d76cc github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-common/keystore v1.2.0 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 github.com/smartcontractkit/chainlink-data-streams v0.1.15-0.20260522094612-5f9f748bd87a diff --git a/go.sum b/go.sum index 1bc875e96c1..9ea33e8fa3c 100644 --- a/go.sum +++ b/go.sum @@ -1165,8 +1165,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260415165642-49f23e4d76cc/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h1:WjZwKtUA/0TPvzgCt8bcdq+BHMIL65S0oU79mxgZn/Y= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index ed8fed7f56d..6833f4d6523 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -29,7 +29,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/evm v0.0.0-20260618155522-3600f66e26cd github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260506144252-c100eabfda74 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260511195239-0f6e1b177fc7 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-common/keystore v1.2.0 github.com/smartcontractkit/chainlink-deployments-framework v0.105.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260618132327-105433c1ac66 diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 1243556ed4f..b42d433137e 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1365,8 +1365,8 @@ github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260616151800-9a3a31c4e194 h1:QxZkbKtQyPtVLYP4eMwc+VbXY7M5ve1deSiLZ2pOA+Y= github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260616151800-9a3a31c4e194/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 689cc28ae5e..4fee0366a32 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -20,7 +20,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/evm v0.0.0-20260618155522-3600f66e26cd github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260506144252-c100eabfda74 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260511195239-0f6e1b177fc7 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-deployments-framework v0.105.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260618132327-105433c1ac66 github.com/smartcontractkit/chainlink-testing-framework/framework v0.16.1 diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 5eb00ea569f..1bb43063fd4 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1631,8 +1631,8 @@ github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260616151800-9a3a31c4e194 h1:QxZkbKtQyPtVLYP4eMwc+VbXY7M5ve1deSiLZ2pOA+Y= github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260616151800-9a3a31c4e194/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto= diff --git a/system-tests/lib/go.mod b/system-tests/lib/go.mod index e54f636f23c..a05b9630add 100644 --- a/system-tests/lib/go.mod +++ b/system-tests/lib/go.mod @@ -33,7 +33,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.103 github.com/smartcontractkit/chainlink-aptos v0.0.0-20260609211101-71d38bd6a0a9 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260415165642-49f23e4d76cc - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-common/keystore v1.2.0 github.com/smartcontractkit/chainlink-deployments-framework v0.105.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260618132327-105433c1ac66 diff --git a/system-tests/lib/go.sum b/system-tests/lib/go.sum index 64e6cbb6a5c..9556b3b1d7a 100644 --- a/system-tests/lib/go.sum +++ b/system-tests/lib/go.sum @@ -1538,8 +1538,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260511195239-0f6e1b177fc7/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h1:WjZwKtUA/0TPvzgCt8bcdq+BHMIL65S0oU79mxgZn/Y= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto= diff --git a/system-tests/tests/go.mod b/system-tests/tests/go.mod index b3aacbde8a6..8f6fb719b0e 100644 --- a/system-tests/tests/go.mod +++ b/system-tests/tests/go.mod @@ -58,7 +58,7 @@ require ( github.com/rs/zerolog v1.34.0 github.com/smartcontractkit/chain-selectors v1.0.103 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260415165642-49f23e4d76cc - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e github.com/smartcontractkit/chainlink-common/keystore v1.2.0 github.com/smartcontractkit/chainlink-deployments-framework v0.105.0 github.com/smartcontractkit/chainlink-evm/contracts/cre/gobindings v0.0.0-20260403151002-2c91155b5501 diff --git a/system-tests/tests/go.sum b/system-tests/tests/go.sum index e1d4681656f..b40fcac163b 100644 --- a/system-tests/tests/go.sum +++ b/system-tests/tests/go.sum @@ -1552,8 +1552,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260511195239-0f6e1b177fc7/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033 h1:WjZwKtUA/0TPvzgCt8bcdq+BHMIL65S0oU79mxgZn/Y= github.com/smartcontractkit/chainlink-ccv v0.0.2-0.20260622154332-695181f87033/go.mod h1:15M0qBycFN5jkNjaYFkutYkGAmhuT401IfaJvz32lcg= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650 h1:QZkJ/gh/XSiNnLCBGF2+vpIgI6yxOaYROReCbkjeuyM= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260622160845-86b9f94f3650/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e h1:i42B2D1WjvQTOQANC7vawOx3xVCbLWSueDwXWOzMqNM= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260623132104-b6e18bcd479e/go.mod h1:paOB/6dy57owHtOGzhgaRBWRDT5BEWfnJF5M7sgkcro= github.com/smartcontractkit/chainlink-common/keystore v1.2.0 h1:1BH/b14CkGjArfzznlioQpIJiynECWVT48JUP9E277U= github.com/smartcontractkit/chainlink-common/keystore v1.2.0/go.mod h1:9R/74vN+bJ5PbkOyM/pUy/AeAZaRwYb/k4XPeXcbDio= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260601211238-9f526774fef0 h1:NExKM/D0HneOq/N5LGTbkV4VOa0UHCvfTNEb4GqYpto=