-
Notifications
You must be signed in to change notification settings - Fork 10
Support 3 Vector Store nodes in Vector Store Validator #301
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.
Pull request overview
This PR adds support for 3 Vector Store nodes in the Vector Store Validator test infrastructure to enable testing of production-like high availability environments. The changes refactor the API to use a new ScyllaNodeConfig struct that encapsulates node configuration including primary and secondary Vector Store URIs, replacing the previous single Vector Store URL approach.
Key changes:
- Introduced
ScyllaNodeConfigstruct to configure each ScyllaDB node with primary and secondary Vector Store URIs - Updated all test infrastructure to support 3 DB nodes and 3 VS nodes with configurable URI mappings
- Added new
high_availabilitytest suite to verify secondary URI failover functionality
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
crates/validator-tests/src/scylla_cluster.rs |
Added ScyllaNodeConfig struct and updated ScyllaCluster enum to accept node configs instead of simple URI strings |
crates/validator-tests/src/lib.rs |
Exported the new ScyllaNodeConfig struct |
crates/validator-tests/src/common.rs |
Updated constants for 3 VS nodes, added helper functions for node configs, and updated init/cleanup to handle multiple DNS entries |
crates/validator-engine/src/scylla_cluster.rs |
Refactored node startup to use ScyllaNodeConfig, updated command-line argument handling to support primary/secondary URIs |
crates/validator-vector-store/src/reconnect.rs |
Updated tests to use new get_default_node_configs API and restart method with node config |
crates/validator-vector-store/src/memory_limit.rs |
Updated to use new VS octet constants and node config API |
crates/validator-vector-store/src/lib.rs |
Added new high_availability test module to test suite |
crates/validator-vector-store/src/high_availability.rs |
New test file implementing secondary URI failover testing with 1 primary and 2 secondary configurations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
eae746e to
1e3ae76
Compare
|
Changelog:
|
1e3ae76 to
a0d8c45
Compare
|
Changelog:
|
|
Changelog:
|
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.
Pull request overview
Copilot reviewed 16 out of 16 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
17f3418 to
67dedbb
Compare
|
Changelog:
|
67dedbb to
9e62e8a
Compare
|
Changelog:
|
9e62e8a to
9f2bcd1
Compare
|
Changelog:
|
smoczy123
left a comment
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.
Generally looks good. I have one question: why do we support only 3 node clusters? I think it would make sense to support a variable (probably reasonably bounded) number of nodes in a cluster
The default is 3 node (both Scylla and Vector Store), but it is configurable in custom setup (f.e. look |
Also 3 is what we enforce in XCloud and recommend in other scenarios. |
ewienik
left a comment
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.
PR should be rebased to the master
9f2bcd1 to
1433552
Compare
|
Changelog:
|
1433552 to
2e6d101
Compare
|
Changelog:
|
Move ScyllaDB nodes IP last octets from 2-254 to 1-127. Move Vector Store node IP last octets from 1 to 128-254. This setup supports adding more ScyllaDB and Vector Store nodes in testing if needed. Changed `VS_NAME` to a list of available DNS names for Vector Store nodes. Now the names are `vs1`, `vs2`, `vs3`, and more if needed. Renamed `get_default_vs_url` function to `get_default_vs_urls` and adjusted it to return URLs of three default Vector Store nodes. Added `get_default_vs_ips` function to return vector of three default Vector Store node IPs (not to confuse with DNS names). Adjusted `get_default_node_configs` so that now the default nodes does support one primary Vector Store node and two secondary ones.
Since registering multiple Vector Store nodes in the DNS server the logs are getting spammed by the messages of having them registered. Let the messages be visible only on `--verbose` mode. You can also turn them on by setting `RUST_LOG` env var to INFO or higher.
Mention ScyllaDB node in tracing managing ScyllaDB cluster. Rename `node_configs` to `scylla_configs` in `common.rs`.
Implemented necessary Vector Store cluster management interface similar to the one used for ScyllaDB cluster. Added `start_node`, `stop_node`, `restart` operations. From this patch, custom Vector Store node config is available including number of nodes, node IPs, DB IPs which node connect to, and environmental variable sets. Adjust existing tests to support 3 Vector Store node architecture, especially waiting for all nodes to have their indices created.
Add test restarting VS cluster and checking if the restart does not break ScyllaDB connection to VS nodes.
2e6d101 to
1e61fb4
Compare
|
Changelog:
|
Add support for 3 Vector Store nodes for testing of more production alike environments.
Fixes: VECTOR-157