feat: added configurable connection retries for DB and Redis readiness#214
Conversation
- Introduced redis_isready.py to wait for Redis connection readiness. - Updated main.py to wait for both database and Redis to be ready before proceeding. - Added tests for Redis readiness functionality. Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com>
git add --chmod=+x mcpgateway/utils/redis_isready.py
chmod +x mcpgateway/utils/redis_isready.py`
INFO:db_isready:Probing postgresql at postgres:5432/mcp (timeout=2s, interval=2.0s, max_tries=3) INFO:db_isready:Database ready after 0.01s (attempt 1) INFO:redis_isready:Redis ready (attempt 1) Still missing: Not tested yet:
Fixing lint issues: Issue 2: run_in_executor argument type (pyrefly) |
Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
IBM#214) * feat: add configurable connection retries for DB and Redis readiness - Introduced redis_isready.py to wait for Redis connection readiness. - Updated main.py to wait for both database and Redis to be ready before proceeding. - Added tests for Redis readiness functionality. Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com> * Linting fixes and autoflake etc. Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> * cli entrypoint Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> --------- Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com> Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> Co-authored-by: Mihai Criveti <crivetimihai@gmail.com>
IBM#214) * feat: add configurable connection retries for DB and Redis readiness - Introduced redis_isready.py to wait for Redis connection readiness. - Updated main.py to wait for both database and Redis to be ready before proceeding. - Added tests for Redis readiness functionality. Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com> * Linting fixes and autoflake etc. Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> * cli entrypoint Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> --------- Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com> Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> Co-authored-by: Mihai Criveti <crivetimihai@gmail.com>
IBM#214) * feat: add configurable connection retries for DB and Redis readiness - Introduced redis_isready.py to wait for Redis connection readiness. - Updated main.py to wait for both database and Redis to be ready before proceeding. - Added tests for Redis readiness functionality. Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com> * Linting fixes and autoflake etc. Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> * cli entrypoint Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> --------- Signed-off-by: reevebarreto <reevemarcbarreto@gmail.com> Signed-off-by: Mihai Criveti <crivetimihai@gmail.com> Co-authored-by: Mihai Criveti <crivetimihai@gmail.com>
✨ Feature / Enhancement PR
🔗 Epic / Issue
Closes #179
[Feature Request]: Configurable Connection Retries for DB and Redis
🚀 Summary (1–2 sentences)
Adds configurable connection retry logic for both Redis and the database on application startup. This ensures the services wait for dependencies to be ready, improving robustness during cold starts or in containerized environments.
🧪 Checks
make lintpassesmake testpasses📓 Notes (optional)
redis_isready.py, modeled afterdb_isready.py, to handle Redis readiness.main.pyto call bothwait_for_db_ready()andwait_for_redis_ready()before starting the app.tests/unit/mcpgateway/utils/test_redis_isready.py).flowchart TD A["main.py"] --> B["wait_for_db_ready()"] B --> C["wait_for_redis_ready()"] B -->|ping| D[(Database)] C -->|ping| E[(Redis)]