Describe the feature
Please reconcile to a ConditionReady to ConditionFalse only when it's clear that multi-reconcile action fails overall. The use case is when a user creates a Service then multiple other dependency resources are created in parallel, like a Route and a Revision. However, the route can be only ready when the revision is ready, so there is the chance of a race. Currently, when the route can't find the referenced revision because of this race, the overall Service goes from ConditionUnknown to ConditionFalse for the ready condition, but switches to ConditionTrue as soon as the revision is ready and the route is reconciled.
This confuses clients who are waiting synchronously on a service creation (or update) and return immediately with "ok" for a transition unknown -> true, or an error for unknown -> false. In the situation above this would falsely detect an error as the overall action very quickly reconciles to ready == true (but with the temporary false state).
For the Knative client, this caused a 50% flake in the E2E tests which is solved now by introducing an error window to wait on an eventual true ready state.
It would be very helpful also for other clients if exercising this kind of patience on the server-side, so that the first transition to false indicates the error of a combined reconciliation step.
// cc: @dprotaso @evankanderson
Describe the feature
Please reconcile to a
ConditionReadytoConditionFalseonly when it's clear that multi-reconcile action fails overall. The use case is when a user creates aServicethen multiple other dependency resources are created in parallel, like aRouteand aRevision. However, the route can be only ready when the revision is ready, so there is the chance of a race. Currently, when the route can't find the referenced revision because of this race, the overallServicegoes fromConditionUnknowntoConditionFalsefor the ready condition, but switches toConditionTrueas soon as the revision is ready and the route is reconciled.This confuses clients who are waiting synchronously on a service creation (or update) and return immediately with "ok" for a transition
unknown -> true, or an error forunknown -> false. In the situation above this would falsely detect an error as the overall action very quickly reconciles toready == true(but with the temporary false state).For the Knative client, this caused a 50% flake in the E2E tests which is solved now by introducing an error window to wait on an eventual
trueready state.It would be very helpful also for other clients if exercising this kind of patience on the server-side, so that the first transition to
falseindicates the error of a combined reconciliation step.// cc: @dprotaso @evankanderson