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

/healthcheck always returns 500 with BACKEND_TYPE=memcache since #1144 (Redis health component starts unhealthy)

Open Beginner friendly
#1,284 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

@ajaykr0905 is already working on this.

Since Oct 23, 2026.

  • #1287 by @ajaykr0905 — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
73/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
go

Research direction

Read src/server/health.go, starting with NewHealthChecker and areAllComponentsHealthy, then trace how the configured backend is selected. Check the health checker tests for Redis and memcache behavior. Done means /healthcheck returns 200 with BACKEND_TYPE=memcache while Redis health remains covered for Redis configurations.

Written by the indexing model from the issue text.

Description

Description

Since commit b8d893f3 ("feat: add retry in init phase instead of panic directly", #1144), the HTTP /healthcheck endpoint returns 500 forever when the service is configured with BACKEND_TYPE=memcache.

In src/server/health.go, NewHealthChecker now initialises the Redis component as unhealthy:

// Redis starts unhealthy; it is marked healthy once the connection is confirmed at startup.
ret.healthMap[RedisHealthComponentName] = false

With the memcache backend, no Redis client is ever created, so nothing calls Ok(RedisHealthComponentName) and the component stays unhealthy. areAllComponentsHealthy therefore never returns true.

Rate limiting itself works fine (the /json endpoint returns correct OK / OVER_LIMIT answers), but any Kubernetes liveness/readiness probe on /healthcheck fails and the pod is restarted in a loop.

Steps to reproduce

  1. Run any image built from b8d893f3 or later (including current master) with:
    • BACKEND_TYPE=memcache
    • MEMCACHE_HOST_PORT=<memcached>:11211
    • a valid config in RUNTIME_ROOT/RUNTIME_SUBDIRECTORY
  2. curl -i http://localhost:8080/healthcheck

Expected: 200 OK
Actual: 500, forever

Bisect

Same config, same memcached, only the image tag changes:

Image tag /healthcheck
58496ffc (2026-05-15) and older 200
b8d893f3 (2026-05-27) 500
every later tag up to current master 500

Suggested fix

Only register / start the Redis health component as unhealthy when the Redis backend is actually used (BACKEND_TYPE=redis), or mark it healthy (or skip it) for other backends such as memcache.

Workaround

Pin the image to 58496ffc.

Dominant language
Go
Stars
2.7k
Forks
548
Avg merge
4d 20h
Merged PRs (30d)
10

Getting set up

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 envoyproxy/ratelimit

All issues in envoyproxy/ratelimit

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.