Avoid orphaned objects on delete (#654)
* Make setSpec function work correctly when updating cluster status fails
This commit is contained in:
parent
fd6a2454e8
commit
4a863d2280
|
|
@ -164,11 +164,13 @@ func (c *Cluster) setStatus(status string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// we cannot do a full scale update here without fetching the previous manifest (as the resourceVersion may differ),
|
// we cannot do a full scale update here without fetching the previous manifest (as the resourceVersion may differ),
|
||||||
// however, we could do patch without it. In the future, once /status subresource is there (starting Kubernets 1.11)
|
// however, we could do patch without it. In the future, once /status subresource is there (starting Kubernetes 1.11)
|
||||||
// we should take advantage of it.
|
// we should take advantage of it.
|
||||||
newspec, err := c.KubeClient.AcidV1ClientSet.AcidV1().Postgresqls(c.clusterNamespace()).Patch(c.Name, types.MergePatchType, patch, "status")
|
newspec, err := c.KubeClient.AcidV1ClientSet.AcidV1().Postgresqls(c.clusterNamespace()).Patch(c.Name, types.MergePatchType, patch, "status")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.logger.Errorf("could not update status: %v", err)
|
c.logger.Errorf("could not update status: %v", err)
|
||||||
|
// return as newspec is empty, see PR654
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// update the spec, maintaining the new resourceVersion.
|
// update the spec, maintaining the new resourceVersion.
|
||||||
c.setSpec(newspec)
|
c.setSpec(newspec)
|
||||||
|
|
|
||||||
|
|
@ -365,7 +365,7 @@ func (c *Cluster) waitStatefulsetPodsReady() error {
|
||||||
c.setProcessName("waiting for the pods of the statefulset")
|
c.setProcessName("waiting for the pods of the statefulset")
|
||||||
// TODO: wait for the first Pod only
|
// TODO: wait for the first Pod only
|
||||||
if err := c.waitStatefulsetReady(); err != nil {
|
if err := c.waitStatefulsetReady(); err != nil {
|
||||||
return fmt.Errorf("statuful set error: %v", err)
|
return fmt.Errorf("stateful set error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: wait only for master
|
// TODO: wait only for master
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ func ResourceNotFound(err error) bool {
|
||||||
return apierrors.IsNotFound(err)
|
return apierrors.IsNotFound(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewFromConfig create Kubernets Interface using REST config
|
// NewFromConfig create Kubernetes Interface using REST config
|
||||||
func NewFromConfig(cfg *rest.Config) (KubernetesClient, error) {
|
func NewFromConfig(cfg *rest.Config) (KubernetesClient, error) {
|
||||||
kubeClient := KubernetesClient{}
|
kubeClient := KubernetesClient{}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue