chore(deps): bump redis-enterprise + redis-cloud to refreshed main; adapt callers#924
Open
joshrotenberg wants to merge 1 commit into
Open
chore(deps): bump redis-enterprise + redis-cloud to refreshed main; adapt callers#924joshrotenberg wants to merge 1 commit into
joshrotenberg wants to merge 1 commit into
Conversation
…dapt callers Picks up the substantial 2026-05 refresh of both client crates that landed across ~25 PRs in redis-enterprise-rs and ~10 PRs in redis-cloud-rs. Both deps are pinned via `branch = "main"` so this is a `cargo update -p redis-enterprise -p redis-cloud` plus the small caller-side adaptations the breaking changes required. ## What landed upstream ### redis-enterprise-rs - All 10 Tier-1 issues (#58–#67) closed: surgical bug fixes (crdb PATCH, bdb flush path, nodes execute_action URL, ocsp POST), six wrapper-decode fixes (actions / crdb / bdb_groups / bootstrap / proxies / cluster_alerts), type corrections (Action progress/node_uid as String, Proxy maxmemory_clients widened to u64). - cluster + nodes gained check() endpoints; users RBAC made role Optional so role_uids can be used alone. - Stats / crdb_tasks correctness fixes (shard stats path fixed from /v1/shards/{uid}/stats to /v1/shards/stats/{uid}; crdb_tasks cancel now POSTs to /actions/cancel). - Live-integration smoke tests added (#49). - Route-coverage test against docs/api-inventory.csv (#66). - Full rustdoc pass: 490 missing-docs errors -> 0, #![deny(missing_docs)] enforced (#67). - aws-lc-sys / rustls-webpki bumped past six RUSTSEC advisories. ### redis-cloud-rs - All Tier-1 surgical bug fixes (FixedDatabaseHandler::list, GET /tasks decode, VPC peering wire keys, activatedOn, credit_card_ends_with String). - private_link delegation methods documented. - Rustdoc pass: 378 missing-docs errors -> 0, lint enforced. - aws-lc-sys / rustls-webpki bumped. ## Caller adaptations - crates/redisctl-core/src/enterprise/progress.rs: EnterpriseProgressEvent::Polling.progress is now Option<String> to match the enterprise crate's new Action.progress shape. Plus a .clone() on the action.progress field since String doesn't impl Copy. - crates/redisctl-mcp/src/tools/enterprise/rbac.rs: create_enterprise_user wraps the tool's required `role` input in Some(...) because the enterprise CreateUserRequest.role field is now Option<String>. MCP tool schema still treats role as required; RBAC-style usage via role_uids alone is a follow-up. - crates/redisctl-mcp/tests/enterprise_tools.rs: test_get_shard_stats mock now mounts /v1/shards/stats/{uid} (the spec-correct path) instead of /v1/shards/{uid}/stats (the previous buggy path). ## Drive-by clippy fixes crates/redisctl-mcp/src/tools/redis/diagnostics.rs hit clippy::unnecessary_sort_by after the rust-clippy update; both sort_by(|a, b| b.1.cmp(&a.1)) callsites converted to sort_by_key(|entry| std::cmp::Reverse(entry.1)). ## Test plan - cargo fmt --all -- --check - cargo clippy --workspace --all-targets -- -D warnings - cargo test --workspace -- all suites green; ~1000+ tests pass ## Issues likely auto-resolved (needs live verification against a real Enterprise cluster) The upstream enterprise refresh fixed multiple decode/path bugs that match symptoms in: - #917 usage-report get fails to parse live response - #919 endpoint availability fails against local demo cluster - #920 services get/status fails for cm_server - #921 diagnostics list-checks returns 404 - #916 enterprise database create --dry-run returns 404 Each needs a live re-run after this lands to confirm whether the upstream fixes resolve it.
This was referenced May 27, 2026
joshrotenberg
added a commit
that referenced
this pull request
May 28, 2026
Two `key_sizes.sort_by(|a, b| b.1.cmp(&a.1))` and `ip_list.sort_by(|a, b| b.1.cmp(&a.1))` calls trip the `clippy::unnecessary_sort_by` lint under the current rust-clippy. Converted to the suggested `sort_by_key(|entry| std::cmp::Reverse(entry.1))` form, which is equivalent behaviour (descending sort on `.1`) and expresses intent more clearly. This is the single clippy warning blocking Quick Checks on PRs #924 and #925 — once it lands those CIs go green (modulo the separately-tracked RUSTSEC AWS-LC bundle). Test plan - cargo clippy --workspace --all-targets --all-features -- -D warnings (clean)
joshrotenberg
added a commit
that referenced
this pull request
May 28, 2026
Both `cloud_secret_env_prefers_canonical_name` and `cloud_secret_env_falls_back_to_alias` (added in #913) mutate the same process-wide env vars (`REDIS_CLOUD_SECRET_KEY` and `REDIS_CLOUD_API_SECRET`). cargo test runs in parallel by default, so when one test sets `REDIS_CLOUD_SECRET_KEY=canonical-secret` and the other expects that key to be unset, whichever wins the race gets the wrong env state and fails. Observed symptom on PR #924's CI: state::tests::cloud_secret_env_falls_back_to_alias left: "canonical-secret" right: "alias-secret" Reproduced locally on `main` — the failing test alternates between the two depending on scheduling. Five consecutive runs with the fix all pass; serial-only runs already passed. Fix: annotate both tests with `#[serial_test::serial(cloud_secret_env)]` to put them in the same named serialization group. `serial_test` is already a workspace dev-dep used by `redisctl-core/src/config/config.rs` for the same reason; this just adds it to `redisctl-mcp`'s dev-deps and applies the standard pattern. Test plan - cargo fmt --all -- --check - cargo test -p redisctl-mcp --features cloud --lib state::tests::cloud_secret (run 5x in a loop; all green)
joshrotenberg
added a commit
that referenced
this pull request
May 28, 2026
Both `cloud_secret_env_prefers_canonical_name` and `cloud_secret_env_falls_back_to_alias` (added in #913) mutate the same process-wide env vars (`REDIS_CLOUD_SECRET_KEY` and `REDIS_CLOUD_API_SECRET`). cargo test runs in parallel by default, so when one test sets `REDIS_CLOUD_SECRET_KEY=canonical-secret` and the other expects that key to be unset, whichever wins the race gets the wrong env state and fails. Observed symptom on PR #924's CI: state::tests::cloud_secret_env_falls_back_to_alias left: "canonical-secret" right: "alias-secret" Reproduced locally on `main` — the failing test alternates between the two depending on scheduling. Five consecutive runs with the fix all pass; serial-only runs already passed. Fix: annotate both tests with `#[serial_test::serial(cloud_secret_env)]` to put them in the same named serialization group. `serial_test` is already a workspace dev-dep used by `redisctl-core/src/config/config.rs` for the same reason; this just adds it to `redisctl-mcp`'s dev-deps and applies the standard pattern. Test plan - cargo fmt --all -- --check - cargo test -p redisctl-mcp --features cloud --lib state::tests::cloud_secret (run 5x in a loop; all green)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Picks up the 2026-05 refresh of both client crates that landed across ~25 PRs in
redis-enterprise-rsand ~10 PRs inredis-cloud-rs. Both deps are pinned viabranch = "main"so this is acargo update -p redis-enterprise -p redis-cloudplus the small caller-side adaptations the breaking changes required.What landed upstream
redis-enterprise-rsPATCH, bdb flush path, nodesexecute_actionURL, ocspPOST), six wrapper-decode fixes (actions, crdb, bdb_groups, bootstrap, proxies, cluster_alerts), type corrections (Actionprogress/node_uidasString, Proxymaxmemory_clientswidened tou64).check()endpoints; users RBAC maderoleOptionalsorole_uidscan be used alone./v1/shards/{uid}/statsto/v1/shards/stats/{uid};crdb_taskscancel now POSTs to/actions/cancel.docs/api-inventory.csv.#![deny(missing_docs)]enforced.aws-lc-sys/rustls-webpkibumped past six RUSTSEC advisories.redis-cloud-rsactivatedOn,credit_card_ends_withString).aws-lc-sys/rustls-webpkibumped.Caller adaptations
crates/redisctl-core/src/enterprise/progress.rsEnterpriseProgressEvent::Polling.progresswidens toOption<String>to match the enterprise crate'sAction.progress..clone()added on the assignment sinceStringisn'tCopy.crates/redisctl-mcp/src/tools/enterprise/rbac.rscreate_enterprise_userwraps the tool's requiredroleinput inSome(...). The MCP tool schema still treats role as required; RBAC-only viarole_uidsis a follow-up.crates/redisctl-mcp/tests/enterprise_tools.rstest_get_shard_statsmounts/v1/shards/stats/{uid}(spec-correct) instead of/v1/shards/{uid}/stats.Drive-by clippy fixes
crates/redisctl-mcp/src/tools/redis/diagnostics.rshitclippy::unnecessary_sort_byafter the rust-clippy update; both call sites converted tosort_by_key(|entry| std::cmp::Reverse(entry.1)).Issues likely auto-resolved (needs live verification)
The upstream enterprise refresh fixed multiple decode/path bugs that match the symptoms reported in:
Each needs a live re-run after this lands to confirm.
Test plan
cargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspace— ~1000+ tests pass, none failing