Subject: Problem with pcp_recovery_node

From: puska <[email-masked]>
Date: Fri, 24 Oct 2025 14:43:15 +0200

Hi, 

I'm trying to deploy pgpool2 cluster with the help of instructions
form https://www.pgpool.net/docs/pgpool-II-4.3.5/en/html/example-cluster.html
 of and the thing that's bugging me at the moment is that I'm not able
to create new node.
When I start  (as root user or postgres user)

pcp_recovery_node -h 192.168.137.150 -p 9898 -U pgpool -n 1

I get:

ERROR: executing recovery, execution of command failed at "1st stage"
DETAIL: command:"/var/lib/postgresql/15/main/recovery_1st_stage"

but when I try calling recovery_1st_stage like:

/var/lib/postgresql/15/main/recovery_1st_stage
/var/lib/postgresql/15/main sql2.ztm.hr /var/lib/postgresql/15/main
5432 1 5432  sql1.ztm.hr

the script passes without errors:

recovery_1st_stage: end: recovery_1st_stage is completed successfully

In pgpool2 log I get:

2025-10-24 14:25:03.657: pcp_main pid 328374: DEBUG: I am PCP child
with PID:328374 and accept fd:7
2025-10-24 14:25:03.657: pcp_main pid 328374: LOG: forked new pcp
worker, pid=338306 socket=7
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: I am PCP worker
child with pid:338306
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: initializing
backend status
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: received PCP
packet
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: PCP packet type
of service 'M'
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: PCP: sending md5
salt to client
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: received PCP
packet
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: PCP packet type
of service 'R'
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: PCP: processing
authentication request
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: authentication
OK
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: received PCP
packet
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: PCP packet type
of service 'O'
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: PCP: processing
recovery request
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: start online
recovery
2025-10-24 14:25:03.658: pcp_child pid 338306: LOG: starting recovering
node 1
2025-10-24 14:25:03.677: pcp_child pid 338306: DEBUG: recovery execute
checkpoint, start checkpoint
2025-10-24 14:25:03.688: pcp_child pid 338306: DEBUG: recovery execute
checkpoint, finish checkpoint
2025-10-24 14:25:03.688: pcp_child pid 338306: LOG: node recovery,
CHECKPOINT in the 1st stage done
2025-10-24 14:25:03.688: pcp_child pid 338306: LOG: executing recovery
2025-10-24 14:25:03.688: pcp_child pid 338306: DETAIL: starting
recovery command: "SELECT pgpool_rec
overy('/var/lib/postgresql/15/main/recovery_1st_stage', 'sql2.ztm.hr',
'/var/lib/postgresql/15/main',
'5432', 1, '5432', 'sql1.ztm.hr')"
2025-10-24 14:25:03.688: pcp_child pid 338306: LOG: executing recovery
2025-10-24 14:25:03.688: pcp_child pid 338306: DETAIL: disabling
statement_timeout
2025-10-24 14:25:03.688: pcp_child pid 338306: DEBUG: executing
recovery, start recovery
2025-10-24 14:25:03.690: pcp_child pid 338306: DEBUG: sending signal:12
to the parent process with P
ID:328328
2025-10-24 14:25:03.690: pcp_child pid 338306: ERROR: executing
recovery, execution of command faile
d at "1st stage"
2025-10-24 14:25:03.690: pcp_child pid 338306: DETAIL:
command:"/var/lib/postgresql/15/main/recovery_1st_stage"

I'm not sure if order of arguments from the log is correct, if I run
recovery_1st_stage with argument ordered like in the log I'm getting
error about host /var/lib/postgresql/15/main not being available.
Is there a way to get stderr from recovery_1st_stage while running it
from pcp_recovery_node?

I installed pgpool2 version 4.3.5 from Debian 12 package, PostgreSQL is
version 15.

pgpool2 config file attached

-- 

Željko Puškarić / Voditelj informatičke službe | Head of ICT Sector
[email-masked] / +385 1 5496-092
Hrvatski zavod za hitnu medicinu | Croatian Institute of Emergency
Medicine
Office: +385 1 5496-089 / Fax: +385 1 4677-180
Planinska 13, 10000 Zagreb, Hrvatska | Croatia
www.hzhm.hr

---

From: Koshino Taiki <[email-masked]>
Date: Wed, 29 Oct 2025 06:23:49 +0000

Hi,

First, version 4.3.5 is outdated and contains known vulnerabilities, so it is recommended to upgrade to the latest version.

