From 3c4b89c9d2cbf199655f501f63d82bdbb0a3d294 Mon Sep 17 00:00:00 2001 From: asavchkov <pge@mail.ee> Date: Wed, 6 Mar 2024 14:22:15 +0700 Subject: [PATCH 1/2] Run the archive command through exec --- testgres/plugins/pg_probackup2/pg_probackup2/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testgres/plugins/pg_probackup2/pg_probackup2/app.py b/testgres/plugins/pg_probackup2/pg_probackup2/app.py index 07825673..4a145d8c 100644 --- a/testgres/plugins/pg_probackup2/pg_probackup2/app.py +++ b/testgres/plugins/pg_probackup2/pg_probackup2/app.py @@ -661,7 +661,7 @@ def set_archiving( options['archive_mode'] = 'on' if custom_archive_command is None: - archive_command = " ".join([f'"{init_params.probackup_path}"', + archive_command = " ".join(['exec', f'"{init_params.probackup_path}"', 'archive-push', *self.backup_dir.pb_args]) if os.name == "nt": archive_command = archive_command.replace("\\", "\\\\") From 2a3901ebed9f97359f51db37f65d0153daa089d7 Mon Sep 17 00:00:00 2001 From: asavchkov <pge@mail.ee> Date: Wed, 6 Mar 2024 19:38:16 +0700 Subject: [PATCH 2/2] Invoke exec only on Linux --- testgres/plugins/pg_probackup2/pg_probackup2/app.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/testgres/plugins/pg_probackup2/pg_probackup2/app.py b/testgres/plugins/pg_probackup2/pg_probackup2/app.py index 4a145d8c..94dcd997 100644 --- a/testgres/plugins/pg_probackup2/pg_probackup2/app.py +++ b/testgres/plugins/pg_probackup2/pg_probackup2/app.py @@ -661,9 +661,13 @@ def set_archiving( options['archive_mode'] = 'on' if custom_archive_command is None: - archive_command = " ".join(['exec', f'"{init_params.probackup_path}"', + archive_command = " ".join([f'"{init_params.probackup_path}"', 'archive-push', *self.backup_dir.pb_args]) - if os.name == "nt": + if os.name == 'posix': + # Dash produces a core dump when it gets a SIGQUIT from its + # child process so replace the shell with pg_probackup + archive_command = 'exec ' + archive_command + elif os.name == "nt": archive_command = archive_command.replace("\\", "\\\\") archive_command += f' --instance={instance}'