リリース 3.6.1

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

# A.5. リリース 3.6.1

> リリース日: 2016-12-26

## A.5.1. 不具合修正

- watchdog のセキュリティを強化しました。(Muhammad Usama)

  wd_authkeyは、HMAC SHA-256ハッシングを使用するようになりました。

- Pgpool-IIのRPM にpgpool_adm extension が含まれるように修正しました。(Bo Peng)

- クエリキャッシュが有効になっている場合に、時々発生しうるセグメンテーション違反を修正しました。(bug 263) (Tatsuo Ishii)

- 拡張プロトコルにおいて発生しうるkind mismatchエラーを修正しました。(bug 231) (Tatsuo Ishii)

  bug 231によると、以下の条件がすべて満たされていると、このバグが発生する可能性がありました。

  - ストリーミングレプリケーションモード

  - ロードバランスノードがnode 0ではない

  - 拡張プロトコルを使用している

  - SELECTが実行され、ステートメントがクローズされた後、トランザクションコマンドが実行されている

  問題の発生順序:

  1. ロードバランスノード1でステートメントS1のSELECTが実行されます。

  2. フロントエンドがクローズステートメントを送ります。

  3. Pgpool-IIはそれをバックエンド1に転送します。

  4. フロントエンドは、COMMITのParse、Bind、Executeを送信します。

  5. Pgpool-IIはそれをバックエンド0と1に転送します。

  6. フロントエンドが同期メッセージを送信します。

  7. Pgpool-IIはそれをバックエンド0と1に転送します。

  8. バックエンド0はParse complete（ "1"）を返しますが、バックエンド1は＃3によりclose complete（ "3"）を返します。

  9. Kind mismatch が発生します。

  解決策は、＃3では、Pgpool-IIがバックエンド1からの応答を待つようにしますが、応答メッセージは読み取らないようにします。 その後、Pgpool-IIの状態マシンは、＃6で同期メッセージが送信される前に、その応答を読み込みます。 これによりバックエンド1は＃8で "1"を返信し、kind mismatchエラーは発生しなくなります。

  また、Closeメッセージを受け取ったときにpool_set_doing_extended_query_message（）が呼び出されない不具合を修正しました。

  新しいリグレッションテスト "067.bug231"を追加しました。

- シグナルハンドラでの競合状態を修正しました。(bug 265) (Tatsuo Ishii)

  child.cには、elogを呼び出すシグナルハンドラがあります。 シグナルハンドラは処理中に他のシグナルに対してブロックされないため、pgpoolのシャットダウンシーケンスでシステムコールにデッドロックが発生する可能性がありました。 この問題を解決するために、シグナルハンドラはPOOL_SETMASKを使用してブロックされるように修正されました。

  理想的にはシグナルハンドラでelogを呼び出すことを避けるべきです。

- 誤ったclient_idle_limit_in_recoveryの最小設定値を修正しました。(bug 264) (Tatsuo Ishii)

- doc.jaの下で "make xslthtml"を実行できるように修正しました。(Tatsuo Ishii)

前のページ | ホーム | 次のページ
リリース 3.6.2 | 上に戻る | リリース 3.6