Skip to content

Conversation

@ardatan
Copy link
Member

@ardatan ardatan commented Dec 5, 2025

Ref CONSOLE-1605

Rust SDK

Circuit Breaker Implementation and Multiple Endpoints Support

Implementation of Circuit Breakers in Hive Console Rust SDK, you can learn more here

Breaking Changes:

Now endpoint configuration accepts multiple endpoints as an array for SupergraphFetcherBuilder and PersistedDocumentsManager.

SupergraphFetcherBuilder::default()
-    .endpoint(endpoint)
+    .add_endpoint(endpoint1)
+    .add_endpoint(endpoint2)

This change requires updating the configuration structure to accommodate multiple endpoints.

Apollo Router Plugin

  • Multiple endpoints support for HiveRegistry and PersistedOperationsPlugin

Breaking Changes:

  • Now there is no endpoint field in the configuration, it has been replaced with endpoints, which is an array of strings. You are not affected if you use environment variables to set the endpoint.
HiveRegistry::new(
    Some(
        HiveRegistryConfig {
-            endpoint: String::from("CDN_ENDPOINT"),
+            endpoints: vec![String::from("CDN_ENDPOINT1"), String::from("CDN_ENDPOINT2")],
    )
)

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @ardatan, 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 robustness and availability of the Hive Console Rust SDK and its Apollo Router Plugin by integrating a circuit breaker pattern and enabling the use of multiple CDN endpoints. These changes allow the system to gracefully handle failures and switch to healthy endpoints, ensuring continuous operation even when some services are degraded.

Highlights

  • Circuit Breaker Implementation: Introduced a circuit breaker pattern into the Hive Console Rust SDK to enhance resilience and prevent cascading failures when communicating with external services. This is applied to both usage reporting and document fetching.
  • Multiple Endpoints Support (Rust SDK): The SupergraphFetcherBuilder and PersistedDocumentsManager in the Rust SDK now support configuring multiple CDN endpoints. This allows for automatic fallback to alternative endpoints if one fails, improving availability.
  • Multiple Endpoints Support (Apollo Router Plugin): The HiveRegistry and PersistedOperationsPlugin in the Apollo Router Plugin have been updated to support multiple endpoints, providing similar resilience benefits for these components.
  • Breaking Changes in Configuration: The endpoint configuration field has been replaced with an endpoints array for SupergraphFetcherBuilder, PersistedDocumentsManager, and HiveRegistryConfig. Existing configurations using a single endpoint string will need to be updated to an array format.
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.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 5, 2025

🚀 Snapshot Release (alpha)

The latest changes of this PR are available as alpha on npm (based on the declared changesets):

Package Version Info
hive 8.13.0-alpha-20251206000002-402da7cdce2495c4de09443c4fcfee14a17e82a4 npm ↗︎ unpkg ↗︎
hive-apollo-router-plugin 3.0.0-alpha-20251206000002-402da7cdce2495c4de09443c4fcfee14a17e82a4 npm ↗︎ unpkg ↗︎
hive-console-sdk-rs 0.3.0-alpha-20251206000002-402da7cdce2495c4de09443c4fcfee14a17e82a4 npm ↗︎ unpkg ↗︎

@github-actions
Copy link
Contributor

github-actions bot commented Dec 5, 2025

📚 Storybook Deployment

The latest changes are available as preview in: https://pr-7380.hive-storybook.pages.dev

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 circuit breaker functionality and support for multiple endpoints to the Rust SDK and Apollo Router plugin, enhancing resilience. The changes involve breaking API updates for configuration. My review identifies critical issues with potential panics in the supergraph_fetcher due to improper error handling, and medium-severity issues in circuit_breaker.rs related to code duplication and a misleading comment.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 5, 2025

💻 Website Preview

The latest changes are available as preview in: https://pr-7380.hive-landing-page.pages.dev

@github-actions
Copy link
Contributor

github-actions bot commented Dec 5, 2025

🐋 This PR was built and pushed to the following Docker images:

Targets: build

Platforms: linux/amd64

Image Tag: 402da7cdce2495c4de09443c4fcfee14a17e82a4

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant