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

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

オープン
#504 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Go
スター
191
フォーク
72
平均マージ
2日 21時間
マージ済み PR(30日)
21

説明

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

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

internal/cnpgi/operator/reconciler.go から開始し、特に 61 行目と 75 行目付近の reconciliation パスと logging パスを確認します。外部クラスターの ObjectStore が欠落している状態で recovery 構成を再現し、ログが欠落しているオブジェクトを特定することを確認します。完了条件は、エラーが primary backup ObjectStore ではなく、誤った external ObjectStore を指していることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
go, kubernetes, postgresql
領域
backend, databases, observability
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。