Add resource attribute support to ChipIngress client#2216
Draft
pkcll wants to merge 2 commits into
Draft
Conversation
Contributor
✅ API Diff Results -
|
e6eabcc to
fdb6dee
Compare
Contributor
✅ API Diff Results -
|
606a264 to
ada7f9b
Compare
2 tasks
| gopkg.in/yaml.v2 v2.4.0 // indirect | ||
| ) | ||
|
|
||
| replace github.com/smartcontractkit/chainlink-common/pkg/chipingress => ./pkg/chipingress |
Contributor
There was a problem hiding this comment.
any way to avoid the local replace?
Contributor
Author
There was a problem hiding this comment.
For sure, will clean this up.
patrickhuie19
previously approved these changes
Jul 10, 2026
aa6b73c to
d6a531b
Compare
Contributor
|
overall approach lgtm. Adding the CloudEvent extensions as the guaranteed propagation path makes sense, and we're keeping the gRPC header route for observability is reasonable |
2a6fa46 to
3ebb388
Compare
pkcll
added a commit
to smartcontractkit/chainlink
that referenced
this pull request
Jul 13, 2026
Pick up chip-ingress resource attribute propagation from smartcontractkit/chainlink-common#2216. Co-authored-by: Cursor <cursoragent@cursor.com>
Propagate node resource attributes from beholder.Config.ResourceAttributes to the cre topic via gRPC metadata headers and sanitized CloudEvent extensions, matching legacy beholder__platform__messages identification.
3ebb388 to
e7e82a2
Compare
Root module must pin the submodule commit that contains the new chipingress API; required after removing the local replace directive. Co-authored-by: Cursor <cursoragent@cursor.com>
e7e82a2 to
1f79a15
Compare
pkcll
added a commit
to smartcontractkit/chainlink
that referenced
this pull request
Jul 13, 2026
Pick up chip-ingress resource attribute propagation from smartcontractkit/chainlink-common#2216. Co-authored-by: Cursor <cursoragent@cursor.com>
pkcll
added a commit
to smartcontractkit/chainlink
that referenced
this pull request
Jul 13, 2026
Pick up chip-ingress resource attribute propagation from smartcontractkit/chainlink-common#2216. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
beholder.Config.ResourceAttributesto the ChipIngresscretopic via two mechanisms: (1) gRPC metadata headers (chipingress.WithHeaderProvider/NewStaticHeaderProvider), with sanitized keys per grpc-go validation; (2) CloudEvent extensions (chipingress.WithResourceAttributeExtensions) with keys sanitized to^[a-z0-9]+$per the CloudEvents spec, surfacing asce_<name>Kafka headers.ChipIngressEmitterandChipIngressBatchEmitterServiceto stamp resource attributes on every emitted event.pkg/chipingresspseudo-version in rootgo.mod(no localreplacedirective).Related PR
chainlink-commonandpkg/chipingressto this branch. Merge this PR first, then rebase/merge chainlink #23014.Known gaps / follow-ups
baseKafkaHeaderslogic does not appear to forward arbitrary incoming gRPC metadata onto Kafka headers today. The CE-extension mechanism guarantees headers immediately; the gRPC-metadata mechanism is shipped for observability now, with full parity once/if a chip-ingress server-side change forwards it. A follow-up ticket against chip-ingress should track that.pkg/durableemitteris out of scope. It has its ownNewEventcall site and config, and wiring it up would also requirechainlinkcore changes (application.go,shell.go,plugins/loop_registry.go). Events emitted viadurableemitter.GlobalEmit(workflows, capabilities) will not yet carry resource attributes on thecretopic.Test plan
go test ./pkg/chipingress/...andgo test ./pkg/beholder/...passSanitizeExtensionName,WithResourceAttributeExtensions(sanitization, reserved-name skip, deterministic dedup),NewStaticHeaderProvider,resourceAttributesToStringMap, and emitter-level tests assertingce_<sanitized>extensions land on published/batched events