Curling a pod with failed readinessProbe should not hang
- Dominant language
- Go
- Stars
- 6.1k
- Forks
- 1.2k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 2
Description
## What version of Knative?
all recent versions
## Expected Behavior
Curling a pod with a readiness probe set (with periodSeconds=0 to avoid the behaviour in https://github.com/knative/serving/issues/10764), should either error immediately or succeed due to us scaling things up / terminating the pod (needs discussion about what the right behaviour is!).
## Actual Behavior
Curling a pod with a failed readiness check hangs (unless there are other scaled-up pods for the request). The pod is never killed, because there is no liveness probe, but the set of routable pods is empty. In upstream k8s you would get a "no healthy upstream" error, in knative your curl hangs 😢.
## Steps to Reproduce the Problem
1. `ko apply -f https://github.com/julz/readybutnotsteady/blob/main/service-no-period.yaml`
1. Wait for startup to succeed
1. `curl readynotsteady.default.$domain/start-failing`
1. Wait a few seconds for the pod to go unready
1. `curl readynotsteady.default.$domain` (hangs).
Contributor guide
Research direction
Apply service-no-period.yaml from the readybutnotsteady reproduction, wait for startup, trigger /start-failing, and then curl the service after the pod becomes unready. Trace how the request is handled when no routable pods remain; done means the request either fails immediately or succeeds according to the behavior agreed by the maintainers.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100