From 63a67cb92023998b44d1d476be5aba2e78d66e8f Mon Sep 17 00:00:00 2001 From: Gabriele Fedi Date: Thu, 9 Apr 2026 15:32:40 +0200 Subject: [PATCH] fix: skip maintenance cycle when plugin is not enabled for backups (#826) Skip the catalog maintenance cycle when the plugin is not configured for backups on the cluster, which happens when the plugin is used for restore only. Closes #774 Signed-off-by: Gabriele Fedi Signed-off-by: Leonardo Cecchi Signed-off-by: Marco Nenciarini Co-authored-by: Leonardo Cecchi Co-authored-by: Marco Nenciarini --- internal/cnpgi/instance/retention.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/cnpgi/instance/retention.go b/internal/cnpgi/instance/retention.go index 372d50e..4176956 100644 --- a/internal/cnpgi/instance/retention.go +++ b/internal/cnpgi/instance/retention.go @@ -81,6 +81,8 @@ func (c *CatalogMaintenanceRunnable) Start(ctx context.Context) error { // cycle enforces the retention policies. On success, it returns the amount // of time to wait to the next check. func (c *CatalogMaintenanceRunnable) cycle(ctx context.Context) (time.Duration, error) { + contextLogger := log.FromContext(ctx) + var cluster cnpgv1.Cluster var barmanObjectStore barmancloudv1.ObjectStore @@ -88,7 +90,17 @@ func (c *CatalogMaintenanceRunnable) cycle(ctx context.Context) (time.Duration, return 0, err } + enabledPlugins := cnpgv1.GetPluginConfigurationEnabledPluginNames(cluster.Spec.Plugins) + if !slices.Contains(enabledPlugins, metadata.PluginName) { + contextLogger.Debug("Skipping maintenance cycle: plugin is not enabled for backups") + return 0, nil + } + configuration := config.NewFromCluster(&cluster) + if configuration == nil || len(configuration.BarmanObjectName) == 0 { + return 0, fmt.Errorf("invalid configuration, missing barman object store reference") + } + if err := c.Client.Get(ctx, configuration.GetBarmanObjectKey(), &barmanObjectStore); err != nil { return 0, err }