[pgpool-hackers: 4279] Re: Bug with streaming replication worker

Tatsuo Ishii ishii at sraoss.co.jp
Sun Feb 5 17:18:25 JST 2023


> Hi,
> 
> While taking care of this:
> https://www.pgpool.net/pipermail/pgpool-general/2023-January/008633.html
> 
> I came across a bug with streaming replication worker. According the
> log provided by the user:
> 
> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: FATAL: Backend throw an error message
> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: DETAIL: Exiting current session because of an error from backend
> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: HINT: BACKEND Error: "recovery is in progress"
> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: CONTEXT: while checking replication time lag
> 
> The error message was logged when "SELECT pg_current_wal_lsn()" is
> sent to PostgreSQL standby. This is strange because sr worker is
> supposed to send the query only to the primary node.
> 
> I noticed the user set ALWAYS_PRYMARY and for some reasons primary
> node was in down status.
> 
> There is a code in sr check worker:
> 
> 		if (PRIMARY_NODE_ID == i)
> 		{
> 			if (server_version[i] >= PG10_SERVER_VERSION)
> 				query = "SELECT pg_current_wal_lsn()";
> 			else
> 				query = "SELECT pg_current_xlog_location()";
> 
> So it is supposed that "SELECT pg_current_wal_lsn()" is sent to the
> primary node only at a first glance. But, the definition of
> PRIMARY_NODE_ID is:
> 
> #define PRIMARY_NODE_ID (Req_info->primary_node_id >=0 && VALID_BACKEND_RAW(Req_info->primary_node_id) ? \
> 						 Req_info->primary_node_id:REAL_MAIN_NODE_ID)
> 
> So if Req_info->primary_node_id >= 0 and the primary is down, the
> macro returns REAL_MAIN_NODE_ID, which was a standby node in this case
> because the primary (node 0) was down and the standby (node 1) was the
> only live node and REAL_MAIN_NODE_ID is 1. As a result when i == 1,
> 
> Fix is, check the primary node is down or not, before going in to the
> replication delay loop.
> 
> Attached is proposed fix.

Fix pushed.

https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=fb3089ba95d4703a45779130b11ffec9031f8767

Best reagards,
--
Tatsuo Ishii
SRA OSS LLC
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp


More information about the pgpool-hackers mailing list