Merge pull request #6041 from sseago/async-backup-deletion
Fixed backup deletion bug related to async operationspull/6057/head
commit
b428b09a78
|
@ -0,0 +1 @@
|
||||||
|
Fixed backup deletion bug related to async operations
|
|
@ -803,6 +803,7 @@ func (s *server) runControllers(defaultVolumeSnapshotLocations map[string]string
|
||||||
clock.RealClock{},
|
clock.RealClock{},
|
||||||
backupper,
|
backupper,
|
||||||
newPluginManager,
|
newPluginManager,
|
||||||
|
backupTracker,
|
||||||
backupStoreGetter,
|
backupStoreGetter,
|
||||||
s.logger,
|
s.logger,
|
||||||
s.metrics,
|
s.metrics,
|
||||||
|
|
|
@ -267,7 +267,12 @@ func (b *backupReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
|
||||||
}
|
}
|
||||||
|
|
||||||
b.backupTracker.Add(request.Namespace, request.Name)
|
b.backupTracker.Add(request.Namespace, request.Name)
|
||||||
defer b.backupTracker.Delete(request.Namespace, request.Name)
|
defer func() {
|
||||||
|
switch request.Status.Phase {
|
||||||
|
case velerov1api.BackupPhaseCompleted, velerov1api.BackupPhasePartiallyFailed, velerov1api.BackupPhaseFailed, velerov1api.BackupPhaseFailedValidation:
|
||||||
|
b.backupTracker.Delete(request.Namespace, request.Name)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
log.Debug("Running backup")
|
log.Debug("Running backup")
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ type backupFinalizerReconciler struct {
|
||||||
clock clocks.WithTickerAndDelayedExecution
|
clock clocks.WithTickerAndDelayedExecution
|
||||||
backupper pkgbackup.Backupper
|
backupper pkgbackup.Backupper
|
||||||
newPluginManager func(logrus.FieldLogger) clientmgmt.Manager
|
newPluginManager func(logrus.FieldLogger) clientmgmt.Manager
|
||||||
|
backupTracker BackupTracker
|
||||||
metrics *metrics.ServerMetrics
|
metrics *metrics.ServerMetrics
|
||||||
backupStoreGetter persistence.ObjectBackupStoreGetter
|
backupStoreGetter persistence.ObjectBackupStoreGetter
|
||||||
log logrus.FieldLogger
|
log logrus.FieldLogger
|
||||||
|
@ -55,6 +56,7 @@ func NewBackupFinalizerReconciler(
|
||||||
clock clocks.WithTickerAndDelayedExecution,
|
clock clocks.WithTickerAndDelayedExecution,
|
||||||
backupper pkgbackup.Backupper,
|
backupper pkgbackup.Backupper,
|
||||||
newPluginManager func(logrus.FieldLogger) clientmgmt.Manager,
|
newPluginManager func(logrus.FieldLogger) clientmgmt.Manager,
|
||||||
|
backupTracker BackupTracker,
|
||||||
backupStoreGetter persistence.ObjectBackupStoreGetter,
|
backupStoreGetter persistence.ObjectBackupStoreGetter,
|
||||||
log logrus.FieldLogger,
|
log logrus.FieldLogger,
|
||||||
metrics *metrics.ServerMetrics,
|
metrics *metrics.ServerMetrics,
|
||||||
|
@ -64,6 +66,7 @@ func NewBackupFinalizerReconciler(
|
||||||
clock: clock,
|
clock: clock,
|
||||||
backupper: backupper,
|
backupper: backupper,
|
||||||
newPluginManager: newPluginManager,
|
newPluginManager: newPluginManager,
|
||||||
|
backupTracker: backupTracker,
|
||||||
backupStoreGetter: backupStoreGetter,
|
backupStoreGetter: backupStoreGetter,
|
||||||
log: log,
|
log: log,
|
||||||
metrics: metrics,
|
metrics: metrics,
|
||||||
|
@ -102,6 +105,10 @@ func (r *backupFinalizerReconciler) Reconcile(ctx context.Context, req ctrl.Requ
|
||||||
|
|
||||||
original := backup.DeepCopy()
|
original := backup.DeepCopy()
|
||||||
defer func() {
|
defer func() {
|
||||||
|
switch backup.Status.Phase {
|
||||||
|
case velerov1api.BackupPhaseCompleted, velerov1api.BackupPhasePartiallyFailed, velerov1api.BackupPhaseFailed, velerov1api.BackupPhaseFailedValidation:
|
||||||
|
r.backupTracker.Delete(backup.Namespace, backup.Name)
|
||||||
|
}
|
||||||
// Always attempt to Patch the backup object and status after each reconciliation.
|
// Always attempt to Patch the backup object and status after each reconciliation.
|
||||||
if err := r.client.Patch(ctx, backup, kbclient.MergeFrom(original)); err != nil {
|
if err := r.client.Patch(ctx, backup, kbclient.MergeFrom(original)); err != nil {
|
||||||
log.WithError(err).Error("Error updating backup")
|
log.WithError(err).Error("Error updating backup")
|
||||||
|
|
|
@ -52,6 +52,7 @@ func mockBackupFinalizerReconciler(fakeClient kbclient.Client, fakeClock *testcl
|
||||||
fakeClock,
|
fakeClock,
|
||||||
backupper,
|
backupper,
|
||||||
func(logrus.FieldLogger) clientmgmt.Manager { return pluginManager },
|
func(logrus.FieldLogger) clientmgmt.Manager { return pluginManager },
|
||||||
|
NewBackupTracker(),
|
||||||
NewFakeSingleObjectBackupStoreGetter(backupStore),
|
NewFakeSingleObjectBackupStoreGetter(backupStore),
|
||||||
logrus.StandardLogger(),
|
logrus.StandardLogger(),
|
||||||
metrics.NewServerMetrics(),
|
metrics.NewServerMetrics(),
|
||||||
|
|
Loading…
Reference in New Issue