[pgpool-general-jp: 735] Re: pgpool_remote_start() の返り値

Jun Kuriyama kuriyama+ml @ s2factory.co.jp
2010年 2月 16日 (火) 11:17:53 JST


At Mon, 15 Feb 2010 17:14:26 +0900 (JST),
ishii @ sraoss.co.jp wrote:
> 以下の部分ですが、
> 
> 	r = system(recovery_script);
> 
> 	if (r != 0)
> 	{
> 		elog(ERROR, "pgpool_remote_start failed");
> 	}
> 
> 	PG_RETURN_BOOL(true);
> 
> systemがエラーを返すと、elog(ERROR...)が実行されます。この場合、
> PostgreSQLはelogの中でlongjumpしてエラー処理を行い、トランザクションを
> アボートします。なので、実際には、
> 
> 	PG_RETURN_BOOL(true);
> 
> は実行されていないと思われます。

 こちら、私のミスでした。

ssh pgsql @ remote_host /usr/local/bin/pg_ctl start | logger -t pgpool -p local0.info

としていたのですが、この行の返り値は SSH が偽を返しても logger が真な
のでスクリプト全体としては真を返してしまっていました。

 スクリプトを変更してちゃんと失敗するときは偽を返すようにすると想定通
りになりました。


-- 
Jun Kuriyama <kuriyama @ s2factory.co.jp> // S2 Factory, Inc.


pgpool-general-jp メーリングリストの案内