Fix: on redis error fallback#2
Open
razbroc wants to merge 3 commits into
Open
Conversation
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.
This pull request introduces a fault-tolerant patch for MapProxy's Redis cache backend to improve resilience and prevent tile requests from being stalled by slow or unreachable Redis servers. The patch is applied at build time via the Dockerfile, and several new environment variables are introduced for configuring Redis connection timeouts and TLS support.
Redis cache resilience and configuration:
redis.pyinconfig/patch/redis.pythat makes all Redis cache operations fault-tolerant by catching connection errors and returning a cache miss instead of raising exceptions. This ensures MapProxy can transparently fall back to alternate sources if Redis is unavailable. The patch also adds support for configurable socket and connection timeouts, pool timeouts, and optional TLS via environment variables.Dockerfileto apply the patchedredis.pyat build time using a bind mount, with an option to skip the patch for upstream compatibility testing. The build will abort if the patch fails to apply or import.Environment variable defaults:
Dockerfileto set short Redis socket and connection timeouts, pool timeout, TLS usage, and server certificate requirements. These defaults ensure that slow or unreachable Redis instances do not block tile requests.