Skip to content

fix: repair pool credential handling and connection selection - #1732

Merged
ctkm-aelf merged 2 commits into
mainfrom
fix/service-pool-unavailable-credentials
Oct 2, 2026
Merged

ctkm-aelf merged 2 commits into
mainfrom
fix/service-pool-unavailable-credentials

Conversation

@ctkm-aelf

@ctkm-aelf ctkm-aelf commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Fix service-pool inventory and health requests failing with Bad request: API key is failed when one connection has an unusable stored credential. Report that connection as unavailable and let priority pools dispatch to a healthy backup, while preserving direct-proxy HTTP 400 responses and genuine database errors.
  • Replace the connection list with a searchable multi-select dropdown that stays open while selecting, supports deselection and keyboard navigation, and keeps member configuration in the form. Search connection names and slugs before pagination. Require a selected connection for new dashboard pools while preserving CLI/API empty drafts. Keep the picker above selected cards to prevent ResizeObserver feedback as selections change.
  • Add regressions for credential states, agent overrides, scope and transport behavior, search pagination, error reporting, and dropdown interactions. Update the API and pool documentation.

Follow-up to #1731. Related to #1680.

Test Plan

  • 113 backend service-pool tests, 131 proxy-service tests, 21 error-contract tests, and 14 proxy-telemetry tests passed against local MongoDB 8 where required. The final ten inspection tests passed after adding name search.
  • Frontend: 4,113 tests in 411 files, including 31 focused pool tests; lint and production build passed.
  • Final independent real server/CLI/browser smoke: 11 checks passed for candidate inventory, operation checks, name search before pagination, saved health, one-attempt healthy fallback, direct error compatibility, and empty drafts.
  • Real browser create/edit/delete passed against the local backend, including displayed-name search, multi-selection, deselection, unavailable connections, repeated Escape/focus restoration, desktop/mobile layout, and zero window, page, or console errors in the production build.
  • Permanent browser regression: the previous placement failed all three runs with the exact ResizeObserver error; the corrected layout passed all five runs. The final 31 focused frontend tests, TypeScript, lint, and production build passed.
  • Workspace Clippy, Rust formatting, and the backend boundary check passed.
  • Final-head CI (8d6a5a50): CI Pipeline, all CodeQL jobs, frontend and backend coverage passed. Backend CI ran 7,140 passing tests (5 skipped by the suite). Squash-merged into main as 89257aa5.

Checklist

  • Code follows the project's architecture rules.
  • No hardcoded secrets or credentials.
  • Error messages do not leak internal details.
  • Documentation updated.

@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

📊 Code coverage

Component Lines Threshold Status Δ vs base
Backend (nyxid) 87.55% 73% ✅ 🔺 +0.02
Frontend (vitest) 71.89% 15% ✅ 🔺 +0.02

Gate: line coverage must stay at or above the threshold. Ratchet plan (W21): Backend → 55%, CLI → 50%, Frontend → 30% by quarter end.

@ctkm-aelf
ctkm-aelf merged commit 89257aa into main Oct 2, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant