From 92388ffeb7c2c100f2f3e8950cb6ceb5d71d894e Mon Sep 17 00:00:00 2001 From: Shubham Pampattiwar Date: Thu, 18 Jul 2024 13:33:57 -0700 Subject: [PATCH] use resource timeout server arg Signed-off-by: Shubham Pampattiwar --- pkg/cmd/server/server.go | 4 +- .../restore_finalizer_controller.go | 72 +++++++++---------- 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/pkg/cmd/server/server.go b/pkg/cmd/server/server.go index 73c956ee2c..d8938ca56f 100644 --- a/pkg/cmd/server/server.go +++ b/pkg/cmd/server/server.go @@ -133,7 +133,6 @@ type serverConfig struct { repoMaintenanceFrequency time.Duration garbageCollectionFrequency time.Duration itemOperationSyncFrequency time.Duration - pvPatchMaximumDuration time.Duration defaultVolumesToFsBackup bool uploaderType string maxConcurrentK8SConnections int @@ -240,7 +239,6 @@ func NewCommand(f client.Factory) *cobra.Command { command.Flags().DurationVar(&config.repoMaintenanceFrequency, "default-repo-maintain-frequency", config.repoMaintenanceFrequency, "How often 'maintain' is run for backup repositories by default.") command.Flags().DurationVar(&config.garbageCollectionFrequency, "garbage-collection-frequency", config.garbageCollectionFrequency, "How often garbage collection is run for expired backups.") command.Flags().DurationVar(&config.itemOperationSyncFrequency, "item-operation-sync-frequency", config.itemOperationSyncFrequency, "How often to check status on backup/restore operations after backup/restore processing. Default is 10 seconds") - command.Flags().DurationVar(&config.pvPatchMaximumDuration, "pv-patch-maximum-duration", config.pvPatchMaximumDuration, "How long to wait for the process of restoring custom settings on a new dynamically provisioned Persistent Volume. Default is 10 minutes") command.Flags().BoolVar(&config.defaultVolumesToFsBackup, "default-volumes-to-fs-backup", config.defaultVolumesToFsBackup, "Backup all volumes with pod volume file system backup by default.") command.Flags().StringVar(&config.uploaderType, "uploader-type", config.uploaderType, "Type of uploader to handle the transfer of data of pod volumes") command.Flags().DurationVar(&config.defaultItemOperationTimeout, "default-item-operation-timeout", config.defaultItemOperationTimeout, "How long to wait on asynchronous BackupItemActions and RestoreItemActions to complete before timing out. Default is 4 hours") @@ -1024,7 +1022,7 @@ func (s *server) runControllers(defaultVolumeSnapshotLocations map[string]string s.metrics, s.crClient, multiHookTracker, - s.config.pvPatchMaximumDuration, + s.config.resourceTimeout, ).SetupWithManager(s.mgr); err != nil { s.logger.Fatal(err, "unable to create controller", "controller", controller.RestoreFinalizer) } diff --git a/pkg/controller/restore_finalizer_controller.go b/pkg/controller/restore_finalizer_controller.go index 2a2ff016d5..a7095c33c4 100644 --- a/pkg/controller/restore_finalizer_controller.go +++ b/pkg/controller/restore_finalizer_controller.go @@ -51,15 +51,15 @@ const ( type restoreFinalizerReconciler struct { client.Client - namespace string - logger logrus.FieldLogger - newPluginManager func(logger logrus.FieldLogger) clientmgmt.Manager - backupStoreGetter persistence.ObjectBackupStoreGetter - metrics *metrics.ServerMetrics - clock clock.WithTickerAndDelayedExecution - crClient client.Client - multiHookTracker *hook.MultiHookTracker - pvPatchMaximumDuration time.Duration + namespace string + logger logrus.FieldLogger + newPluginManager func(logger logrus.FieldLogger) clientmgmt.Manager + backupStoreGetter persistence.ObjectBackupStoreGetter + metrics *metrics.ServerMetrics + clock clock.WithTickerAndDelayedExecution + crClient client.Client + multiHookTracker *hook.MultiHookTracker + resourceTimeout time.Duration } func NewRestoreFinalizerReconciler( @@ -71,19 +71,19 @@ func NewRestoreFinalizerReconciler( metrics *metrics.ServerMetrics, crClient client.Client, multiHookTracker *hook.MultiHookTracker, - pvPatchMaximumDuration time.Duration, + resourceTimeout time.Duration, ) *restoreFinalizerReconciler { return &restoreFinalizerReconciler{ - Client: client, - logger: logger, - namespace: namespace, - newPluginManager: newPluginManager, - backupStoreGetter: backupStoreGetter, - metrics: metrics, - clock: &clock.RealClock{}, - crClient: crClient, - multiHookTracker: multiHookTracker, - pvPatchMaximumDuration: pvPatchMaximumDuration, + Client: client, + logger: logger, + namespace: namespace, + newPluginManager: newPluginManager, + backupStoreGetter: backupStoreGetter, + metrics: metrics, + clock: &clock.RealClock{}, + crClient: crClient, + multiHookTracker: multiHookTracker, + resourceTimeout: resourceTimeout, } } @@ -160,13 +160,13 @@ func (r *restoreFinalizerReconciler) Reconcile(ctx context.Context, req ctrl.Req restoredPVCList := volume.RestoredPVCFromRestoredResourceList(restoredResourceList) finalizerCtx := &finalizerContext{ - logger: log, - restore: restore, - crClient: r.crClient, - volumeInfo: volumeInfo, - restoredPVCList: restoredPVCList, - multiHookTracker: r.multiHookTracker, - pvPatchMaximumDuration: r.pvPatchMaximumDuration, + logger: log, + restore: restore, + crClient: r.crClient, + volumeInfo: volumeInfo, + restoredPVCList: restoredPVCList, + multiHookTracker: r.multiHookTracker, + resourceTimeout: r.resourceTimeout, } warnings, errs := finalizerCtx.execute() @@ -244,13 +244,13 @@ func (r *restoreFinalizerReconciler) finishProcessing(restorePhase velerov1api.R // finalizerContext includes all the dependencies required by finalization tasks and // a function execute() to orderly implement task logic. type finalizerContext struct { - logger logrus.FieldLogger - restore *velerov1api.Restore - crClient client.Client - volumeInfo []*volume.BackupVolumeInfo - restoredPVCList map[string]struct{} - multiHookTracker *hook.MultiHookTracker - pvPatchMaximumDuration time.Duration + logger logrus.FieldLogger + restore *velerov1api.Restore + crClient client.Client + volumeInfo []*volume.BackupVolumeInfo + restoredPVCList map[string]struct{} + multiHookTracker *hook.MultiHookTracker + resourceTimeout time.Duration } func (ctx *finalizerContext) execute() (results.Result, results.Result) { //nolint:unparam //temporarily ignore the lint report: result 0 is always nil (unparam) @@ -275,8 +275,8 @@ func (ctx *finalizerContext) patchDynamicPVWithVolumeInfo() (errs results.Result var resultLock sync.Mutex var pvPatchTimeout = PVPatchMaximumDuration - if ctx.pvPatchMaximumDuration > 0 { - pvPatchTimeout = ctx.pvPatchMaximumDuration + if ctx.resourceTimeout > 0 { + pvPatchTimeout = ctx.resourceTimeout } maxConcurrency := 3