Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Connection pool follow-ups (#67): async min_idle is inert; hooks/timeouts untested

Open
#177 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust
Domain
backend, database

Research direction

Start in hyperdb-api/src/pool.rs, especially PoolConfig::min_idle, the async Manager::recycle path, and the sync should_evict implementation. Compare the async and sync pool behavior, then review deadpool's lifecycle hooks and timeouts. Done means choosing how async min_idle should behave or removing it, and adding coverage for hooks, timeout firing, and async contention.

Written by the indexing model from the issue text.

Description

Summary

Follow-ups from the connection-pool work for #67. The feature is functional and additive, but two areas are intentionally noted as not-yet-complete so they aren't mistaken for finished:

  1. PoolConfig::min_idle is inert on the async pool. The field is stored and has a builder (hyperdb-api/src/pool.rs:223, :371), but the async eviction path — deadpool's per-connection Manager::recycle — only consults max_lifetime and idle_timeout; it never reads min_idle. A per-connection recycle callback has no view of the pool-wide idle/live count, so it cannot enforce a warm-connection floor. min_idle is honored only by the sync pool's should_evict (hyperdb-api/src/pool.rs:837-838). So an async caller setting min_idle currently gets a no-op knob.

    Options: either implement a pool-wide min_idle floor for the async pool (likely needs a pool-level hook rather than the per-connection recycle callback), or drop min_idle from the async PoolConfig so the surface matches behavior.

  2. Untested surfaces. A few public paths have no integration-test coverage yet:

    • after_connect / before_acquire lifecycle hooks (only RecycleStrategy::Custom, the recycle probe, is exercised).
    • create_timeout and recycle_timeout firing — they are plumbed into deadpool's Timeouts, but only wait_timeout firing is proven by a test.
    • The async pool has no concurrency/contention test (the sync pool does).
Why file this

These were surfaced by an adversarial fact-check of the feature's PR description and are documented as known limitations there. Filing so they're tracked rather than silently assumed complete. Neither blocks the additive feature from landing.

Notes

Line references are against the #67 feature branch; they may shift if the branch is rebased before merge.

Dominant language
Rust
Stars
2
Forks
2
Avg merge
12h 2m
Merged PRs (30d)
60

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from tableau/hyper-api-rust

All issues in tableau/hyper-api-rust

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.