Skip to content

Conversation

@wlwilliamx
Copy link
Collaborator

What problem does this PR solve?

Issue Number: ref #2128

What is changed and how it works?

Support TiDB Dashboard searching TiCDC logs.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test
CleanShot 2025-12-30 at 23 40 59

Questions

Will it cause performance regression or break compatibility?

None

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

None

Release note

None

@ti-chi-bot ti-chi-bot bot added do-not-merge/needs-triage-completed release-note-none Denotes a PR that doesn't merit a release note. labels Dec 30, 2025
@gemini-code-assist
Copy link

Summary of Changes

Hello @wlwilliamx, 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 introduces a significant enhancement to TiCDC's observability by enabling TiDB Dashboard to search TiCDC logs directly. By integrating a new gRPC diagnostics service, users can now efficiently troubleshoot and monitor TiCDC instances through a centralized dashboard, improving the ease of identifying and resolving issues without manual log file inspection.

Highlights

  • New Log Diagnostics Service: A new gRPC DiagnosticsServer has been integrated into the TiCDC server, enabling external tools like TiDB Dashboard to search TiCDC logs.
  • TiDB Dashboard Log Search Support: This change specifically adds the necessary backend support for TiDB Dashboard to perform log searches within TiCDC instances.
  • Unit Test for Log Search: A comprehensive unit test has been added to validate the functionality of the new log search gRPC endpoint, ensuring it correctly processes search requests and returns relevant log entries.

🧠 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.

@ti-chi-bot ti-chi-bot bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Dec 30, 2025
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 support for searching TiCDC logs via a new diagnostics gRPC service, which will be used by TiDB Dashboard. The changes involve registering the diagnostics service in the main gRPC server and adding a new integration test to verify the log search functionality. The implementation looks good, but I have a suggestion to improve the robustness of the new test case by properly handling the gRPC stream.

Comment on lines +89 to +100
resp, err := stream.Recv()
require.NoError(t, err)
require.NotEmpty(t, resp.Messages)

found := false
for _, msg := range resp.Messages {
if strings.Contains(msg.Message, "hello world") {
found = true
break
}
}
require.True(t, found, "expected log message to contain hello world")

Choose a reason for hiding this comment

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

medium

The current implementation for receiving from the stream is not robust. It only receives one message and doesn't correctly handle the end of the stream (io.EOF), which could lead to test failures if the streaming behavior changes (e.g., multiple message chunks) or if no messages are returned.

It's better to loop over stream.Recv() until io.EOF is received to collect all messages from the stream before asserting the content. This makes the test more resilient to changes in the server's streaming implementation.

Please also remember to add "io" to the imports.

	var allMessages []*diagnosticspb.LogMessage
	for {
		resp, err := stream.Recv()
		if err == io.EOF {
			break
		}
		require.NoError(t, err)
		allMessages = append(allMessages, resp.Messages...)
	}
	require.NotEmpty(t, allMessages)

	found := false
	for _, msg := range allMessages {
		if strings.Contains(msg.Message, "hello world") {
			found = true
			break
		}
	}
	require.True(t, found, "expected log message to contain hello world")

@ti-chi-bot ti-chi-bot bot added needs-1-more-lgtm Indicates a PR needs 1 more LGTM. approved labels Dec 30, 2025
@wlwilliamx
Copy link
Collaborator Author

/test all

@ti-chi-bot
Copy link

ti-chi-bot bot commented Dec 31, 2025

[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 lgtm and removed needs-1-more-lgtm Indicates a PR needs 1 more LGTM. labels Dec 31, 2025
@ti-chi-bot
Copy link

ti-chi-bot bot commented Dec 31, 2025

[LGTM Timeline notifier]

Timeline:

  • 2025-12-30 15:50:01.325202041 +0000 UTC m=+112557.143510473: ☑️ agreed by wk989898.
  • 2025-12-31 04:18:05.7279512 +0000 UTC m=+157441.546259632: ☑️ agreed by lidezhu.

@wlwilliamx
Copy link
Collaborator Author

/retest

@ti-chi-bot ti-chi-bot bot merged commit 66f216f into pingcap:master Dec 31, 2025
19 checks passed
@wlwilliamx wlwilliamx mentioned this pull request Jan 4, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved lgtm release-note-none Denotes a PR that doesn't merit a release note. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants