<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">
<div dir="auto">Hello Tatsuo<br /></div>
<blockquote style="border-left-color: rgb(26, 188, 156); margin: 0px; padding-left: 10px; border-left-width: thin; border-left-style: solid; padding-bottom: 5px; padding-top: 5px;">Unfortunately recovery commands are executed on the PostgreSQL primary</blockquote>
<blockquote style="border-left-color: rgb(26, 188, 156); margin: 0px; padding-left: 10px; border-left-width: thin; border-left-style: solid; padding-bottom: 5px; padding-top: 5px;">node by calling pgpool_recovery extension. There's no way to pass</blockquote>
<blockquote style="border-left-color: rgb(26, 188, 156); margin: 0px; padding-left: 10px; border-left-width: thin; border-left-style: solid; padding-bottom: 5px; padding-top: 5px;">environment variables from pgpool side. So my proposal is not applied</blockquote>
<blockquote style="border-left-color: rgb(26, 188, 156); margin: 0px; padding-left: 10px; border-left-width: thin; border-left-style: solid; padding-bottom: 5px; padding-top: 5px;">to below commands.</blockquote>
<div dir="auto"><br />
Fair point. Then as per our other discussion, to pass PRIMARY_NODE_HOST to the recovery_1st_stage script, can we do it by passing it as an argument to the command?</div>
</div>
<div name="messageSignatureSection"><br />
<div class="matchFont">
<div dir="auto">Thanks!
<div dir="auto"><br /></div>
<div dir="auto">Anirudh</div>
</div>
</div>
</div>
<div name="messageReplySection">On 15 Jul 2021, 12:03 PM +0530, Tatsuo Ishii <ishii@sraoss.co.jp>, wrote:<br />
<blockquote type="cite" style="border-left-color: grey; border-left-width: thin; border-left-style: solid; margin: 5px 5px;padding-left: 10px;">Oops. I was wrong.<br />
<br />
<blockquote type="cite">Currently following scripts receive necessary information as script<br />
arguments.<br />
<br />
failback_command<br />
failover_command<br />
follow_primary_command<br /></blockquote>
<br />
Unfortunately recovery commands are executed on the PostgreSQL primary<br />
node by calling pgpool_recovery extension. There's no way to pass<br />
environment variables from pgpool side. So my proposal is not applied<br />
to below commands.<br />
<br />
<blockquote type="cite">recovery_1st_stage_command<br />
recovery_2nd_stage_command<br />
<br />
This is painful for both pgpool developers and users because:<br />
<br />
- every time new argument is added, pgpool needs to update source code<br />
to add the argument. For example, an extension "pgpool_recovery"<br />
needs to be updated if new arguments are added. Thus we have 1.0,<br />
1.1, 1,2 and 1.3 versions of the extension. Moreover developers need<br />
to write upgrade scripts to update to newer version of extension.<br />
<br />
- pgpool users need to remember what $1 is, $2 etc. are.<br />
<br />
I propose to stop using arguments and use environment variables<br />
instead. For a backward compatibility sake, it may be better to provide<br />
both arguments and environment variables for Pgpool-II 4.3, then<br />
eliminate arguments 4.4.<br />
<br />
Here are list of proposed environment variables:<br />
<br />
POOL_ATTACHED_NODE DB node ID of the attached node<br />
POOL_ATTACHED_HOST Hostname of the attached node<br />
POOL_ATTACHED_PORT Port number of the attached node<br />
POOL_ATTACHED_PGDATA Database cluster directory of the attached node<br />
POOL_DETACHED_NODE DB node ID of the detached node<br />
POOL_DETACHED_HOST Hostname of the detached node<br />
POOL_DETACHED_PORT Port number of the detached node<br />
POOL_DETACHED_PGDATA Database cluster directory of the detached node<br />
POOL_NEW_MAIN_NODE_ID New main node ID<br />
POOL_NEW_MAIN_NODE_HOST Hostname of the new main node<br />
POOL_NEW_MAIN_PORT Port number of the new main node<br />
POOL_NEW_MAIN_PGDATA Database cluster directory of the new main node<br />
POOL_NEW_PRIMARY_NODE_ID New primary node ID<br />
POOL_NEW_PRIMARY_HOST Hostname of the new primary node<br />
POOL_NEW_PRIMARY_PORT Port number of the new primary node<br />
POOL_NEW_PRIMARY_PGDATA Database cluster directory of the new primary node<br />
POOL_OLD_MAIN_NODE_ID Old main node ID<br />
POOL_OLD_PRIMARY_NODE_ID Old primary node ID<br />
POOL_OLD_PRIMARY_HOST Hostname of the old primary node<br />
POOL_OLD_PRIMARY_PORT Port number of the old primary node<br />
POOL_DETACHED_NODE DB node ID of the detached node<br />
POOL_DETACHED_HOST Hostname of the detached node<br />
POOL_DETACHED_PORT Port number of the detached node<br />
POOL_DETACHED_PGDATA Database cluster directory of the detached node<br />
<br />
Followings do not exist in the current arugument list but I would like<br />
to add for consistency sake:<br />
<br />
POOL_OLD_MAIN_HOST Hostname of the old main node<br />
POOL_OLD_MAIN_PORT Port number of the old main node<br />
POOL_OLD_MAIN_PGDATA Database cluster directory of the old main node<br />
POOL_OLD_PRIMARY_PGDATA Database cluster directory of the old primary node<br />
<br />
All variables are prefixed with "POOL_" to not conflict with user's<br />
envrionment variables if any.<br />
<br />
Comments and suggestions are welcome.<br />
--<br />
Tatsuo Ishii<br />
SRA OSS, Inc. Japan<br />
English: http://www.sraoss.co.jp/index_en.php<br />
Japanese:http://www.sraoss.co.jp<br /></blockquote>
_______________________________________________<br />
pgpool-hackers mailing list<br />
pgpool-hackers@pgpool.net<br />
http://www.pgpool.net/mailman/listinfo/pgpool-hackers<br /></blockquote>
</div>
</body>
</html>