[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 メーリングリストの案内