Skip to content

Conversation

@fatelei
Copy link

@fatelei fatelei commented Nov 10, 2025

Description

fix #406

Plugin daemon fails after ECS task redeployment with connection errors due to stale IP addresses cached in Redis. When containers get new IP
addresses during redeployment, the cluster system continues trying to connect to old, non-existent IP addresses.

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Performance improvement
  • Other

Essential Checklist

Testing

  • I have tested the changes locally and confirmed they work as expected
  • I have added unit tests where necessary and they pass successfully

Bug Fix (if applicable)

  • I have used GitHub syntax to close the related issue (e.g., Fixes #123 or Closes #123)

Additional Information

Please provide any additional context that would help reviewers understand the changes.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @fatelei, 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 resolves a critical issue where the plugin daemon would experience connection failures following an ECS task redeployment. The problem stemmed from the daemon attempting to connect to stale, non-existent IP addresses cached in Redis. The solution introduces a ClusterDisabled configuration option, allowing single-node deployments to route requests internally via localhost and avoid cluster-related IP issues. For clustered environments, the system now includes logic to refresh node IP caches and retry connections upon failure, enhancing overall stability and adaptability to dynamic network environments.

Highlights

  • ECS Redeployment Fix: Addresses connection errors in the plugin daemon after ECS task redeployment, which were caused by stale IP addresses cached in Redis.
  • Cluster Disabled Configuration: Introduces a new ClusterDisabled configuration option. When enabled, the system bypasses cluster redirection and routes requests to the current node via localhost, preventing issues with outdated IPs.
  • Resilient IP Redirection: For multi-node clusters, the system now attempts to refresh node information and retry connections if initial redirection attempts to cached IPs fail, improving resilience against network changes.
  • Enhanced Testing: New integration and unit tests have been added to cover the ECS redeployment scenario, localhost redirection logic, and the behavior of the ClusterDisabled flag in various components.
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
Contributor

@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 effectively addresses the issue of connection failures after ECS redeployment by introducing a ClusterDisabled configuration flag and enhancing the request redirection logic. The changes include redirecting to localhost for the current node and implementing a retry mechanism with IP cache refreshing for other nodes, which significantly improves resilience. While the core logic is sound, I've identified several areas for improvement, particularly in the test suite's quality and some opportunities to reduce code duplication and simplify control flow for better maintainability. My detailed comments are below.

@Yeuoly
Copy link
Contributor

Yeuoly commented Nov 18, 2025

Hi, A huge refactor has been committed to main, would you mind rebase to main to solve the conflicts?

@fatelei
Copy link
Author

fatelei commented Nov 18, 2025

Hi, A huge refactor has been committed to main, would you mind rebase to main to solve the conflicts?

done

@Yeuoly Yeuoly requested a review from Stream29 November 21, 2025 08:52
@Stream29
Copy link
Contributor

@Yeuoly I didn't find any explicit logical errors in this PR and it can pass go build. Shall I approve it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin daemon fails after ECS task redeployment with connection errors

3 participants