When executing pcp_recovery_node, the error "ERROR: executing recovery, execution of command failed at '1st stage'" occurs, but since the script runs normally when executed directly, it is necessary to check whether CREATE EXTENSION pgpool_recovery has been executed.

For more details about the error, check the PostgreSQL logs.

Taiki Koshino<[email-masked]>
SRA OSS K.K.
TEL: 03-5979-2701 FAX: 03-5979-2702
URL: https://www.sraoss.co.jp/

________________________________
差出人: puska <[email-masked]>
送信日時: 2025年10月24日 21:43
宛先: [email-masked] <[email-masked]>
件名: Problem with pcp_recovery_node

Hi,

I'm trying to deploy pgpool2 cluster with the help of instructions form https://www.pgpool.net/docs/pgpool-II-4.3.5/en/html/example-cluster.html of and the thing that's bugging me at the moment is that I'm not able to create new node.
When I start  (as root user or postgres user)

I get:

/var/lib/postgresql/15/main/recovery_1st_stage /var/lib/postgresql/15/main sql2.ztm.hr /var/lib/postgresql/15/main 5432 1 5432  sql1.ztm.hr

In pgpool2 log I get:

2025-10-24 14:25:03.657: pcp_main pid 328374: DEBUG: I am PCP child with PID:328374 and accept fd:7
2025-10-24 14:25:03.657: pcp_main pid 328374: LOG: forked new pcp worker, pid=338306 socket=7
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: I am PCP worker child with pid:338306
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: initializing backend status
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: received PCP packet
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: PCP packet type of service 'M'
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: PCP: sending md5 salt to client
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: received PCP packet
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: PCP packet type of service 'R'
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: PCP: processing authentication request
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: authentication OK
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: received PCP packet
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: PCP packet type of service 'O'
2025-10-24 14:25:03.658: pcp_child pid 338306: DEBUG: PCP: processing recovery request
2025-10-24 14:25:03.658: pcp_child pid 338306: DETAIL: start online recovery
2025-10-24 14:25:03.658: pcp_child pid 338306: LOG: starting recovering node 1
2025-10-24 14:25:03.677: pcp_child pid 338306: DEBUG: recovery execute checkpoint, start checkpoint
2025-10-24 14:25:03.688: pcp_child pid 338306: DEBUG: recovery execute checkpoint, finish checkpoint
2025-10-24 14:25:03.688: pcp_child pid 338306: LOG: node recovery, CHECKPOINT in the 1st stage done
2025-10-24 14:25:03.688: pcp_child pid 338306: LOG: executing recovery
2025-10-24 14:25:03.688: pcp_child pid 338306: DETAIL: starting recovery command: "SELECT pgpool_rec
overy('/var/lib/postgresql/15/main/recovery_1st_stage', 'sql2.ztm.hr', '/var/lib/postgresql/15/main',
'5432', 1, '5432', 'sql1.ztm.hr')"
2025-10-24 14:25:03.688: pcp_child pid 338306: LOG: executing recovery
2025-10-24 14:25:03.688: pcp_child pid 338306: DETAIL: disabling statement_timeout
2025-10-24 14:25:03.688: pcp_child pid 338306: DEBUG: executing recovery, start recovery
2025-10-24 14:25:03.690: pcp_child pid 338306: DEBUG: sending signal:12 to the parent process with P
ID:328328
2025-10-24 14:25:03.690: pcp_child pid 338306: ERROR: executing recovery, execution of command faile
d at "1st stage"
2025-10-24 14:25:03.690: pcp_child pid 338306: DETAIL: command:"/var/lib/postgresql/15/main/recovery_1st_stage"

I'm not sure if order of arguments from the log is correct, if I run recovery_1st_stage with argument ordered like in the log I'm getting error about host /var/lib/postgresql/15/main not being available.
Is there a way to get stderr from recovery_1st_stage while running it from pcp_recovery_node?

I installed pgpool2 version 4.3.5 from Debian 12 package, PostgreSQL is version 15.

--

[Croatian Institute of Emergency Medicine]<http://www.hzhm.hr/>
Željko Puškarić / Voditelj informatičke službe | Head of ICT Sector
[email-masked]<mailto:[email-masked]> / +385 1 5496-092
Hrvatski zavod za hitnu medicinu | Croatian Institute of Emergency Medicine
Office: +385 1 5496-089 / Fax: +385 1 4677-180
Planinska 13, 10000 Zagreb, Hrvatska | Croatia
www.hzhm.hr<http://www.hzhm.hr/>