In the operator-controller upgrade-e2e, we discovered an issue that causes the catalogd controller to leave stale conditions and fields set on a ClusterCatalog after an upgrade.
If a ClusterCatalog is serving and up-to-date prior to an upgrade, and then a catalogd upgrade occurs, the new catalogd sees that "everything looks good", and then immediately returns from reconcile.
Unfortunately everything is not good. In a transition from 0.29.0 to 0.30.0, one example of a thing that we fail to do is change the Unpacked condition type to Serving.
In order to fix this, we need to always be updating the status based on the known state of the catalog, no matter which code path we take through our reconcile function.
In the operator-controller upgrade-e2e, we discovered an issue that causes the catalogd controller to leave stale conditions and fields set on a
ClusterCatalogafter an upgrade.If a
ClusterCatalogis serving and up-to-date prior to an upgrade, and then a catalogd upgrade occurs, the new catalogd sees that "everything looks good", and then immediately returns from reconcile.Unfortunately everything is not good. In a transition from 0.29.0 to 0.30.0, one example of a thing that we fail to do is change the
Unpackedcondition type toServing.In order to fix this, we need to always be updating the status based on the known state of the catalog, no matter which code path we take through our reconcile function.