[FLINK-35104] [pipeline-connector/kafka]support pipeline kafka source - #4518
Open
MOBIN-F wants to merge 7 commits into
Open
[FLINK-35104] [pipeline-connector/kafka]support pipeline kafka source#4518MOBIN-F wants to merge 7 commits into
MOBIN-F wants to merge 7 commits into
Conversation
MOBIN-F
force-pushed
the
release-pipeline-kafka-source
branch
from
August 31, 2026 06:28
485ed33 to
c12b299
Compare
MOBIN-F
commented
Aug 31, 2026
| try { | ||
| long startTimeMillis = System.currentTimeMillis(); | ||
| executeUpdateStatement(alterSql); | ||
| executeAlter(databaseName, tableName, alterSql, timeoutSecond); |
Contributor
Author
There was a problem hiding this comment.
According to the official documentation of Starrocks, modifying column types is asynchronous. You need to wait until Starrocks has completely completed the change before proceeding. Otherwise, an exception will occur.
For example, if changing from int to string, if using executeUpdateStatement, it will return immediately. However, the actual Starrocks table is still of int type, resulting in the failure of inserting string-type data.
MOBIN-F
marked this pull request as ready for review
August 31, 2026 07:00
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.
support pipeline kafka source
Core Point:
1.
processDeferredRequests() primarily addresses the scenario where a SchemaCoordinator is in the middle of executing one round of schema evolution when it receives another SchemaChangeRequest. This is quite common in the scenario of Kafka's multi-partition setup.
This
processDeferredRequests()mainly resolves the issue: when a SchemaCoordinator is executing a round of schema evolution, it receives another SchemaChangeRequest.Typical Scenario
Assume the Schema Operator has a parallelism of 2 and consecutively receives three changes:
CREATE TABLE usersADD COLUMN users.nameADD COLUMN users.emailThe first round of
CREATE TABLEhas collected requests from both subtasks:Coordinator status changed to:
MetadataApplier is executing
CREATE TABLEin an external system. If anADD COLUMN namerequest arrives at this moment, the code cannot process it immediately because:ADD COLUMNmight occur beforeCREATE TABLE.Therefore, the request is placed into a deferred queue:
After the first round is completed, call:
Reassign
ADD COLUMN nameto the state machine to start the next round:2.
Kafka is declared as a parallel metadata source, so it follows a distributed topology. Schema events are broadcast to all SchemaOperators.
However, the following situation may occur, pipelin kafka source ---> paimon:
Suppose the parallelism is 2, and at the same time receive:
CREATE customersCREATE ordersCross-processing may occur:
At this time:
And the
FlushEventAlignmentOperatorrequires that the same source must receive all the reports from BucketAssign. Therefore, both sides will keep waiting.Solution: Add a FlushReplicateOperator before the BucketAssignOperator at the sink end of the Kafka distributed topology, so that the Flush is replicated to all BucketAssign.