Skip to content

Conversation

@wk989898
Copy link
Collaborator

@wk989898 wk989898 commented Jan 5, 2026

What problem does this PR solve?

Issue Number: close #3888

What is changed and how it works?

It introduces a new API endpoint /api/v2/get_all_tables and updates the corresponding CLI commands to display this information, including a new --verbose flag. However, I've found a critical bug related to variable shadowing in the resume command, an error handling issue in a new API handler, and several instances of code duplication and misleading CLI output that should be addressed.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
    • create changefeed
    bin/cdc cli changefeed create --sink-uri="mysql://root:@127.0.0.1:4000/?dry-run=true" --server="http://127.0.0.1:8300" -v
    Create changefeed successfully!
    ID: 20400428180750124774282197097243365251
    Info: {"upstream_id":7597333829493310528,"id":"20400428180750124774282197097243365251","keyspace":"default","sink_uri":"mysql://root:xxxxx@127.0.0.1:4000/?dry-run=true","create_time":"2026-01-20T06:56:30.521913832Z","start_ts":463704474382237700,"config":{"memory_quota":1073741824,"case_sensitive":false,"ignore_ineligible_table":false,"check_gc_safe_point":true,"enable_sync_point":false,"enable_table_monitor":false,"bdr_mode":false,"sync_point_interval":600000000000,"sync_point_retention":86400000000000,"filter":{"rules":["*.*"]},"mounter":{"worker_num":16},"sink":{"csv":{"delimiter":",","quote":"\"","null":"\\N","include_commit_ts":false,"binary_encoding_method":"base64","output_old_value":false,"output_handle_key":false,"output_field_header":false},"encoder_concurrency":32,"terminator":"\r\n","date_separator":"day","enable_partition_separator":true,"only_output_updated_columns":false,"delete_only_output_handle_key_columns":false,"content_compatible":false,"advance_timeout":150,"send_bootstrap_interval_in_sec":120,"send_bootstrap_in_msg_count":10000,"send_bootstrap_to_all_partition":true,"send-all-bootstrap-at-start":false,"debezium_disable_schema":false,"debezium":{"output_old_value":true},"open":{"output_old_value":true}},"consistent":{"level":"none","max_log_size":64,"flush_interval":2000,"meta_flush_interval":200,"encoding_worker_num":16,"flush_worker_num":8,"storage":"","use_file_backend":false,"compression":"","memory_usage":{"memory_quota_percentage":50}},"scheduler":{"enable_table_across_nodes":false,"region_threshold":10000,"region_count_per_span":100,"region_count_refresh_interval":300000000000,"write_key_threshold":0,"scheduling_task_count_per_node":20,"enable_splittable_check":false,"force_split":false,"balance_score_threshold":20,"min_traffic_percentage":0.8,"max_traffic_percentage":1.25},"integrity":{"integrity_check_level":"none","corruption_handle_level":"warn"},"changefeed_error_stuck_duration":1800000000000,"synced_status":{"synced_check_interval":300,"checkpoint_interval":15}},"state":"normal","creator_version":"v8.5.4-nextgen.202510.5-36-gf4cfe09a","resolved_ts":463704474382237700,"checkpoint_ts":463704474382237700,"checkpoint_time":"2026-01-20 06:56:30.484","gid":{"low":2040042818075012477,"high":4282197097243365251}}
    IneligibleTablesCount: 0
    EligibleTablesCount: 2
    AllTablesCount: 2
    EligibleTables: [test.t2, test.t1]
    IneligibleTables: []
    AllTables: [test.t2, test.t1]
    • update changefeed
    bin/cdc cli changefeed update -c 20400428180750124774282197097243365251 --config cf.toml -v       
    [2026/01/20 06:59:10.425 +00:00] [WARN] [cli_changefeed_update.go:224] ["unsupported flag, please report a bug"] [flagName=verbose]
    Diff of changefeed config:
    {Type:create Path:[Config Filter Rules 1] From:<nil> To:!test.t1}
    Could you agree to apply changes above to changefeed [Y/N]
    y
    Update changefeed config successfully! 
    ID: 20400428180750124774282197097243365251
    Info: {"upstream_id":7597333829493310528,"id":"20400428180750124774282197097243365251","keyspace":"default","sink_uri":"mysql://root:xxxxx@127.0.0.1:4000/?dry-run=true","create_time":"2026-01-20T06:56:30.521913832Z","start_ts":463704474382237700,"config":{"memory_quota":1073741824,"case_sensitive":false,"ignore_ineligible_table":false,"check_gc_safe_point":true,"enable_sync_point":false,"enable_table_monitor":false,"bdr_mode":false,"sync_point_interval":600000000000,"sync_point_retention":86400000000000,"filter":{"rules":["*.*","!test.t1"]},"mounter":{"worker_num":16},"sink":{"csv":{"delimiter":",","quote":"\"","null":"\\N","include_commit_ts":false,"binary_encoding_method":"base64","output_old_value":false,"output_handle_key":false,"output_field_header":false},"encoder_concurrency":32,"terminator":"\r\n","date_separator":"day","enable_partition_separator":true,"only_output_updated_columns":false,"delete_only_output_handle_key_columns":false,"content_compatible":false,"advance_timeout":150,"send_bootstrap_interval_in_sec":120,"send_bootstrap_in_msg_count":10000,"send_bootstrap_to_all_partition":true,"send-all-bootstrap-at-start":false,"debezium_disable_schema":false,"debezium":{"output_old_value":true},"open":{"output_old_value":true}},"consistent":{"level":"none","max_log_size":64,"flush_interval":2000,"meta_flush_interval":200,"encoding_worker_num":16,"flush_worker_num":8,"storage":"","use_file_backend":false,"compression":"","memory_usage":{"memory_quota_percentage":50}},"scheduler":{"enable_table_across_nodes":false,"region_threshold":10000,"region_count_per_span":100,"region_count_refresh_interval":300000000000,"write_key_threshold":0,"scheduling_task_count_per_node":20,"enable_splittable_check":false,"force_split":false,"balance_score_threshold":20,"min_traffic_percentage":0.8,"max_traffic_percentage":1.25},"integrity":{"integrity_check_level":"none","corruption_handle_level":"warn"},"changefeed_error_stuck_duration":1800000000000,"synced_status":{"synced_check_interval":300,"checkpoint_interval":15}},"state":"stopped","creator_version":"v8.5.4-nextgen.202510.5-36-gf4cfe09a","resolved_ts":463704499941277698,"checkpoint_ts":463704499941277698,"checkpoint_time":"2026-01-20 06:58:07.984","gid":{"low":2040042818075012477,"high":4282197097243365251}}
    IneligibleTablesCount: 0
    EligibleTablesCount: 1
    AllTablesCount: 2
    EligibleTables: [test.t2]
    IneligibleTables: []
    AllTables: [test.t2, test.t1]
    • resume changefeed
    bin/cdc cli changefeed resume -c 20400428180750124774282197097243365251 --overwrite-checkpoint-ts 463704499941277698 -v
    You are overwriting the checkpoint of changefeed(20400428180750124774282197097243365251) to 463704499941277698, which may lead to data loss or data duplication.
    Confirm that you know what this command will do and use it at your own risk [Y/N]y
    Resume changefeed successfully! 
    ID: 20400428180750124774282197097243365251
    OverwriteCheckpointTs: true
    IneligibleTablesCount: 0
    EligibleTablesCount: 1
    AllTablesCount: 2
    EligibleTables: [test.t2]
    IneligibleTables: []
    AllTables: [test.t2, test.t1]

Questions

Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?

Release note

add tables info when creating/updating changefeed

@ti-chi-bot ti-chi-bot bot added release-note Denotes a PR that will be considered when it comes time to generate release notes. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jan 5, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @wk989898, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly improves the transparency and user experience when managing changefeeds. It introduces the capability to identify and report tables that are ineligible for replication during both creation and update operations. This is achieved by enhancing the API to return detailed table eligibility information and by integrating a verification and warning system into the CLI, allowing users to make informed decisions about replicating tables without primary keys.

Highlights

  • API Enhancement for Changefeeds: The API for creating and updating changefeeds now includes eligibleTables and ineligibleTables information in its responses and logs, providing more detailed insights into the replication process.
  • CLI Table Verification during Update: The cdc cli changefeed update command now performs a table verification step, warning users about tables that are ineligible for replication (e.g., missing primary keys) and providing an option to ignore them.
  • Improved User Feedback: Both the API and CLI outputs for changefeed creation and update now display counts of eligible and ineligible tables, offering clearer and more immediate feedback to users.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

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

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 adds information about eligible and ineligible tables to the logs and CLI output when creating or updating a changefeed. The changes in the API handlers look good. However, I've found a critical bug in the CLI output where table counts are printed incorrectly. Additionally, there's significant code duplication between the create and update changefeed CLI commands that should be refactored.

return
}

log.Info("Update changefeed successfully!",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please also add cost time in this log.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The LogMiddleware will print the cost time

@ti-chi-bot ti-chi-bot bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jan 12, 2026
@ti-chi-bot ti-chi-bot bot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Jan 12, 2026
@wk989898 wk989898 added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 13, 2026
@ti-chi-bot
Copy link

ti-chi-bot bot commented Jan 13, 2026

@wk989898: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-unit-test-next-gen 89b94e9 link false /test pull-unit-test-next-gen
pull-unit-test 89b94e9 link true /test pull-unit-test

Full PR test history. Your PR dashboard.

Details

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 kubernetes-sigs/prow repository. I understand the commands that are listed here.

@wk989898
Copy link
Collaborator Author

/gemini summary

@gemini-code-assist
Copy link

Summary of Changes

This pull request significantly enhances the user's ability to understand and manage table replication within TiCDC changefeeds. By integrating detailed 'eligibleTables' and 'ineligibleTables' information directly into the API responses and logs, and by exposing this data through a new dedicated API endpoint, users gain clearer insights into which tables will or will not be replicated. The command-line interface (CLI) has been updated to leverage this new information, providing immediate feedback, warnings for potential issues with ineligible tables, and a verbose option for in-depth analysis. Furthermore, the inclusion of table count metrics in Grafana dashboards allows for better monitoring of changefeed operations.

Highlights

  • Enhanced API Transparency: The API for creating, updating, and resuming changefeeds now provides detailed information about 'eligibleTables' and 'ineligibleTables' in its responses and logs, improving visibility into table replication status.
  • New Table Verification Endpoint: A new API endpoint, '/get_all_tables', has been introduced to explicitly retrieve all eligible and ineligible tables for a given changefeed configuration.
  • Improved CLI Feedback: The 'cdc cli' commands for creating, resuming, and updating changefeeds now display counts of eligible and ineligible tables. A new 'verbose' flag provides detailed lists of these tables, and warnings are issued for ineligible tables during resume and update operations.
  • Grafana Dashboard Integration: New 'Table Count' panels have been added to Grafana dashboards to monitor the total number of tables being processed by changefeeds.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • api/v2/api.go
    • Added a new POST route '/get_all_tables' to the OpenAPI V2 for retrieving all eligible and ineligible tables.
  • api/v2/changefeed.go
    • Modified 'CreateChangefeed' to retrieve and log the lengths of 'eligibleTables' and 'ineligibleTables'.
    • Implemented a new 'GetAllTables' function to provide a comprehensive list of eligible and ineligible tables based on a changefeed configuration.
    • Refactored 'toAPIModelFunc' to be a package-level function for broader accessibility.
    • Updated 'ResumeChangefeed' to perform table verification and log table counts when 'overwriteCheckpointTs' is enabled.
    • Enhanced 'UpdateChangefeed' to include table verification and log table counts.
  • cmd/cdc/cli/cli_changefeed_create.go
    • Introduced a 'verbose' boolean flag to 'createChangefeedOptions'.
    • Updated the output format for 'create changefeed' to include counts of ineligible and eligible tables, with detailed lists displayed when the 'verbose' flag is active.
  • cmd/cdc/cli/cli_changefeed_resume.go
    • Updated the type of 'apiClient' from 'apiv2client.APIV2Interface' to 'apiClient.APIV2Interface'.
    • Added a 'verbose' boolean flag to 'resumeChangefeedOptions'.
    • Modified the 'resume changefeed' command to fetch changefeed details, verify tables (if 'checkpointTs' is provided), display warnings for ineligible tables, and output table counts and detailed lists if 'verbose' is enabled.
  • cmd/cdc/cli/cli_changefeed_update.go
    • Added a 'verbose' boolean flag to 'updateChangefeedOptions'.
    • Modified the 'update changefeed' command to fetch changefeed details, verify tables, display warnings for ineligible tables, prompt for confirmation to ignore ineligible tables, and output table counts and detailed lists if 'verbose' is enabled.
    • Added a comment clarifying that the old sink URI's password part is masked.
  • metrics/grafana/ticdc_new_arch.json
    • Added a new Grafana panel titled "Table Count" to visualize the 'ticdc_scheduler_table_count' metric, segmented by namespace, changefeed, and mode.
  • metrics/grafana/ticdc_new_arch_next_gen.json
    • Added a new Grafana panel titled "Table Count" to visualize the 'ticdc_scheduler_table_count' metric, segmented by keyspace_name, changefeed, and mode.
  • metrics/grafana/ticdc_new_arch_with_keyspace_name.json
    • Added a new Grafana panel titled "Table Count" to visualize the 'ticdc_scheduler_table_count' metric, segmented by keyspace_name, changefeed, and mode.
  • pkg/api/v2/changefeed.go
    • Extended the 'ChangefeedInterface' with a new 'GetAllTables' method.
    • Provided the implementation for 'GetAllTables' to make an API call to retrieve eligible and ineligible tables.
  • pkg/api/v2/mock/changefeed_mock.go
    • Added a mock implementation for the new 'GetAllTables' method in 'MockChangefeedInterface' for testing purposes.
Activity
  • ti-chi-bot[bot] initially marked the PR as "NOT APPROVED".
  • gemini-code-assist[bot] provided an initial summary and highlights of the PR.
  • gemini-code-assist[bot] identified critical issues with Printf format specifiers in 'cli_changefeed_create.go' and 'cli_changefeed_update.go', which appear to have been addressed in the current patch.
  • gemini-code-assist[bot] suggested refactoring duplicated table verification logic in 'cli_changefeed_update.go' into a shared helper function.
  • ti-chi-bot[bot] reported failures in 'pull-check', 'pull-unit-test-next-gen', and 'pull-unit-test' tests.
  • asddongmen requested adding cost time to a log entry.
  • wk989898 requested a new summary from gemini-code-assist[bot].

@asddongmen
Copy link
Collaborator

Please add manual test result in the PR description.

@wk989898 wk989898 removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 19, 2026
Signed-off-by: wk989898 <nhsmwk@gmail.com>
Signed-off-by: wk989898 <nhsmwk@gmail.com>
@wk989898
Copy link
Collaborator Author

/gemini review

Copy link

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

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 adds functionality to provide information about eligible and ineligible tables when creating or updating a changefeed. It introduces a new API endpoint /api/v2/get_all_tables and updates the corresponding CLI commands to display this information, including a new --verbose flag. The changes are a good improvement for user experience. However, I've found a critical bug related to variable shadowing in the resume command, an error handling issue in a new API handler, and several instances of code duplication and misleading CLI output that should be addressed.

Comment on lines 759 to 787
if overwriteCheckpointTs {
sinkURIParsed, err := url.Parse(cfInfo.SinkURI)
if err != nil {
_ = c.Error(errors.WrapError(errors.ErrSinkURIInvalid, err, cfInfo.SinkURI))
return
}
scheme := sinkURIParsed.Scheme
topic := ""
if config.IsMQScheme(scheme) {
topic, err = helper.GetTopic(sinkURIParsed)
if err != nil {
_ = c.Error(errors.WrapError(errors.ErrSinkURIInvalid, err, cfInfo.SinkURI))
return
}
}
protocol, _ := config.ParseSinkProtocolFromString(util.GetOrZero(cfInfo.Config.Sink.Protocol))

keyspaceManager := appcontext.GetService[keyspace.Manager](appcontext.KeyspaceManager)
kvStorage, err := keyspaceManager.GetStorage(ctx, keyspaceName)
if err != nil {
_ = c.Error(err)
return
}
ineligibleTables, eligibleTables, err = getVerifiedTables(ctx, cfInfo.Config, kvStorage, newCheckpointTs, scheme, topic, protocol)
if err != nil {
_ = c.Error(err)
return
}
}

Choose a reason for hiding this comment

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

medium

This block of code for getting verified tables is very similar to the logic in CreateChangefeed, UpdateChangefeed, and the new GetAllTables handler. To improve maintainability and reduce code duplication, consider extracting this logic into a shared helper function.

wk989898 and others added 2 commits January 20, 2026 11:53
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
wk989898 and others added 4 commits January 20, 2026 11:55
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: wk989898 <nhsmwk@gmail.com>
…nto changefeed-info

Signed-off-by: wk989898 <nhsmwk@gmail.com>
@wk989898
Copy link
Collaborator Author

/gemini summary

@gemini-code-assist
Copy link

Summary of Changes

This pull request significantly enhances TiCDC's changefeed management by improving transparency and user control over table replication. It introduces new API capabilities to expose detailed information about eligible and ineligible tables during changefeed creation, updates, and resumption. The command-line interface is updated to leverage this information, offering clearer feedback, warnings for potential issues with ineligible tables, and a verbose option for in-depth analysis. Additionally, new Grafana dashboard panels provide better monitoring of table counts within changefeeds.

Highlights

  • Enhanced API Transparency: The API for creating, updating, and resuming changefeeds now includes "eligibleTables" and "ineligibleTables" information in its responses and logs, providing more detailed insights into the replication process.
  • New Table Verification Endpoint: A new API endpoint, "/get_all_tables", has been introduced to explicitly retrieve all eligible and ineligible tables for a given changefeed configuration.
  • Improved CLI Feedback: CLI commands for creating, resuming, and updating changefeeds now display counts of eligible and ineligible tables, with a new "verbose" flag to show detailed lists. Warnings are also issued for ineligible tables during resume and update operations.
  • Grafana Dashboard Integration: New "Table Count" panels have been added to Grafana dashboards to monitor the total number of tables being processed by changefeeds.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • api/v2/api.go
    • Added a new POST route "/get_all_tables" for retrieving eligible and ineligible tables.
  • api/v2/changefeed.go
    • Modified "CreateChangefeed" to log the lengths of eligible and ineligible tables.
    • Implemented a new "GetAllTables" function to return eligible and ineligible tables.
    • Refactored "toAPIModelFunc" to be a package-level function.
    • Updated "ResumeChangefeed" to perform table verification and log table counts when "overwriteCheckpointTs" is enabled.
    • Enhanced "UpdateChangefeed" to include table verification and log table counts.
  • cmd/cdc/cli/cli_changefeed_create.go
    • Added a "verbose" flag.
    • Updated output to include counts of ineligible and eligible tables, with detailed lists displayed when "verbose" is active.
  • cmd/cdc/cli/cli_changefeed_resume.go
    • Updated "apiClient" type.
    • Added a "verbose" flag.
    • Modified the "run" function to fetch changefeed details, verify tables (if "checkpointTs" is provided), display warnings for ineligible tables, and output table counts and detailed lists if "verbose" is enabled.
  • cmd/cdc/cli/cli_changefeed_update.go
    • Added a "verbose" flag.
    • Added a comment clarifying that the old sink URI's password part is masked.
    • Modified the "run" function to fetch changefeed details, verify tables, display warnings for ineligible tables, prompt for confirmation to ignore ineligible tables, and output table counts and detailed lists if "verbose" is enabled.
  • metrics/grafana/ticdc_new_arch.json
    • Added a new Grafana panel titled "Table Count" to visualize "ticdc_scheduler_table_count".
  • metrics/grafana/ticdc_new_arch_next_gen.json
    • Added a new Grafana panel titled "Table Count" to visualize "ticdc_scheduler_table_count".
  • metrics/grafana/ticdc_new_arch_with_keyspace_name.json
    • Added a new Grafana panel titled "Table Count" to visualize "ticdc_scheduler_table_count".
  • pkg/api/v2/changefeed.go
    • Extended the "ChangefeedInterface" with a new "GetAllTables" method.
    • Implemented "GetAllTables" to make an API call to retrieve eligible and ineligible tables.
  • pkg/api/v2/mock/changefeed_mock.go
    • Added a mock implementation for the new "GetAllTables" method.
Activity
  • ti-chi-bot[bot] initially marked the PR as NOT APPROVED.
  • gemini-code-assist[bot] provided an initial summary and highlights of the PR.
  • gemini-code-assist[bot] identified critical Printf format specifier issues in 'cli_changefeed_create.go' and 'cli_changefeed_update.go', which appear to have been addressed in the current patch.
  • gemini-code-assist[bot] suggested refactoring duplicated table verification logic in 'cli_changefeed_update.go' into a shared helper function.
  • ti-chi-bot[bot] reported failures in 'pull-unit-test-next-gen' and 'pull-unit-test' tests.
  • asddongmen requested adding cost time to a log entry, to which wk989898 responded that LogMiddleware handles it.
  • wk989898 requested a new summary from gemini-code-assist[bot].
  • gemini-code-assist[bot] provided an updated summary and changelog.
  • asddongmen requested adding manual test results to the PR description.
  • wk989898 requested a review.
  • gemini-code-assist[bot] identified a variable shadowing bug in 'cli_changefeed_resume.go' (line 210).
  • gemini-code-assist[bot] noted an unhandled error from 'schemastore.VerifyTables' in the 'GetAllTables' API handler.
  • gemini-code-assist[bot] suggested extracting duplicated table verification logic into a shared helper function for 'ResumeChangefeed'.
  • gemini-code-assist[bot] pointed out inconsistent output labels for 'IneligibleTablesCount' in CLI outputs, suggesting 'IneligibleTables' instead.
  • asddongmen suggested a wording change for the 'verbose' flag description in 'cli_changefeed_create.go'.

Signed-off-by: wk989898 <nhsmwk@gmail.com>
Signed-off-by: wk989898 <nhsmwk@gmail.com>
Signed-off-by: wk989898 <nhsmwk@gmail.com>
@ti-chi-bot ti-chi-bot bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Jan 20, 2026
@ti-chi-bot
Copy link

ti-chi-bot bot commented Jan 20, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: asddongmen

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
Copy link

ti-chi-bot bot commented Jan 20, 2026

[LGTM Timeline notifier]

Timeline:

  • 2026-01-20 09:09:32.666701922 +0000 UTC m=+485000.280658778: ☑️ agreed by asddongmen.

@ti-chi-bot ti-chi-bot bot added the approved label Jan 20, 2026
Signed-off-by: wk989898 <nhsmwk@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved needs-1-more-lgtm Indicates a PR needs 1 more 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.

Add more details when creating changefeed

2 participants