-
Notifications
You must be signed in to change notification settings - Fork 239
fix: non-blocking send_message
server handler not invoke push notification
#394
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @weimch, 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!
I've addressed a bug where non-blocking send_message
calls were failing to trigger push notifications, leaving clients without updates on long-running tasks. My fix integrates push notification logic directly into the ResultAggregator
to ensure clients receive timely updates for all message sending configurations.
Highlights
- Bug Fix - Non-blocking Notifications: Previously, when
send_message
was used withblocking=False
, the system would not send push notifications, preventing clients from receiving updates on long-running tasks. - Enhanced
ResultAggregator
: I've updated theResultAggregator
to accept an optionalPushNotificationSender
instance. This allows it to actively send notifications during the_continue_consuming
process. - Integration in
default_request_handler
: The_setup_message_execution
function now correctly passes the_push_sender
to theResultAggregator
when it's initialized, enabling the new notification functionality for non-blocking flows.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
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 issue 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 or fill out our survey to provide feedback.
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
-
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. ↩
There was a problem hiding this 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 correctly addresses an issue where non-blocking send_message
calls failed to trigger push notifications. The solution involves extending ResultAggregator
to handle push notifications during background event processing, which is a logical and effective approach. The implementation is sound. I have one suggestion regarding code duplication that was introduced, which could be addressed to improve long-term maintainability.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add a unit test for the issue that you are fixing?
Sure, after the changes are approved, i will add a unit test. |
Please add the unit tests before this is merged |
679ecc8
to
5824806
Compare
Certainly, but the test_default_request_handler.py is too complex for me. I need time to fully understand how to write. The unit tests will be late(maybe tomorrow). On the ohter hand, i have add a callbck to solve the duplication issue mentioned by gemini-code-assist. You can check it. |
Thanks for the update, @weimch! I appreciate you addressing the duplication issue with the new callback mechanism. The changes in Regarding the unit tests for |
5824806
to
6a91e23
Compare
…ation - Problem: When client use send_message with MessageSendConfiguration.blocking=False, the result_aggregator will enter the logic of _continue_consuming. But it's not push notification to client. The client can't get notification for long-running task(non-blocking invoke) at this situation. - Solution: Add callbck to support push notification when doing continue_consuming.
b0909a3
to
90cb294
Compare
send_message
server handler not invoke push notification
🤖 I have created a release *beep* *boop* --- ## [0.3.2](v0.3.1...v0.3.2) (2025-08-20) ### Bug Fixes * Add missing mime_type and name in proto conversion utils ([#408](#408)) ([72b2ee7](72b2ee7)) * Add name field to FilePart protobuf message ([#403](#403)) ([1dbe33d](1dbe33d)) * Client hangs when implementing `AgentExecutor` and `await`ing twice in execute method ([#379](#379)) ([c147a83](c147a83)) * **grpc:** Update `CreateTaskPushNotificationConfig` endpoint to `/v1/{parent=tasks/*/pushNotificationConfigs}` ([#415](#415)) ([73dddc3](73dddc3)) * make `event_consumer` tolerant to closed queues on py3.13 ([#407](#407)) ([a371461](a371461)) * non-blocking `send_message` server handler not invoke push notification ([#394](#394)) ([db82a65](db82a65)) * **proto:** Add `icon_url` to `a2a.proto` ([#416](#416)) ([00703e3](00703e3)) * **spec:** Suggest Unique Identifier fields to be UUID ([#405](#405)) ([da14cea](da14cea)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
send_message
withMessageSendConfiguration.blocking=False
, theresult_aggregator
will enter the logic of_continue_consuming
. But it's not push notification to client. The client can't get notification for long-running task(non-blocking invoke) at this situation.Fixes #239 🦕