cloudnative-pg / cloudnative-pg/plugin-barman-cloud

When using external clusters, but external ObjectStore is missing, logs complain about missing ObjectStore for backups

Open
#504 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Go
Stars
191
Forks
72
Avg merge
1d 16h
Merged PRs (30d)
18

Description

I tried to restore from an external cluster.

For this I created 2 ObjectStore objects: `s3-postgres-backup` and `old-s3`.
I added `s3-postgres-backup` into `.spec.plugins.parameters.barmanObjectName` section, and `old-s3` into `.spec.externalClusters.plugin.parameters.barmanObjectName`.

Here is my Cluster object for reference:

```yaml
---
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: pg-test
namespace: test
spec:
instances: 2
storage:
size: 2Gi
storageClass: tulip-nvmeof
primaryUpdateStrategy: unsupervised
postgresql: {}
bootstrap:
recovery:
source: old
externalClusters:
- name: old
plugin:
name: barman-cloud.cloudnative-pg.io
parameters:
barmanObjectName: s3-old
serverName: test-cnpg
managed:
services:
disabledDefaultServices: ["ro", "r"]
affinity:
enablePodAntiAffinity: true
podAntiAffinityType: required
topologyKey: kubernetes.io/hostname
plugins:
- name: barman-cloud.cloudnative-pg.io
isWALArchiver: true
parameters:
barmanObjectName: s3-postgres-backup
```

Except, as you may notice, I made a mistake in `.spec.externalClusters.plugin.parameters.barmanObjectName`: I wrote "s3-old" instead of "old-s3".
Cluster failed to start becaue Barman couldn't find the ObjectStore.

Unfortunately, it was very hard to find the mistake because Barman repeatedly emitted logs about "s3-postgres-backup" missing.
I couldn't understand what was happening, until I accidentally discovered that the issue is in a completely different ObjectStore.

```
{"level":"info","ts":"2025-08-31T10:18:03.018676926Z","msg":"Pre hook reconciliation start"}
{"level":"debug","ts":"2025-08-31T10:18:03.018848066Z","msg":"parsing cluster definition","caller":"/workspace/internal/cnpgi/operator/reconciler.go:61"}
{"level":"debug","ts":"2025-08-31T10:18:03.019179367Z","msg":"parsing barman object configuration","name":"pg-test","namespace":"test","caller":"/workspace/internal/cnpgi/operator/reconciler.go:75"}
{"level":"info","ts":"2025-08-31T10:18:03.019225014Z","msg":"barman object configuration not found, requeuing","name":"pg-test","namespace":"test","name":"s3-postgres-backup","namespace":"test"}
```

Barman plugin version: v0.6.0

Contributor guide

Open the contributing guide

Research direction

Start in internal/cnpgi/operator/reconciler.go, especially the reconciliation and logging paths around lines 61 and 75. Reproduce the recovery configuration with a missing external-cluster ObjectStore and verify that the logs identify the missing object; done means the error points to the incorrect external ObjectStore rather than the primary backup ObjectStore.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes, postgresql
Domain
backend, databases, observability
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.