リリース 3.6.5

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

# A.1. リリース 3.6.5

> リリース日: 2017-07-11

## A.1.1. 不具合修正

- [pgpool-hackers: 2400]で報告された、ログ出力中の不正なバイトを修正しました。(Muhammad Usama)

  ほとんどログメッセージの修正でした。

- PostgreSQLのMemoryManager APIに関する最新の変更をインポートしました。(Muhammad Usama)

- スプリットブレインが発生した場合、間違ったノードが MASTER になってしまう不具合を修正しました。 (bug 306) (Muhammad Usama)

- [pgpool-hackers: 2390] によって報告されたデーモンモードでの相対パスの問題を修正しました。(Muhammad Usama)

- PostgreSQL 10の変更に合わせて以下の関数名を修正しました。(Tatsuo Ishii)

          pg_current_wal_location     -> pg_current_wal_lsn
          pg_last_wal_replay_location -> pg_last_wal_replay_lsn

- ストリーミングレプリケーションと拡張プロトコルで発生するハングアップを修正しました。(Yugo Nagata)

  以下の例で再現できます。

          - pgpool.confですべての読み取りクエリをスタンバイに送信するように設定しています。
          - まず、トランザクションブロックで書き込みクエリを発行します。
          - トランザクションをコミットした後、SELECTクエリを発行します。
          - クエリを処理するときに、Parseの直後にDescribe（statement)メッセージを送信します。

  JDBCを使用せず、pgprotoを利用し以下のデータでこの問題を再現できます。

          'Q' "DROP TABLE IF EXISTS test_tbl"
          'Y'
          'Q' "CREATE TABLE test_tbl(i int)"
          'Y'
          'Q' "INSERT INTO test_tbl VALUES(1)"
          'Y'

          'P' "" "BEGIN" 0
          'B' "" "" 0 0 0
          'E' "" 0
          'S'
          'Y'

          'P' "" "INSERT INTO test_tbl VALUES(1)" 0
          'B' "" "" 0 0 0
          'E' "" 0
          'S'
          'Y'

          'P' "" "COMMIT" 0
          'B' "" "" 0 0 0
          'E' "" 0
          'S'
          'Y'

          'P' "S_1" "SELECT * FROM test_tbl" 0
          'D' 'S' "S_1"
          'B' "C_1" "S_1" 0 0 0
          'E' "C_1" 0
          'S'
          'Y'

          'X'

  `Bind`と`Execute`を適切なバックエンドに送信するように、`parse_before_bind()`は、トランザクション中にのみ呼び出されるように修正しました。

- erlangアプリケーションを使用する場合、Pgpool-II がハングする不具合を修正しました。(Tatsuo Ishii)

  Erlangクライアントは "Describe"メッセージの後に "Flush"を送信し、バックエンドは "Row description" を返します。しかし、Pgpool-IIは、"Row description" メッセージを受信した後、進行中のクエリフラグをリセットすることを忘れてしまい、Pgpool-IIはバックエンドからの応答を待っていました。これがerlangクライアントのハングアップの原因でした。

  Pgpool-IIが "Row description" メッセージを受信した際に、クエリ処理中のフラグをリセットするように修正しました。"no data" メッセージと同じ扱いにする必要がありました。

  詳細は[pgpo ol-general: 5555]を参照してください。

- 間違ったターゲットノードにバインドメッセージを送信するバグを修正しました。 (bug 306) (Tatsuo Ishii)

- node.jsを使用する場合に発生するクエリキャッシュのハングアップの問題を修正しました。(Tatsuo Ishii)

  詳細は[pgpool-general: 5511]を参照してください。

- PostgreSQL 10のストリーミングレプリケーションの遅延チェックに関する変更に合わせて修正しました。(Tatsuo Ishii)

- クエリキャッシュのメモリリークを修正しました。(Tatsuo Ishii)

  oidがないクエリ（`BEGIN`、`CHECKPOINT`、`VACUUM`など）の場合キャッシュバッファがクリアされるべきでしたが、されていませんでした。

- 特定の場合に発生する拡張クエリのハングアップを修正しました。(Tatsuo Ishii)

  erlang PostgreSQL APIは`Parse ('P')`、`Describe ('D')`、`Flush ('H')`、`Bind (B)`、`Execute('E')`を生成します。この"H"はJDBCにはありませんので、今まで問題が起こらなかったと思われます。その後、Pgpool-IIは拡張クエリモードを削除し、データを読み取るバックエンドを見つけることができませんでした。したがって、Pgpool-IIはバックエンドの一部にメッセージを送信していない可能性があるため、ハングアップを引き起こすすべてのバックエンドを読み取ろうとします。

  この問題を避けるために、`Flush`メッセージを受信後拡張クエリフラグを設定するように修正しました。

- [pgpool-hackers: 2354]によって報告された`pg_md5` のセグメンテーション違反を修正しました。(Muhammad Usama)

- `white/black_memcache_table_list`のドキュメントを修正しました。(Tatsuo Ishii)

  実際の実装と異なっています。

  詳細は[pgpool-general：5479]を参照してください。

- 滅多に発生しないPgpool-II起動時のバグを修正しました。(Tatsuo Ishii)

  プライマリノードが見つかる前にフェールオーバーの要求が受け入れられる可能性がありました。 これにより、Pgpool-IIは奇妙な状態に陥ります。障害が発生したノードはプライマリノードの場合、 プライマリノードは存在しないと判断していました。（既存のスタンバイが昇格し新しいプライマリノードになった場合でも）

  詳細は[pgpool-hackers: 2321] をご参照下さい。

前のページ | ホーム | 次のページ
リリースノート | 上に戻る | リリース 3.6.4