Dennis-Mircea Ciupitu created FLINK-41288:
---------------------------------------------

             Summary: Recreating a canary resource leaves duplicate health 
check loops running
                 Key: FLINK-41288
                 URL: https://issues.apache.org/jira/browse/FLINK-41288
             Project: Flink
          Issue Type: Bug
          Components: Kubernetes Operator
            Reporter: Dennis-Mircea Ciupitu


h1. Problem

Deleting a canary resource and creating it again with the same name within 
{{kubernetes.operator.health.canary.resource.timeout}} (e.g. {{kubectl delete 
&& kubectl apply}}, {{kubectl replace --force}}) leaves two health check loops 
running for the same canary. Each further recreate adds one more loop until the 
operator restarts.

Every loop updates the canary spec each period, so the load grows with each 
recreate. A loop can also check right after another loop updated the spec, 
before it was reconciled, and report the canary unhealthy, which can restart a 
healthy operator.

h1. Root cause

The canary state is keyed only by name and namespace, and the scheduled check 
is not cancelled when the state is dropped. When a canary with the same name is 
tracked again before that check runs, the old check picks up the new state and 
keeps running next to the new loop.

The same happens when a namespace is removed from the watched namespaces and 
added back within the timeout.

h1. How to reproduce

{code:bash}
kubectl apply -f examples/canary.yaml
# wait for the first "Scheduling canary check" log
kubectl delete -f examples/canary.yaml && kubectl apply -f examples/canary.yaml
{code}



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to