[pgpool-hackers: 3976] Re: Proposal: using environment variables instead of script arguments

Tatsuo Ishii ishii at sraoss.co.jp
Thu Jul 15 15:32:45 JST 2021


Oops. I was wrong.

> Currently following scripts receive necessary information as script
> arguments.
> 
> failback_command
> failover_command
> follow_primary_command

Unfortunately recovery commands are executed on the PostgreSQL primary
node by calling pgpool_recovery extension. There's no way to pass
environment variables from pgpool side. So my proposal is not applied
to below commands.

> recovery_1st_stage_command
> recovery_2nd_stage_command
> 
> This is painful for both pgpool developers and users because:
> 
> - every time new argument is added, pgpool needs to update source code
>   to add the argument. For example, an extension "pgpool_recovery"
>   needs to be updated if new arguments are added. Thus we have 1.0,
>   1.1, 1,2 and 1.3 versions of the extension. Moreover developers need
>   to write upgrade scripts to update to newer version of extension.
>
> - pgpool users need to remember what $1 is, $2 etc. are.
> 
> I propose to stop using arguments and use environment variables
> instead. For a backward compatibility sake, it may be better to provide
> both arguments and environment variables for Pgpool-II 4.3, then
> eliminate arguments 4.4.
> 
> Here are list of proposed environment variables:
> 
> POOL_ATTACHED_NODE	DB node ID of the attached node
> POOL_ATTACHED_HOST	Hostname of the attached node
> POOL_ATTACHED_PORT	Port number of the attached node
> POOL_ATTACHED_PGDATA	Database cluster directory of the attached node
> POOL_DETACHED_NODE	DB node ID of the detached node
> POOL_DETACHED_HOST	Hostname of the detached node
> POOL_DETACHED_PORT	Port number of the detached node
> POOL_DETACHED_PGDATA	Database cluster directory of the detached node
> POOL_NEW_MAIN_NODE_ID	New main node ID
> POOL_NEW_MAIN_NODE_HOST	Hostname of the new main node
> POOL_NEW_MAIN_PORT	Port number of the new main node
> POOL_NEW_MAIN_PGDATA	Database cluster directory of the new main node
> POOL_NEW_PRIMARY_NODE_ID New primary node ID
> POOL_NEW_PRIMARY_HOST	Hostname of the new primary node
> POOL_NEW_PRIMARY_PORT	Port number of the new primary node
> POOL_NEW_PRIMARY_PGDATA	Database cluster directory of the new primary node
> POOL_OLD_MAIN_NODE_ID	Old main node ID
> POOL_OLD_PRIMARY_NODE_ID Old primary node ID
> POOL_OLD_PRIMARY_HOST	Hostname of the old primary node
> POOL_OLD_PRIMARY_PORT	Port number of the old primary node
> POOL_DETACHED_NODE	DB node ID of the detached node
> POOL_DETACHED_HOST	Hostname of the detached node
> POOL_DETACHED_PORT	Port number of the detached node
> POOL_DETACHED_PGDATA	Database cluster directory of the detached node
> 
> Followings do not exist in the current arugument list but I would like
> to add for consistency sake:
> 
> POOL_OLD_MAIN_HOST	Hostname of the old main node
> POOL_OLD_MAIN_PORT	Port number of the old main node
> POOL_OLD_MAIN_PGDATA	Database cluster directory of the old main node
> POOL_OLD_PRIMARY_PGDATA	Database cluster directory of the old primary node
> 
> All variables are prefixed with "POOL_" to not conflict with user's
> envrionment variables if any.
> 
> Comments and suggestions are welcome.
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp


More information about the pgpool-hackers mailing list