You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fluss.apache.org by "luoyuxia (via GitHub)" <gi...@apache.org> on 2026/06/01 13:27:13 UTC

[I] Rust client should support comma-separated bootstrap servers [fluss-rust]

luoyuxia opened a new issue, #585:
URL: https://github.com/apache/fluss-rust/issues/585

   ### Search before asking
   
   - [x] I searched in the [issues](https://github.com/apache/fluss-rust/issues) and found nothing similar.
   
   ### Please describe the bug 🐞
   
   The Rust client currently appears to support only one bootstrap endpoint, even though the public configuration is named `bootstrap_servers` / `bootstrap.servers`. A comma-separated value such as `127.0.0.1:9123,127.0.0.1:9124` should be accepted so users can configure multiple bootstrap nodes for high availability.
   
   Current behavior:
   
   1. Set the Rust client config to a comma-separated bootstrap list, for example:
   
   ```rust
   let mut config = Config::default();
   config.bootstrap_servers = "127.0.0.1:9123,127.0.0.1:9124".to_string();
   let conn = FlussConnection::create(config).await?;
   ```
   
   2. The client passes the whole string through `Metadata::new` / `Metadata::init_cluster`.
   3. `Metadata::parse_bootstrap` calls `to_socket_addrs()` on the complete string, so the comma-separated value is treated as a single socket address and fails to resolve.
   
   Expected behavior:
   
   The client should parse `bootstrap_servers` as a comma-separated list of `host:port` entries, trim whitespace, validate each endpoint, and use one reachable bootstrap endpoint to initialize metadata. Reinitialization should also keep using the configured bootstrap list instead of assuming a single address.
   
   Impact:
   
   Users cannot configure multiple bootstrap nodes/coordinators for HA or failover. This also makes the plural config name misleading.
   
   ### Solution
   
   Update the client bootstrap parsing to return a list of socket addresses rather than a single `SocketAddr`. During metadata initialization and reinitialization, try the parsed endpoints in a deterministic order, falling back to the next endpoint if one cannot be resolved or connected.
   
   Suggested test coverage:
   
   - comma-separated IPv4/hostname entries, e.g. `127.0.0.1:9123,localhost:9124`;
   - whitespace around entries;
   - IPv6 entries such as `[::1]:9123`;
   - invalid empty entries and invalid ports;
   - `reinit_cluster` uses the configured bootstrap list.
   
   ### Are you willing to submit a PR?
   
   - [ ] I'm willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@fluss.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org