Skip to content

[FLINK-39152][pipeline-connector][Fluss]Fix FlussConfig Utils class is not in the correct directory and not have a private instance#4285

Closed
ThorneANN wants to merge 16 commits into
apache:masterfrom
ThorneANN:FLINK-39152--FlussConfigUtil-should-in-right-place
Closed

[FLINK-39152][pipeline-connector][Fluss]Fix FlussConfig Utils class is not in the correct directory and not have a private instance#4285
ThorneANN wants to merge 16 commits into
apache:masterfrom
ThorneANN:FLINK-39152--FlussConfigUtil-should-in-right-place

Conversation

@ThorneANN
Copy link
Copy Markdown
Contributor

Fix FlussConfig Utils class is not in the correct directory and does not have a private instance

@ThorneANN ThorneANN changed the title Fix FlussConfig Utils class is not in the correct directory and does … [FLINK-39152][pipeline-connector][Fluss]Fix FlussConfig Utils class is not in the correct directory and does … Feb 25, 2026
@ThorneANN ThorneANN changed the title [FLINK-39152][pipeline-connector][Fluss]Fix FlussConfig Utils class is not in the correct directory and does … [FLINK-39152][pipeline-connector][Fluss]Fix FlussConfig Utils class is not in the correct directory and not have a private instance Feb 25, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two issues in the FlussConfigUtils utility class:

  1. The class was located in the wrong package (sink) — it is moved to the correct utils package.
  2. The class was missing a private no-arg constructor to prevent instantiation (a standard practice for utility classes).

Changes:

  • FlussConfigUtils.java: Corrected package declaration from fluss.sink to fluss.utils, added a private constructor to prevent instantiation, and updated error messages in parseBucketNumber.
  • FlussDataSinkFactory.java: Updated static imports to reference FlussConfigUtils from its new utils package.
  • FlussDataSinkFactoryTest.java: Updated the expected error message in the test to match the new wording in FlussConfigUtils.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
FlussConfigUtils.java Moved to utils package, added private constructor, updated error messages
FlussDataSinkFactory.java Updated imports to reference new package location of FlussConfigUtils
FlussDataSinkFactoryTest.java Updated assertion to match new error message text
Comments suppressed due to low confidence (1)

flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-fluss/src/main/java/org/apache/flink/cdc/connectors/fluss/utils/FlussConfigUtils.java:73

  • The error messages "Invalid bucket number configuration for : " contain an extraneous space before the colon (i.e., for : instead of for:). This results in a grammatically incorrect and awkward message shown to users. The message should read "Invalid bucket number configuration for: " (no space before the colon). This same issue appears in both the kv.length != 2 branch and the NumberFormatException catch block. The test assertion in FlussDataSinkFactoryTest.java was updated to match this incorrect phrasing, so the test would need to be updated too when fixing this.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ThorneANN
Copy link
Copy Markdown
Contributor Author

ci failure because of the kafka timeout。

ThorneANN and others added 12 commits March 6, 2026 16:27
…db,postgres,oracle connectors (apache#4247)

Co-authored-by: Thorne <syyfffy@email>
Co-authored-by: Thorne <syyfffy@163.com>
…t in a local variable to avoid calling the method twice per iteration: (apache#4288)

Co-authored-by: Thorne <syyfffy@163.com>
…partition and bucket. (apache#4298)

Signed-off-by: Pei Yu <125331682@qq.com>
…pache#4278)

When a table is excluded from configuration after a restart from savepoint,
the MySQL CDC source could get stuck in the INITIAL_ASSIGNING state. This
happened because table exclusion cleanup was only performed when
isAssigningFinished() was true, but the assigner couldn't finish because
excluded table splits were never reported as finished.

The fix separates two concerns in captureNewlyAddedTables():
- Adding new tables: should only happen when isAssigningFinished()
- Removing excluded tables: must happen regardless of assigner status

Added integration test TableExclusionDuringSnapshotIT that reproduces the
issue by using a blocking hook to take a savepoint during INITIAL_ASSIGNING
phase, then restarting with a table excluded from configuration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment