Skip to content

kafka: decouple batch size from Kafka message size limit - #5420

Merged
ti-chi-bot[bot] merged 25 commits into
pingcap:masterfrom
3AceShowHand:kafka-decouple-max-message-bytes
Jul 23, 2026
Merged

kafka: decouple batch size from Kafka message size limit#5420
ti-chi-bot[bot] merged 25 commits into
pingcap:masterfrom
3AceShowHand:kafka-decouple-max-message-bytes

Conversation

@3AceShowHand

@3AceShowHand 3AceShowHand commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

What problem does this PR solve?

Issue Number: close #1405

Kafka sink currently uses the changefeed max-message-bytes setting for two different purposes:

  • deciding when TiCDC should split a batch of row events;
  • limiting the final Kafka message and deciding when to invoke large-message-handle.

This means TiCDC can reject a message even when Kafka can accept it. For example, if the changefeed has max-message-bytes=10 MiB, the Kafka topic allows 20 MiB, and one encoded row event is 12 MiB, TiCDC still returns ErrMessageTooLarge or invokes large-message-handle. Operators must then pause the changefeed and update its configuration in addition to updating Kafka.

Whether a message is too large should be determined by Kafka's message-size limit. The changefeed setting should only control TiCDC's batching behavior.

What is changed and how it works?

This PR separates the Kafka message limit from the TiCDC batch threshold. Define:

  • T: the changefeed max-message-bytes setting;
  • K: the Kafka topic max.message.bytes for an existing topic, or the broker message.max.bytes for a topic that does not exist yet;
  • producer message limit: K;
  • batch threshold: min(T, K).

The implementation:

  • preserves T as MaxBatchedBytes before reading Kafka metadata;
  • updates MaxMessageBytes to K and uses it for both the producer and the codec's final message-size check;
  • passes both limits to codec configuration;
  • uses MaxBatchedBytes only when deciding whether to add another row to the current batch;
  • invokes large-message-handle only when the original encoded message exceeds MaxMessageBytes (K), and performs a final size check after handling;
  • falls back to the configured T as the producer limit if the Kafka topic or broker size configuration cannot be read.

As a result:

  • a single message larger than T but not larger than K is sent directly;
  • multiple rows are still split according to min(T, K);
  • a message larger than K invokes the configured large-message-handle, or returns ErrMessageTooLarge when it still cannot fit;
  • after the Kafka size limit is increased, a restarted Kafka sink reads the new limit and can recover without changing the changefeed max-message-bytes setting.

This PR does not introduce a separate model for Sarama's request-size limit or cap K using sarama.MaxRequestSize. Sarama request sizing remains outside the scope of this change.

Non-Kafka sinks pass the same value for the final message limit and batch threshold, preserving their existing behavior.

Check List

Tests

  • Unit test
    • Kafka topic and broker limits are propagated to the producer and codec configuration.
    • The batch threshold remains min(T, K).
    • Open Protocol splits batches at the batch threshold while allowing one row larger than that threshold when it is within the final message limit.
    • Open Protocol, Canal JSON, and Simple Protocol enforce the final message limit and large-message handling boundary.
  • Integration test
    • kafka_big_messages covers Canal JSON, Open Protocol, Simple JSON, Simple Avro, and Avro.
    • Each case first sends a message larger than Kafka's current topic limit and verifies ErrMessageTooLarge.
    • The test then only increases the topic max.message.bytes, without updating, pausing, or manually resuming the changefeed, and verifies that synchronization automatically recovers and passes sync-diff.
    • Existing claim-check and handle-key-only cases explicitly configure the Kafka topic limit so they continue to exercise the large-message handler.

Questions

Will it cause performance regression or break compatibility?

No performance regression or compatibility break is expected.

The batching behavior of max-message-bytes is preserved. This PR fixes the previous conflation of the batch threshold and Kafka's actual message-size limit: when T < message size <= K, Kafka can accept the message, so TiCDC sends it instead of incorrectly returning ErrMessageTooLarge or invoking large-message-handle. If K < T, the batch threshold is reduced to K so TiCDC does not intentionally build an unsendable batch.

Do you need to update user documentation, design documentation or monitoring documentation?

Yes. User documentation should clarify that max-message-bytes controls Kafka batching, while Kafka topic or broker configuration controls the final message limit. No monitoring update is required.

Release note

Decouple the Kafka sink batch threshold from Kafka's message-size limit, so increasing the Kafka topic or broker limit can unblock a large row event without changing the TiCDC changefeed configuration.

