[pgsql-jp: 35914] pgpoolの縮退運転について
永橋 文二
bunji @ iris.eonet.ne.jp
2005年 8月 30日 (火) 01:37:54 JST
永橋です。
pgpoolの動作でタイミングにより縮退運転できない状況が発生しました。
調査した結果 health_check(child.c)において不具合があることが分かりました。
セカンダリ バックエンドへのwrite失敗時 マスタのエラーとしてしまい
縮退運転できない状況に陥ってしまいます。
以下のように修正しております。正式版への反映お願いします -> 石井さん
*** pgpool-2.6.2-old/child.c 2005-07-18 10:42:48.000000000 +0900
--- pgpool-2.6.2-new/child.c 2005-08-30 01:28:06.000000000 +0900
***************
*** 987,1006 ****
if (write(fd, &mysp, sizeof(mysp)) < 0)
{
! pool_error("health check failed during write. master %s at port %d is down",
! pool_config.current_backend_host_name,
! pool_config.current_backend_port);
! return -1;
}
read(fd, &kind, 1);
if (write(fd, "X", 1) < 0)
{
! pool_error("health check failed during write. master %s at port %d is down",
! pool_config.current_backend_host_name,
! pool_config.current_backend_port);
! return -1;
}
close(fd);
--- 987,1006 ----
if (write(fd, &mysp, sizeof(mysp)) < 0)
{
! pool_error("health check failed during write. secondary %s at port %d is down",
! pool_config.secondary_backend_host_name,
! pool_config.secondary_backend_port);
! return -2;
}
read(fd, &kind, 1);
if (write(fd, "X", 1) < 0)
{
! pool_error("health check failed during write. secondary %s at port %d is down",
! pool_config.secondary_backend_host_name,
! pool_config.secondary_backend_port);
! return -2;
}
close(fd);
以上
pgsql-jp メーリングリストの案内