リリース 3.6.2

Pgpool-II 3.6.5 文書
前のページ | 上に戻る | 付録 A. リリースノート | 次のページ

# A.4. リリース 3.6.2

> リリース日: 2017-03-17

## A.4.1. 不具合修正

- pgpool.serviceファイルに"Wants=network.target"を追加しました。 (bug 294) (Bo Peng)

- pcp_promote_nodeを使ってノード0の昇格に失敗する不具合を修正しました。(Yugo Nagata)

  失敗したときのエラーメッセージは以下のとおりです。

        FATAL: invalid pgpool mode for process recovery request
        DETAIL: specified node is already primary node, can't promote node id 0

  ストリーミングレプリケーションモードでは、Pgpool-IIがプライマリノードを何らかの理由で「スタンバイ」とみなしていました。たとえば、Pgpool-IIが起動中で、pg_ctl promoteを手動で実行したとき、Pgpool-IIはプライマリノードが存在しないと認識します。

  この状態の不一致は、pcp_promote_nodeコマンドによって直されるはずですが、昇格させたいノードがマスターノード（最初のアライブノード）である場合、上記のように失敗しました。 失敗した理由は次のとおりです。ステータスを変更する前に、pcp_promote_nodeコマンドがPRIMARY_NODE_IDのノードIDと比較することによって、指定されたノードが既にプライマリであるかどうかをチェックします。ただし、プライマリが存在しない場合Pgpool-IIのビューでは、PRIMARY_NODE_IDが0に設定されます。これはMASTER_NODE_IDと同じです。したがって、マスタノードを昇格させるように指定する場合、pcp_promote_nodeはこのノードが既にプライマリであるとのエラーを返して終了しました。

  これを修正するには、pcp_promote_nodeは指定したノードがプライマリーノードであるかどうかをチェックするとき、PRIMARY_NODE_IDではなくREAL_PRIMARY_NODE_IDを使うように修正しました。REAL_PRIMARY_NODE_IDはプライマリが存在しない場合、-1に設定されます。

- Pgpool-IIのドキュメントを修正しました。(Tatsuo Ishii, Bo Peng)

- Pgpool-IIがVIPを解除した後にpingテストを続けている不具合を修正しました。(Muhammad Usama)

  [pgpool-hackers: 1611] により報告されました。

- 特定の場合に、Pgpool-IIが終了したときに共有メモリセグメントを解放しない不具合を修正しました。(bug 272) (Tatsuo Ishii)

- pg_terminate_backend関数を実行するときに発生する不具合を修正しました。(Muhammad Usama)

  [pgpool-general: 5315]により報告されました。

- ExecStopとExecReloadコマンドをsystemdサービス設定ファイルに追加しました。(Muhammad Usama)

- pcp_attach_nodeを実行するときのセグメンテーション違反を修正しました。(bug 281)(Muhammad Usama)

- ストリーミングレプリケーションモードでロードバランスのバグを修正しました。(Tatsuo Ishii)

  明示的なトランザクションでは、書き込みクエリが送信されるまで、SELECTはロードバランスされます。書込みクエリが送信された後、SELECTがプライマリノードに送信されます。しかし、syncメッセージが送信される前にSELECTが送信された場合、これは正しく動作しませんでした。

  書き込みクエリが実行されると書き込みクエリの処理が行われるように修正しました。

- ストリーミングレプリケーションモードでのkind mismatchエラーを修正しました。(Tatsuo Ishii)

- closeメッセージの後に`do_query()`がハングする問題を修正しました。(Tatsuo Ishii)

- `wd_get_cmd`関数のバッファオーバーフローを修正しました。(bug 280)(Muhammad Usama)

- watchdogプロセスを再起動する時の不具合を修正しました。(Muhammad Usama)

  watchdogプロセスが何らかの問題（例えばセグメンテーションフォルト）によって異常終了した場合、新たに生成されたwatchdogプロセスの起動が失敗し、"bind on ... failed with reason: Address already in use"とのエラーを返しました。

  理由は、異常終了したwatchdogプロセスはIPCに使用するソケットをクリーンアップする時間がなかったからです。

  この不具合を修正するために、Pgpoolのメインプロセスは、watchdogプロセスが異常終了したときに共有メモリにフラグを設定するように修正しました。 watchdogプロセスが再起動されるとき、フラグがセットされたら、ソケットファイルをクリーンアップするようにしました。

- 特定の条件下で、ストリーミングレプリケーションモードでクエリキャッシュが有効な場合、SELECTがハングアップする不具合を修正しました。(Tatsuo Ishii)

  pgpool-general-jp:1441により報告されました。

- シグナルハンドラがelog/ereportを呼び出さないように修正しました。(Tatsuo Ishii)

  詳しくは[pgpool-hackers: 1950]をご参照ください。

- FreeBSDでlisten_addresses = '*'の場合、INETドメインソケットが作成できない不具合を修正しました。(bug 202)(Bo Peng)

- 特定に場合にwatchdogがデエスカレーションに失敗する不具合を修正しました。(bug 249)(Muhammad Usama)

  WNOHANGオプションなしで`waitpid()`システムコールを使用するように修正しました。

- authentication_timeoutが有効な場合、connection_life_timeが正しく処理されない不具合を修正しました。(Yugo Nagata)

- クライアント接続直後に発生しうる認証タイムアウトを修正しました。(Yugo Nagata)

前のページ | ホーム | 次のページ
リリース 3.6.3 | 上に戻る | リリース 3.6.1