Skip to content

feat: plugin unregister clean cache immediatly#636

Open
fatelei wants to merge 1 commit intolanggenius:mainfrom
fatelei:issue-635
Open

feat: plugin unregister clean cache immediatly#636
fatelei wants to merge 1 commit intolanggenius:mainfrom
fatelei:issue-635

Conversation

@fatelei
Copy link
Contributor

@fatelei fatelei commented Mar 16, 2026

Description

fix #635

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.

@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Mar 16, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, 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 addresses an issue where plugin states might not be immediately cleaned up upon unregistration or when they become stale. It introduces mechanisms to ensure that expired plugin states are promptly removed from the cluster's cache, improving data consistency and resource management. Additionally, the unregistration process has been made more resilient through the implementation of a retry mechanism.

Highlights

  • Immediate Cache Cleanup: Implemented logic within FetchPluginAvailableNodesByHashedId to proactively identify and immediately clean up expired plugin states, preventing stale data from persisting.
  • Robust Plugin Unregistration: Enhanced the UnregisterPlugin function with a retry mechanism to ensure more reliable removal of plugin states from the cluster, handling transient errors during the process.
  • Plugin State Validation: Introduced a new isPluginStateValid helper function to determine if a plugin's runtime state is still active based on its ScheduledAt timestamp and a defined deactivated timeout.
  • Comprehensive Testing: Added new unit tests to cover the retry logic in plugin unregistration, the cleanup of expired states during node fetching, and the correctness of the new plugin state validation function.

🧠 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
  • internal/cluster/node.go
    • Modified FetchPluginAvailableNodesByHashedId to check for and clean up expired plugin states immediately using the new isPluginStateValid function.
  • internal/cluster/plugin.go
    • Refactored UnregisterPlugin to include a retry loop for removePluginState operations, enhancing robustness.
    • Added a new private helper function isPluginStateValid to determine the validity of a plugin's runtime state based on its scheduled time.
  • internal/cluster/plugin_test.go
    • Added TestUnregisterPluginRetry to verify the retry mechanism in plugin unregistration.
    • Included TestFetchPluginAvailableNodesCleanExpiredState to confirm that expired states are cleaned during node fetching.
    • Implemented TestIsPluginStateValid to thoroughly test the new plugin state validation logic.
Activity
  • The author has confirmed local testing of the changes.
  • Unit tests have been added and pass successfully, covering the new functionality.
  • The pull request addresses and fixes issue no plugin available nodes found #635.
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.

@dosubot dosubot bot added bug Something isn't working go Pull requests that update go code plugin-daemon labels Mar 16, 2026
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 introduces significant improvements to the cluster's plugin management by implementing a proactive cleanup mechanism for expired plugin states and a robust retry logic for plugin unregistration. The changes enhance the system's reliability and ensure that stale plugin data is promptly removed. The addition of comprehensive unit tests for the new functionalities, including the retry mechanism and state validation, is commendable and ensures the correctness of the implemented logic.

@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working go Pull requests that update go code plugin-daemon size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

no plugin available nodes found

1 participant