Document how a Kubernetes-style liveness probe may be implemented #309
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.
Due to a bug in rdkafka, sometimes consumers stop processing one or more assigned partitions. That sort of issue is not detectable through a consumer-wide liveness check because an individual consumer may keep making progress in some but not all assigned partitions.
In a system owned by me, I tried to leverage consumer rebalance listeners (via monkey patching) to introduce a liveness probe that is able to detect lack of progress in individual partition.
The core idea is that the progress in each partition is tracked through the timestamp of some specific files and a Kubernetes liveness probe checks their age. After some failures (defined in the probe), the Kubernetes pod is marked as unhealthy by the probe and automatically restarted, which fixes the issue.
In more detail:
on_partitions_revoked
handler but ordering could cause issues; the simpler, blunt approach I documented is simpler and works correctly in practiceThis required adding some basic support for registering a consumer rebalance listener, which in the system I own is actually implemented through a monkey-patch.
/cc @jbdietrich