@ti-chi-bot ti-chi-bot Bot added the release-note Denotes a PR that will be considered when it comes time to generate release notes. label Jun 16, 2026
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This change separates per-message and batch message limits in codec configuration, Kafka options, sink encoder wiring, and protocol encoders. Kafka derives limits from topic or broker settings, while Open, Simple, and Canal encoders apply distinct batching and oversized-message checks.

Changes

Separate message and batch limits

Layer / File(s) Summary
Codec limit contract
pkg/sink/codec/common/config.go, pkg/sink/codec/common/config_test.go
Adds MaxBatchedBytes, its setter, defaults, validation, and invalid-limit coverage.
Kafka limit derivation
pkg/sink/kafka/options.go, pkg/sink/kafka/sarama_config.go, pkg/sink/kafka/sarama_factory.go
Tracks separate limits, derives producer limits from Kafka topic or broker settings, synchronizes effective limits, updates error handling, and disables count-based Sarama flushing.
Kafka limit validation tests
pkg/sink/kafka/options_test.go
Validates topic/broker limit scenarios, batch-limit derivation, encoder configuration, option merging, and updated call signatures.
Sink encoder wiring
downstreamadapter/sink/helper/helper.go, downstreamadapter/sink/{kafka,pulsar,cloudstorage}/*
Passes separate message and batch limits through encoder configuration callers and test helpers.
Encoder size enforcement
pkg/sink/codec/{open,simple,canal}/*
Uses the batch limit for batching and applies per-message overflow checks after large-message handling.
Encoder limit tests
pkg/sink/codec/{open,simple,canal}/*_test.go
Adds coverage for events exceeding the batch limit while remaining within the message limit.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant KafkaOptions
  participant SinkHelper
  participant CodecConfig
  participant Encoder
  KafkaOptions->>KafkaOptions: derive message and batch limits
  KafkaOptions->>SinkHelper: pass both limits
  SinkHelper->>CodecConfig: configure MaxMessageBytes and MaxBatchedBytes
  CodecConfig->>Encoder: provide effective limits
  Encoder->>Encoder: batch by batch limit and enforce message limit
Loading

Possibly related PRs

Suggested labels: lgtm, approved

Suggested reviewers: wk989898, tenfyzhong

Poem

I’m a rabbit with limits in tow,
One for the batch, one row-by-row.
Kafka counts, encoders agree,
Oversized hops stop carefully.
Tests bloom where new rules grow.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The changes separate batch splitting from rejection limits and derive the hard limit from Kafka config, satisfying #1405.
Out of Scope Changes check ✅ Passed Most changes support the Kafka size-limit split, and no clearly unrelated code changes stand out.
Title check ✅ Passed The title clearly summarizes the main change: separating Kafka batch size from the Kafka message size limit.
Description check ✅ Passed The description matches the template well, including issue number, problem, changes, tests, questions, and a release note.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ti-chi-bot ti-chi-bot Bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Jun 16, 2026
@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request decouples the final encoded message size limit (MaxMessageBytes) from the batch splitting and large-message threshold (MaxBatchMessageBytes) across various TiCDC sinks and codecs (including Kafka, Pulsar, Cloud Storage, Avro, Canal JSON, Open Protocol, and Simple). This allows for more granular control over message batching and limits. The feedback suggests simplifying duplicate validation logic in the simple encoder and adding configuration validation to ensure MaxBatchMessageBytes does not exceed MaxMessageBytes.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread pkg/sink/codec/simple/encoder.go Outdated
Comment thread pkg/sink/codec/common/config.go Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/sink/codec/simple/encoder_test.go`:
- Around line 1595-1611: The TestDMLLargerThanBatchLimit test sets
MaxBatchMessageBytes to 50 but never verifies that the actual encoded message
payload exceeds this threshold, making the test non-deterministic and unable to
guarantee it exercises the intended code path. After calling enc.Build() to
obtain the messages, add an assertion that explicitly checks the payload size of
messages[0] is greater than the MaxBatchMessageBytes limit to ensure the test
fixture is sufficiently large and the behavior remains deterministic.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5d97615e-8665-4e5f-9988-6942075570a7

📥 Commits

Reviewing files that changed from the base of the PR and between aa0083b and 56e5b48.

📒 Files selected for processing (18)
  • downstreamadapter/sink/cloudstorage/encoder_group_test.go
  • downstreamadapter/sink/cloudstorage/sink.go
  • downstreamadapter/sink/helper/helper.go
  • downstreamadapter/sink/kafka/helper.go
  • downstreamadapter/sink/kafka/sink_test.go
  • downstreamadapter/sink/pulsar/helper.go
  • pkg/sink/codec/avro/encoder.go
  • pkg/sink/codec/canal/canal_json_encoder.go
  • pkg/sink/codec/canal/canal_json_encoder_test.go
  • pkg/sink/codec/canal/canal_json_txn_encoder.go
  • pkg/sink/codec/common/config.go
  • pkg/sink/codec/open/encoder.go
  • pkg/sink/codec/open/encoder_test.go
  • pkg/sink/codec/simple/encoder.go
  • pkg/sink/codec/simple/encoder_test.go
  • pkg/sink/kafka/options.go
  • pkg/sink/kafka/options_test.go
  • pkg/sink/kafka/sarama_config.go

Comment thread pkg/sink/codec/simple/encoder_test.go Outdated
@ti-chi-bot ti-chi-bot Bot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Jun 17, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
downstreamadapter/sink/kafka/sink.go (1)

90-110: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Reorder GetEncoderConfig after NewSaramaFactory to ensure accurate validation.

In newKafkaSinkComponent, GetEncoderConfig is instantiated after kafka.NewSaramaFactory. In Verify, it is instantiated beforehand. Since the PR introduces logic that derives producer limits based on Kafka broker/topic configurations, any mutation to options.MaxMessageBytes during NewSaramaFactory will not be reflected in Verify's encoderConfig. This could cause Verify to bypass limit validation checks (e.g., if the user-configured batch limit exceeds the derived producer limit) and return false positives.

Aligning the order with newKafkaSinkComponent resolves this.

💡 Proposed reordering
-	encoderConfig, err := helper.GetEncoderConfig(
-		changefeedID, uri, protocol, sinkConfig,
-		options.MaxMessageBytes, options.MaxBatchedBytes,
-	)
-	if err != nil {
-		return errors.Trace(err)
-	}
-
 	isAvroLike := protocol == config.ProtocolAvro || protocol == config.ProtocolDebeziumAvro
 	if _, err = eventrouter.NewEventRouter(sinkConfig, topic, false, isAvroLike); err != nil {
 		return errors.Trace(err)
 	}
 
 	if _, err = columnselector.New(sinkConfig); err != nil {
 		return errors.Trace(err)
 	}
 
 	factory, err := kafka.NewSaramaFactory(ctx, options, changefeedID)
 	if err != nil {
 		return errors.WrapError(errors.ErrKafkaNewProducer, err)
 	}
+
+	encoderConfig, err := helper.GetEncoderConfig(
+		changefeedID, uri, protocol, sinkConfig,
+		options.MaxMessageBytes, options.MaxBatchedBytes,
+	)
+	if err != nil {
+		return errors.Trace(err)
+	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@downstreamadapter/sink/kafka/sink.go` around lines 90 - 110, In Verify, move
the GetEncoderConfig call to execute after kafka.NewSaramaFactory so it uses any
producer-limit mutations applied during factory creation. Keep the existing
encoder-config error handling and subsequent validation unchanged, ensuring
derived Kafka limits are reflected before validation.
🧹 Nitpick comments (1)
pkg/sink/codec/simple/encoder.go (1)

153-162: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove DDL message size check for consistency.

The size check against MaxMessageBytes for DDL and Checkpoint events was intentionally removed in the Open and Canal JSON encoders to let Kafka enforce the producer limit. It was also removed from this file's EncodeCheckpointEvent but was left behind here in EncodeDDLEvent.

Please consider removing it to keep the encoder behaviors consistent.

♻️ Proposed fix
 	result := common.NewMsg(nil, value)
 
-	if result.Length() > e.config.MaxMessageBytes {
-		log.Error("DDL message is too large for simple",
-			zap.Int("maxMessageBytes", e.config.MaxMessageBytes),
-			zap.Int("length", result.Length()),
-			zap.String("table", event.GetTargetTableName()))
-		return nil, errors.ErrMessageTooLarge.GenWithStackByArgs(event.GetTargetTableName(), result.Length(), e.config.MaxMessageBytes)
-	}
 	return result, nil
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/sink/codec/simple/encoder.go` around lines 153 - 162, Remove the
MaxMessageBytes length validation, oversized-message logging, and
ErrMessageTooLarge return from EncodeDDLEvent so DDL messages are returned
directly like checkpoint events and the other encoders.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@downstreamadapter/sink/kafka/sink.go`:
- Around line 90-110: In Verify, move the GetEncoderConfig call to execute after
kafka.NewSaramaFactory so it uses any producer-limit mutations applied during
factory creation. Keep the existing encoder-config error handling and subsequent
validation unchanged, ensuring derived Kafka limits are reflected before
validation.

---

Nitpick comments:
In `@pkg/sink/codec/simple/encoder.go`:
- Around line 153-162: Remove the MaxMessageBytes length validation,
oversized-message logging, and ErrMessageTooLarge return from EncodeDDLEvent so
DDL messages are returned directly like checkpoint events and the other
encoders.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ac9d7ebc-bff8-4135-9171-80ff09c6b3a1

📥 Commits

Reviewing files that changed from the base of the PR and between fe38b71 and 3018963.

📒 Files selected for processing (9)
  • downstreamadapter/sink/cloudstorage/sink.go
  • downstreamadapter/sink/kafka/helper.go
  • downstreamadapter/sink/kafka/sink.go
  • downstreamadapter/sink/kafka/sink_test.go
  • pkg/sink/codec/canal/canal_json_encoder.go
  • pkg/sink/codec/open/encoder.go
  • pkg/sink/codec/simple/encoder.go
  • pkg/sink/kafka/options.go
  • pkg/sink/kafka/options_test.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • downstreamadapter/sink/kafka/sink_test.go
  • downstreamadapter/sink/cloudstorage/sink.go
  • pkg/sink/kafka/options_test.go
  • pkg/sink/kafka/options.go

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
pkg/sink/kafka/options_test.go (1)

411-412: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Initialize MaxBatchedBytes to prevent test failure.

This subtest manually sets options.MaxMessageBytes but forgets to set options.MaxBatchedBytes. As a result, options.MaxBatchedBytes retains its default value of 10MB. Consequently, adjustTopicOptions sets it to min(10MB, expectedProducerLimit), which breaks the downstream assertion at line 428 expecting min(configuredMaxMessageBytes, expectedProducerLimit).

To fix the test and accurately simulate the options.Apply step, initialize MaxBatchedBytes here as well.

🐛 Proposed fix for test setup
 			configuredMaxMessageBytes := test.configuredMaxMessageBytes(adminFixture)
 			options.MaxMessageBytes = configuredMaxMessageBytes
+			options.MaxBatchedBytes = configuredMaxMessageBytes
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/sink/kafka/options_test.go` around lines 411 - 412, Update the test setup
around configuredMaxMessageBytes in the relevant options subtest to initialize
options.MaxBatchedBytes to the same configured value as options.MaxMessageBytes,
matching the options.Apply behavior and preserving the downstream expected limit
assertion.
pkg/sink/codec/common/config.go (1)

219-221: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Synchronize MaxBatchedBytes when MaxMessageBytes is parsed from the URI.

If MaxMessageBytes is configured via the URL, it must also be copied to MaxBatchedBytes (just as it is in options.go's Apply). Without this synchronization, any downstream usage that calls Apply and sets MaxMessageBytes to a value smaller than the default 10MB will fail Validate() because MaxBatchedBytes would remain 10MB.

🐛 Proposed fix to sync batch limit
 	if urlParameter.MaxMessageBytes != nil {
 		c.MaxMessageBytes = *urlParameter.MaxMessageBytes
+		c.MaxBatchedBytes = *urlParameter.MaxMessageBytes
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/sink/codec/common/config.go` around lines 219 - 221, Update the URI
parsing block handling urlParameter.MaxMessageBytes in the configuration code to
also assign the parsed value to c.MaxBatchedBytes. Keep both limits
synchronized, matching the existing behavior in options.go’s Apply method, while
preserving the current assignment to c.MaxMessageBytes.
🧹 Nitpick comments (1)
pkg/sink/codec/common/config.go (1)

474-478: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider enforcing MaxBatchedBytes <= 0.

For consistency with the MaxMessageBytes <= 0 validation on line 469 and to prevent a 0 value which would disable batch limits entirely (or cause infinite splitting depending on codec logic), consider using <= 0 here as well.

♻️ Proposed refactor
-	if c.MaxBatchedBytes < 0 {
+	if c.MaxBatchedBytes <= 0 {
 		return errors.ErrCodecInvalidConfig.Wrap(
 			errors.Errorf("invalid max-batch-message-bytes %d", c.MaxBatchedBytes),
 		)
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/sink/codec/common/config.go` around lines 474 - 478, Update the
MaxBatchedBytes validation in the codec configuration validation flow to reject
zero as well as negative values by changing the boundary check to <= 0. Preserve
the existing ErrCodecInvalidConfig wrapping and error message behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/sink/codec/open/encoder.go`:
- Line 176: Update the batching condition in the encoder flow to access
d.config.MaxBatchedBytes as a field rather than invoking it as a method.
Preserve the existing message-length and row-count checks unchanged.

In `@pkg/sink/kafka/options_test.go`:
- Around line 736-740: Update the MaxBatchedBytes references in the test
assertion and the encoder logic to access it as an int field rather than
invoking it as a method. Remove the parentheses from both usages in
options_test.go and the relevant code in the encoder implementation.

---

Outside diff comments:
In `@pkg/sink/codec/common/config.go`:
- Around line 219-221: Update the URI parsing block handling
urlParameter.MaxMessageBytes in the configuration code to also assign the parsed
value to c.MaxBatchedBytes. Keep both limits synchronized, matching the existing
behavior in options.go’s Apply method, while preserving the current assignment
to c.MaxMessageBytes.

In `@pkg/sink/kafka/options_test.go`:
- Around line 411-412: Update the test setup around configuredMaxMessageBytes in
the relevant options subtest to initialize options.MaxBatchedBytes to the same
configured value as options.MaxMessageBytes, matching the options.Apply behavior
and preserving the downstream expected limit assertion.

---

Nitpick comments:
In `@pkg/sink/codec/common/config.go`:
- Around line 474-478: Update the MaxBatchedBytes validation in the codec
configuration validation flow to reject zero as well as negative values by
changing the boundary check to <= 0. Preserve the existing ErrCodecInvalidConfig
wrapping and error message behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 27d9b88f-2c1a-4d21-aaf4-57934a15a725

📥 Commits

Reviewing files that changed from the base of the PR and between 3018963 and d9cef9e.

📒 Files selected for processing (11)
  • downstreamadapter/sink/helper/helper.go
  • downstreamadapter/sink/kafka/sink.go
  • pkg/sink/codec/canal/canal_json_encoder_test.go
  • pkg/sink/codec/common/config.go
  • pkg/sink/codec/common/config_test.go
  • pkg/sink/codec/open/encoder.go
  • pkg/sink/codec/open/encoder_test.go
  • pkg/sink/codec/simple/encoder_test.go
  • pkg/sink/kafka/options.go
  • pkg/sink/kafka/options_test.go
  • pkg/sink/kafka/sarama_factory.go
🚧 Files skipped from review as they are similar to previous changes (6)
  • downstreamadapter/sink/helper/helper.go
  • pkg/sink/codec/canal/canal_json_encoder_test.go
  • pkg/sink/codec/common/config_test.go
  • pkg/sink/codec/simple/encoder_test.go
  • pkg/sink/codec/open/encoder_test.go
  • downstreamadapter/sink/kafka/sink.go

Comment thread pkg/sink/codec/open/encoder.go Outdated
Comment thread pkg/sink/kafka/options_test.go Outdated
@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

Comment thread pkg/sink/kafka/sarama_config.go
Comment thread pkg/sink/codec/common/config.go
@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test all

@ti-chi-bot ti-chi-bot Bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Jul 23, 2026
@ti-chi-bot ti-chi-bot Bot added the lgtm label Jul 23, 2026
@ti-chi-bot

ti-chi-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: lidezhu, wk989898

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot Bot added approved and removed needs-1-more-lgtm Indicates a PR needs 1 more LGTM. labels Jul 23, 2026
@ti-chi-bot

ti-chi-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

[LGTM Timeline notifier]

Timeline:

  • 2026-07-23 10:27:14.528276422 +0000 UTC m=+1487020.564371488: ☑️ agreed by wk989898.
  • 2026-07-23 10:27:59.492919476 +0000 UTC m=+1487065.529014532: ☑️ agreed by lidezhu.

@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test pull-cdc-kafka-integration-light

1 similar comment
@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/test pull-cdc-kafka-integration-light

@ti-chi-bot
ti-chi-bot Bot merged commit d480b05 into pingcap:master Jul 23, 2026
25 checks passed
@3AceShowHand

Copy link
Copy Markdown
Collaborator Author

/cherry-pick release-8.5

@ti-chi-bot

Copy link
Copy Markdown
Member

@3AceShowHand: new pull request created to branch release-8.5: #5772.
But this PR has conflicts, please resolve them!

Details

In response to this:

/cherry-pick release-8.5

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved lgtm release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Don't raise errors for the events larger than max-message-bytes

4 participants