1
0
Fork 0
mirror of https://github.com/arangodb/kube-arangodb.git synced 2024-12-14 11:57:37 +00:00

[Bugfix] Prevent deployment removal in case of invalid K8S API response (#1063)

This commit is contained in:
Adam Janikowski 2022-07-18 23:49:57 +02:00 committed by ajanikow
parent 4e5015a2e5
commit 72a6535191
No known key found for this signature in database
GPG key ID: E578815B948988B6
4 changed files with 5 additions and 16 deletions

View file

@ -10,6 +10,7 @@
- (Feature) Add 'crd install' subcommand
- (Bugfix) Fix `internal` metrics mode
- (Bugfix) Create agency dump if auth is disabled
- (Bugfix) Prevent deployment removal in case of invalid K8S API response
## [1.2.14](https://github.com/arangodb/kube-arangodb/tree/1.2.14) (2022-07-14)
- (Feature) Add ArangoSync TLS based rotation

View file

@ -293,9 +293,9 @@ func (d *Deployment) Update(apiObject *api.ArangoDeployment) {
})
}
// Delete the deployment.
// Stop the deployment.
// Called when the deployment was deleted by the user.
func (d *Deployment) Delete() {
func (d *Deployment) Stop() {
d.log.Info("deployment is deleted by user")
if atomic.CompareAndSwapInt32(&d.stopped, 0, 1) {
close(d.stopCh)
@ -359,18 +359,6 @@ func (d *Deployment) run() {
for {
select {
case <-d.stopCh:
err := d.acs.CurrentClusterCache().Refresh(context.Background())
if err != nil {
log.Err(err).Error("Unable to get resources")
}
// Remove finalizers from created resources
log.Info("Deployment removed, removing finalizers to prevent orphaned resources")
if _, err := d.removePodFinalizers(context.TODO(), d.GetCachedStatus()); err != nil {
log.Err(err).Warn("Failed to remove Pod finalizers")
}
if _, err := d.removePVCFinalizers(context.TODO(), d.GetCachedStatus()); err != nil {
log.Err(err).Warn("Failed to remove PVC finalizers")
}
// We're being stopped.
return

View file

@ -74,7 +74,7 @@ func (d *Deployment) inspectDeployment(lastInterval util.Interval) util.Interval
if k8sutil.IsNotFound(err) {
// Deployment is gone
d.log.Info("Deployment is gone")
d.Delete()
d.Stop()
return nextInterval
} else if updated != nil && updated.GetDeletionTimestamp() != nil {
// Deployment is marked for deletion

View file

@ -185,7 +185,7 @@ func (o *Operator) handleDeploymentEvent(event *Event) error {
if !ok {
return errors.WithStack(errors.Newf("unsafe state. deployment (%s) was never created but we received event (%s)", apiObject.Name, event.Type))
}
depl.Delete()
depl.Stop()
delete(o.deployments, apiObject.Name)
deploymentsDeleted.Inc()
deploymentsCurrent.Set(float64(len(o.deployments)))