[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#990723: marked as done (unblock: barman/2.12-2)



Your message dated Tue, 06 Jul 2021 16:54:14 +0000
with message-id <E1m0oKs-0006Dn-4K@respighi.debian.org>
and subject line unblock barman
has caused the Debian Bug report #990723,
regarding unblock: barman/2.12-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
990723: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990723
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package barman

[ Reason ]
The existing package does not support PG13 and users will have a hard
time actually restoring backups from archive.

[ Tests ]
The upstream git repository does contain tests, but the shipped
tarball does not. I have no idea why they thought this is a good idea,
and I'm only fixing this since Marco seems unavailable.

The fix has been confirmed to work upstream and the diff looks sane.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

unblock barman/2.12-2

Thanks,
Christoph
No differences were encountered between the control files

diff -Nru barman-2.12/debian/changelog barman-2.12/debian/changelog
--- barman-2.12/debian/changelog	2020-11-04 10:39:52.000000000 +0100
+++ barman-2.12/debian/changelog	2021-07-05 17:59:18.000000000 +0200
@@ -1,3 +1,10 @@
+barman (2.12-2) unstable; urgency=medium
+
+  * Team upload.
+  * PG 13 expects wal_keep_size, not wal_keep_segments. (Closes: #990304)
+
+ -- Christoph Berg <myon@debian.org>  Mon, 05 Jul 2021 17:59:18 +0200
+
 barman (2.12-1) unstable; urgency=medium
 
   * New upstream version 2.12
diff -Nru barman-2.12/debian/patches/pg13 barman-2.12/debian/patches/pg13
--- barman-2.12/debian/patches/pg13	1970-01-01 01:00:00.000000000 +0100
+++ barman-2.12/debian/patches/pg13	2021-07-05 17:59:14.000000000 +0200
@@ -0,0 +1,125 @@
+commit 45ccd9d2f315ec208eee778eba1333c0aa4a4460
+Author: Abhijit Menon-Sen <ams@2ndQuadrant.com>
+Date:   Wed Jan 20 19:47:37 2021 +0530
+
+    Fetch wal_keep_size, not wal_keep_segments, from Postgres 13
+    
+    The `wal_keep_segments` parameter introduced in v9.0 was replaced with
+    `wal_keep_size` in v13. Running Barman against Postgres 13 resulted in
+    errors like the following being logged:
+    
+        barman ERROR:  unrecognized configuration parameter "wal_keep_segments"
+        barman STATEMENT:  SHOW "wal_keep_segments"
+    
+    Here we change fetch_remote_status() to ask for wal_keep_size if the
+    server version is >= 13. We didn't use this value anywhere, so we don't
+    need any further changes to adapt to the different return value.
+    
+    Signed-off-by: Abhijit Menon-Sen <ams@2ndQuadrant.com>
+
+diff --git a/barman/postgres.py b/barman/postgres.py
+index 2414f77..6664620 100644
+--- a/barman/postgres.py
++++ b/barman/postgres.py
+@@ -827,7 +827,12 @@ class PostgreSQLConnection(PostgreSQL):
+                 pg_settings.append('wal_level')
+                 pg_settings.append('hot_standby')
+                 pg_settings.append('max_wal_senders')
+-                pg_settings.append('wal_keep_segments')
++                # Retrieve wal_keep_segments from version 9.0 onwards, until
++                # version 13.0, where it was renamed to wal_keep_size
++                if self.server_version < 130000:
++                    pg_settings.append('wal_keep_segments')
++                else:
++                    pg_settings.append('wal_keep_size')
+ 
+             if self.server_version >= 90300:
+                 pg_settings.append('data_checksums')
+diff --git a/doc/manual/42-server-commands.en.md b/doc/manual/42-server-commands.en.md
+index 90caea7..20e91d9 100644
+--- a/doc/manual/42-server-commands.en.md
++++ b/doc/manual/42-server-commands.en.md
+@@ -198,7 +198,8 @@ record of the transaction log. When the status file needs to be
+ cleaned, the `--reset` option can be used.
+ 
+ > **IMPORTANT:** If you are not using replication slots, you rely
+-> on the value of `wal_keep_segments`. Be aware that under high peeks
++> on the value of `wal_keep_segments` (or `wal_keep_size` from
++> PostgreSQL version 13.0 onwards). Be aware that under high peaks
+ > of workload on the database, the `receive-wal` process
+ > might fall behind and go out of sync. As a precautionary measure,
+ > Barman currently requires that users manually execute the command with the
+#diff --git a/tests/test_postgres.py b/tests/test_postgres.py
+#index 83c9f14..67636bb 100644
+#--- a/tests/test_postgres.py
+#+++ b/tests/test_postgres.py
+#@@ -822,6 +822,8 @@ class TestPostgres(object):
+#            new_callable=PropertyMock)
+#     @patch('barman.postgres.PostgreSQLConnection.is_in_recovery',
+#            new_callable=PropertyMock)
+#+    @patch('barman.postgres.PostgreSQLConnection.has_backup_privileges',
+#+           new_callable=PropertyMock)
+#     @patch('barman.postgres.PostgreSQLConnection.is_superuser',
+#            new_callable=PropertyMock)
+#     @patch('barman.postgres.PostgreSQLConnection.server_txt_version',
+#@@ -847,6 +849,7 @@ class TestPostgres(object):
+#                                has_pgespresso_mock,
+#                                server_txt_version_mock,
+#                                is_superuser_mock,
+#+                               has_backup_privileges_mock,
+#                                is_in_recovery_mock,
+#                                archive_timeout_mock,
+#                                checkpoint_timeout_mock,
+#@@ -867,6 +870,7 @@ class TestPostgres(object):
+#         has_pgespresso_mock.return_value = True
+#         server_txt_version_mock.return_value = '9.5.0'
+#         is_in_recovery_mock.return_value = False
+#+        has_backup_privileges_mock.return_value = True
+#         is_superuser_mock.return_value = True
+#         get_configuration_files_mock.return_value = {'a': 'b'}
+#         get_synchronous_standby_names_mock.return_value = []
+#@@ -885,6 +889,7 @@ class TestPostgres(object):
+#             'max_replication_slots': 'a max_replication_slots value',
+#             'wal_compression': 'a wal_compression value',
+#             'wal_keep_segments': 'a wal_keep_segments value',
+#+            'wal_keep_size': 'a wal_keep_size value',
+#         }
+# 
+#         get_setting_mock.side_effect = lambda x: settings.get(x, 'unknown')
+#@@ -948,6 +953,36 @@ class TestPostgres(object):
+#             'postgres_systemid': 6721602258895701769,
+#         }
+# 
+#+        # Test PostgreSQL 13
+#+        conn_mock.return_value.server_version = 130000
+#+        result = server.postgres.fetch_remote_status()
+#+        assert result == {
+#+            'a': 'b',
+#+            'is_superuser': True,
+#+            'has_backup_privileges': True,
+#+            'is_in_recovery': False,
+#+            'current_lsn': 'DE/ADBEEF',
+#+            'current_xlog': '00000001000000DE00000000',
+#+            'data_directory': 'a directory',
+#+            'pgespresso_installed': True,
+#+            'server_txt_version': '9.5.0',
+#+            'wal_level': 'a wal_level value',
+#+            'current_size': 497354072,
+#+            'replication_slot_support': True,
+#+            'replication_slot': None,
+#+            'synchronous_standby_names': [],
+#+            'archive_timeout': 300,
+#+            'checkpoint_timeout': 600,
+#+            'wal_keep_size': 'a wal_keep_size value',
+#+            'hot_standby': 'a hot_standby value',
+#+            'max_wal_senders': 'a max_wal_senderse value',
+#+            'data_checksums': 'a data_checksums',
+#+            'max_replication_slots': 'a max_replication_slots value',
+#+            'wal_compression': 'a wal_compression value',
+#+            'xlog_segment_size': 8388608,
+#+            'postgres_systemid': 6721602258895701769,
+#+        }
+#+
+#         # Test error management
+#         server.postgres.close()
+#         conn_mock.side_effect = psycopg2.DatabaseError
diff -Nru barman-2.12/debian/patches/series barman-2.12/debian/patches/series
--- barman-2.12/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ barman-2.12/debian/patches/series	2021-07-05 17:57:35.000000000 +0200
@@ -0,0 +1 @@
+pg13

--- End Message ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply to: