Closed EronWright closed 5 days ago
Attention: Patch coverage is 16.66667%
with 135 lines
in your changes missing coverage. Please review.
Project coverage is 51.20%. Comparing base (
7883699
) to head (0c4e8cb
). Report is 1 commits behind head on v2.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Proposed changes
This PR optimizes the watches to reduce the likelihood of a race between the cache and the reconciliation loop.
The general idea is to use predicates to filter on the 'edge' events that would allow the reconciler to make forward progress. For example, the workspace reconciler applies a StatefulSet, then waits for it to be ready. Only when the StatefulSet is indeed ready should reconciliation be queued. Before this PR, the watch on StatefulSet was triggering upon any revision change (way too eager).
Overall, a number of optimizations were implemented:
Also, some debug statements were introduced to reason about the revision changes over time, since the "conflicts" are detected based on revision. In particular, we emit a debug statement when reconciliation is triggered by a given watch, to understand 'why'.
Related issues (optional)
Closes #700 Supercedes https://github.com/pulumi/pulumi-kubernetes-operator/pull/679
Example
Here's the result of applying operator/examples/random-yaml/stack.yaml.
Before
After