Implement graceful shutdown and enhance health check endpoint - #223
Merged
mnindrazaka merged 1 commit intoJul 29, 2026
Merged
Conversation
Replace http.ListenAndServe with an http.Server so SIGTERM/SIGINT drain
in-flight requests via srv.Shutdown on a 30s budget instead of dropping
connections instantly. Add ReadHeaderTimeout/ReadTimeout/WriteTimeout/
IdleTimeout so the process behaves as a well-behaved long-lived host
citizen under systemd.
Add BIND_ADDR (default "", all interfaces) so production can bind
127.0.0.1 behind Caddy while local dev is unchanged.
Extend GET /health-check to return JSON {status,version,commit,
uptime_seconds} driven by pkg/buildinfo, which the release script's
version gate depends on.
Also fix TestRentalHandler_CheckoutRentals/success, which was missing
a GetVariantById mock expectation added by a prior change to
RentalUsecase.CheckoutRentals and was failing pre-commit for every
commit on this branch.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015MeZdpNcuQKqDPttgehybp
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
This PR improves the API server's reliability and observability by implementing graceful shutdown handling and enhancing the health check endpoint with detailed server information.
Key Changes
http.ListenAndServe()with a properly configuredhttp.Serverthat handles OS signals (SIGINT, SIGTERM) and drains in-flight requests with a 30-second timeout before shutdownHealthHandlerstruct that returns JSON with server status, version, commit hash, and uptimeBIND_ADDRenvironment variable to allow binding to specific network interfaces (useful for production deployments behind reverse proxies)Implementation Details
uptime_secondscalculated from server start timehttps://claude.ai/code/session_015MeZdpNcuQKqDPttgehybp