Skip to content

fix(ci): resolve daemon test interference on macOS/Windows and disable release-please#28

Merged
StefanSteiner merged 2 commits into
tableau:mainfrom
StefanSteiner:ssteiner/fix-pr-26
May 25, 2026
Merged

fix(ci): resolve daemon test interference on macOS/Windows and disable release-please#28
StefanSteiner merged 2 commits into
tableau:mainfrom
StefanSteiner:ssteiner/fix-pr-26

Conversation

@StefanSteiner

Copy link
Copy Markdown
Contributor

Summary

Fixes CI failures on macOS and Windows introduced by the single-instance daemon PR (#26), and temporarily disables release-please until the current feature work is complete.

  • Mac (daemon_tests): daemon_mode_two_engines_share_same_hyperd asserted exact endpoint equality between two engines, but the daemon's liveness monitor can restart hyperd between Engine::new calls (giving a new port). Changed the assertion to verify both engines are in daemon mode and the daemon is reachable. Additionally, the panic poisoned the shared ENV_LOCK mutex, cascading failures to all 10 subsequent tests. Added acquire_env_lock() that recovers from poison via unwrap_or_else(PoisonError::into_inner).

  • Windows (saved_queries_tests): server_workspace_store_exposes_saved_queries_via_resources used Engine::new / HyperMcpServer::new which attempt daemon discovery. When daemon_tests run in parallel and leave a daemon alive, other test files inadvertently connect through it — causing "database still in use" errors on Windows (Hyper's file-locking semantics differ cross-platform). Switched all non-daemon test files to Engine::new_no_daemon / HyperMcpServer::with_no_daemon so they spawn isolated hyperd processes and cannot interfere with the daemon test suite.

  • Release-please disabled: Added if: false guard to the release-please workflow job. Re-enable by removing the false && prefix when ready to cut the next release.

Test plan

  • cargo test -p hyperdb-mcp --test daemon_tests — 35/35 pass
  • cargo test -p hyperdb-mcp --test saved_queries_tests — 13/13 pass
  • cargo test -p hyperdb-mcp --test resource_tests — 11/11 pass
  • cargo test -p hyperdb-mcp --test table_catalog_tests — 16/16 pass
  • cargo test -p hyperdb-mcp — full suite green
  • cargo clippy --workspace --tests -- -D warnings — clean
  • cargo fmt --check — clean

…n CI

Two issues caused post-merge CI failures on macOS and Windows:

1. daemon_mode_two_engines_share_same_hyperd asserted exact endpoint
   equality, but the daemon's liveness monitor can restart hyperd
   between Engine::new calls. The panic poisoned ENV_LOCK, cascading
   to all subsequent tests. Fixed by relaxing the assertion and
   recovering from mutex poison via unwrap_or_else(into_inner).

2. Non-daemon test files used Engine::new / HyperMcpServer::new which
   attempt daemon discovery. When daemon_tests leave a daemon alive in
   the same cargo-test process, other tests connect through it — causing
   "database still in use" errors on Windows. Switched all non-daemon
   tests to new_no_daemon / with_no_daemon for isolation.
@StefanSteiner StefanSteiner merged commit 51fc9fe into tableau:main May 25, 2026
10 checks passed
This was referenced May 26, 2026
@StefanSteiner StefanSteiner deleted the ssteiner/fix-pr-26 branch June 4, 2026 07:27
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