Skip to content

Cap chip-ingress batch buffer at 1 GiB live bytes#2240

Draft
pkcll wants to merge 1 commit into
mainfrom
chipingress-buffer-byte-cap
Draft

Cap chip-ingress batch buffer at 1 GiB live bytes#2240
pkcll wants to merge 1 commit into
mainfrom
chipingress-buffer-byte-cap

Conversation

@pkcll

@pkcll pkcll commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a 1 GiB live-byte cap on pkg/chipingress/batch message buffer alongside the existing message-count channel limit
  • Track per-client buffered bytes via proto.Size(CloudEventPb) with chip_ingress.batch.buffer_live_bytes metric
  • Wire ChipIngressMaxMessageBufferBytes through beholder, durableemitter, and LOOP env (CL_CHIP_INGRESS_MAX_MESSAGE_BUFFER_BYTES)
  • Label queue drops with failure_type=buffer_bytes_exceeded vs buffer_full on chip_ingress.events_dropped

Test plan

  • go test -race ./pkg/chipingress/batch/... (from pkg/chipingress module)
  • go test -race ./pkg/beholder/... ./pkg/durableemitter/... ./pkg/loop/...
  • CI green on draft PR

Made with Cursor

Track buffered message bytes alongside the message-count channel cap,
expose buffer_live_bytes metrics, and wire MaxMessageBufferBytes through
beholder, durableemitter, and LOOP env config.
@github-actions

Copy link
Copy Markdown
Contributor

✅ API Diff Results - github.com/smartcontractkit/chainlink-common/pkg/chipingress

✅ Compatible Changes (4)

batch (4)
  • DefaultMaxMessageBufferBytes — ➕ Added

  • ErrMessageBufferBytesExceeded — ➕ Added

  • ErrMessageBufferFull — ➕ Added

  • WithMaxMessageBufferBytes — ➕ Added


📄 View full apidiff report

@github-actions

Copy link
Copy Markdown
Contributor

✅ API Diff Results - github.com/smartcontractkit/chainlink-common

✅ Compatible Changes (4)

pkg/beholder.Config (1)
  • ChipIngressMaxMessageBufferBytes — ➕ Added
pkg/beholder.writerClientConfig (1)
  • ChipIngressMaxMessageBufferBytes — ➕ Added
pkg/durableemitter.SetupConfig (1)
  • MaxMessageBufferBytes — ➕ Added
pkg/loop.EnvConfig (1)
  • ChipIngressMaxMessageBufferBytes — ➕ Added

📄 View full apidiff report

Comment thread pkg/loop/config.go
if parseErr != nil {
return fmt.Errorf("failed to parse %s: %w", envChipIngressMaxMessageBufferBytes, parseErr)
}
e.ChipIngressMaxMessageBufferBytes = uint(n)
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.

2 participants