From: Bo Peng Date: Wed, 27 Nov 2024 05:01:54 +0000 (+0900) Subject: Doc: add release notes. X-Git-Tag: V4_6_0_BETA1~23 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=009b1973908f6a0e0c21708c27524e3a3712a3f5;p=pgpool2.git Doc: add release notes. --- diff --git a/doc.ja/src/sgml/release-4.1.sgml b/doc.ja/src/sgml/release-4.1.sgml index 9d35a5919..82f482c88 100644 --- a/doc.ja/src/sgml/release-4.1.sgml +++ b/doc.ja/src/sgml/release-4.1.sgml @@ -1,6 +1,200 @@ + + リリース 4.1.23 + + リリース日 + 2024-11-28 + + + + 不具合修正 + + + + + + バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii) + + + SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、 + 中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、 + Pgpool-IIやクライアントを混乱させる可能性がありました。 + このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、 + そのような攻撃を防ぐためにセッションを終了するよう修正しました。 + + + これは、PostgreSQLのCVE-2024-10977に似ています。 + + + + + + + リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng) + + + Pgpool-IIの + reload_config()関数は、 + WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。 + + + + + + + do_query関数の不具合を修正しました。(Tatsuo Ishii) + + + htons/htonlの代わりにntohs/ntohlを使用するようにdo_queryを修正しました。 + + + + + + + pool_passwdを更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii) + + + pool_hba.confが無効になっている場合、Pgpool-IIのリロードが実行されても、Pgpool-IIの子プロセスはpool_passwdの更新を認識しませんでした。 + リロード処理関数check_config_reload()は、が有効な場合にのみpool_passwdを再オープンする必要があると誤って判断していたことが原因でした。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html + + + + + + + COPYがハングする問題を修正しました。(#79) (Tatsuo Ishii) + + + COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。 + F/Bプロトコル仕様によると、これらは無視されるはずですが、Pgpool-IIは無効なメッセージとして処理し、これがCOPYのハングの原因でした。 + + + リグレッションテストも追加しました。 + + + + + + + 認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii) + + + が空文字列の場合、ヘルスチェックプロセスはpool_passwdファイルからパスワードを検索します。 + 問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。 + pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。 + この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、 + それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。 + + + なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。 + + + この問題は、Emond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + ALTER ROLEのクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii) + + + コミット6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89は、ALTER ROLE/USERステートメントが使用される際にクエリキャッシュを無効にしています。 + しかし、実際にはこれが過剰です。 + 次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。 + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(#69) (Tatsuo Ishii) + + + INSERTコマンドを受信すると、Pgpool-IIはターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。 + この問題は拡張クエリモードの場合にのみ発生していました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii) + + + insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。 + + + + + + + pool_memqcache.cのメモリリークを修正しました。(Tatsuo Ishii) + + + この問題はコミット6fdba5c33によって導入されました。 + + + + + + + + ドキュメント修正 + + + + + ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng) + + + + + + リリース 4.1.22 diff --git a/doc.ja/src/sgml/release-4.2.sgml b/doc.ja/src/sgml/release-4.2.sgml index c3d545841..ccb663317 100644 --- a/doc.ja/src/sgml/release-4.2.sgml +++ b/doc.ja/src/sgml/release-4.2.sgml @@ -1,6 +1,254 @@ + + リリース 4.2.20 + + リリース日 + 2024-11-28 + + + + 不具合修正 + + + + + + バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii) + + + SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、 + 中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、 + Pgpool-IIやクライアントを混乱させる可能性がありました。 + このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、 + そのような攻撃を防ぐためにセッションを終了するよう修正しました。 + + + これは、PostgreSQLのCVE-2024-10977に似ています。 + + + + + + + リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng) + + + Pgpool-IIの + reload_config()関数は、 + WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。 + + + + + + + do_query関数の不具合を修正しました。(Tatsuo Ishii) + + + htons/htonlの代わりにntohs/ntohlを使用するようにdo_queryを修正しました。 + + + + + + + pool_passwdを更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii) + + + pool_hba.confが無効になっている場合、Pgpool-IIのリロードが実行されても、Pgpool-IIの子プロセスはpool_passwdの更新を認識しませんでした。 + リロード処理関数check_config_reload()は、が有効な場合にのみpool_passwdを再オープンする必要があると誤って判断していたことが原因でした。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html + + + + + + + COPYがハングする問題を修正しました。(#79) (Tatsuo Ishii) + + + COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。 + F/Bプロトコル仕様によると、これらは無視されるはずですが、Pgpool-IIは無効なメッセージとして処理し、これがCOPYのハングの原因でした。 + + + リグレッションテストも追加しました。 + + + + + + + シャットダウン中にPgpool-IIの子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + 実際のクラッシュはclose_all_backend_connections()内で発生していました。 + この関数は、on_system_exitがchild_will_go_down()を登録するために呼び出されます。 + この時点では、Pgpool-II子プロセスが起動し、pool_init_cp()を実行した直後であるようです。 + 接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。 + + + この問題はEmond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + 認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii) + + + が空文字列の場合、ヘルスチェックプロセスはpool_passwdファイルからパスワードを検索します。 + 問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。 + pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。 + この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、 + それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。 + + + なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。 + + + この問題は、Emond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + ALTER ROLEのクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii) + + + コミット6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89は、ALTER ROLE/USERステートメントが使用される際にクエリキャッシュを無効にしています。 + しかし、実際にはこれが過剰です。 + 次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。 + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Pgpool-IIの子プロセスが終了したときにPgpool-IIがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + Pgpool-IIの子プロセスが終了すると、close_all_backend_connections()が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。 + しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。 + このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。 + この問題を修正するために、代わりにin_use_backend()を使用するよう変更しました。 + + + Emond Papegaaijによって報告されました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(#69) (Tatsuo Ishii) + + + INSERTコマンドを受信すると、Pgpool-IIはターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。 + この問題は拡張クエリモードの場合にのみ発生していました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii) + + + insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。 + + + + + + + pool_memqcache.cのメモリリークを修正しました。(Tatsuo Ishii) + + + この問題はコミット6fdba5c33によって導入されました。 + + + + + + + + ドキュメント修正 + + + + + ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng) + + + + + + + 回帰テスト修正 + + + + + テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii) + + + + + + リリース 4.2.19 diff --git a/doc.ja/src/sgml/release-4.3.sgml b/doc.ja/src/sgml/release-4.3.sgml index c48c02f5f..1199d0324 100644 --- a/doc.ja/src/sgml/release-4.3.sgml +++ b/doc.ja/src/sgml/release-4.3.sgml @@ -1,6 +1,254 @@ + + リリース 4.3.13 + + リリース日 + 2024-11-28 + + + + 不具合修正 + + + + + + バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii) + + + SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、 + 中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、 + Pgpool-IIやクライアントを混乱させる可能性がありました。 + このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、 + そのような攻撃を防ぐためにセッションを終了するよう修正しました。 + + + これは、PostgreSQLのCVE-2024-10977に似ています。 + + + + + + + リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng) + + + Pgpool-IIの + reload_config()関数は、 + WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。 + + + + + + + do_query関数の不具合を修正しました。(Tatsuo Ishii) + + + htons/htonlの代わりにntohs/ntohlを使用するようにdo_queryを修正しました。 + + + + + + + pool_passwdを更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii) + + + pool_hba.confが無効になっている場合、Pgpool-IIのリロードが実行されても、Pgpool-IIの子プロセスはpool_passwdの更新を認識しませんでした。 + リロード処理関数check_config_reload()は、が有効な場合にのみpool_passwdを再オープンする必要があると誤って判断していたことが原因でした。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html + + + + + + + COPYがハングする問題を修正しました。(#79) (Tatsuo Ishii) + + + COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。 + F/Bプロトコル仕様によると、これらは無視されるはずですが、Pgpool-IIは無効なメッセージとして処理し、これがCOPYのハングの原因でした。 + + + リグレッションテストも追加しました。 + + + + + + + シャットダウン中にPgpool-IIの子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + 実際のクラッシュはclose_all_backend_connections()内で発生していました。 + この関数は、on_system_exitがchild_will_go_down()を登録するために呼び出されます。 + この時点では、Pgpool-II子プロセスが起動し、pool_init_cp()を実行した直後であるようです。 + 接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。 + + + この問題はEmond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + 認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii) + + + が空文字列の場合、ヘルスチェックプロセスはpool_passwdファイルからパスワードを検索します。 + 問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。 + pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。 + この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、 + それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。 + + + なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。 + + + この問題は、Emond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + ALTER ROLEのクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii) + + + コミット6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89は、ALTER ROLE/USERステートメントが使用される際にクエリキャッシュを無効にしています。 + しかし、実際にはこれが過剰です。 + 次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。 + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Pgpool-IIの子プロセスが終了したときにPgpool-IIがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + Pgpool-IIの子プロセスが終了すると、close_all_backend_connections()が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。 + しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。 + このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。 + この問題を修正するために、代わりにin_use_backend()を使用するよう変更しました。 + + + Emond Papegaaijによって報告されました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(#69) (Tatsuo Ishii) + + + INSERTコマンドを受信すると、Pgpool-IIはターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。 + この問題は拡張クエリモードの場合にのみ発生していました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii) + + + insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。 + + + + + + + pool_memqcache.cのメモリリークを修正しました。(Tatsuo Ishii) + + + この問題はコミット6fdba5c33によって導入されました。 + + + + + + + + ドキュメント修正 + + + + + ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng) + + + + + + + 回帰テスト修正 + + + + + テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii) + + + + + + リリース 4.3.12 diff --git a/doc.ja/src/sgml/release-4.4.sgml b/doc.ja/src/sgml/release-4.4.sgml index 9397d0313..c6b55c8a6 100644 --- a/doc.ja/src/sgml/release-4.4.sgml +++ b/doc.ja/src/sgml/release-4.4.sgml @@ -1,6 +1,254 @@ + + リリース 4.4.10 + + リリース日 + 2024-11-28 + + + + 不具合修正 + + + + + + バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii) + + + SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、 + 中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、 + Pgpool-IIやクライアントを混乱させる可能性がありました。 + このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、 + そのような攻撃を防ぐためにセッションを終了するよう修正しました。 + + + これは、PostgreSQLのCVE-2024-10977に似ています。 + + + + + + + リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng) + + + Pgpool-IIの + reload_config()関数は、 + WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。 + + + + + + + do_query関数の不具合を修正しました。(Tatsuo Ishii) + + + htons/htonlの代わりにntohs/ntohlを使用するようにdo_queryを修正しました。 + + + + + + + pool_passwdを更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii) + + + pool_hba.confが無効になっている場合、Pgpool-IIのリロードが実行されても、Pgpool-IIの子プロセスはpool_passwdの更新を認識しませんでした。 + リロード処理関数check_config_reload()は、が有効な場合にのみpool_passwdを再オープンする必要があると誤って判断していたことが原因でした。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html + + + + + + + COPYがハングする問題を修正しました。(#79) (Tatsuo Ishii) + + + COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。 + F/Bプロトコル仕様によると、これらは無視されるはずですが、Pgpool-IIは無効なメッセージとして処理し、これがCOPYのハングの原因でした。 + + + リグレッションテストも追加しました。 + + + + + + + シャットダウン中にPgpool-IIの子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + 実際のクラッシュはclose_all_backend_connections()内で発生していました。 + この関数は、on_system_exitがchild_will_go_down()を登録するために呼び出されます。 + この時点では、Pgpool-II子プロセスが起動し、pool_init_cp()を実行した直後であるようです。 + 接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。 + + + この問題はEmond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + 認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii) + + + が空文字列の場合、ヘルスチェックプロセスはpool_passwdファイルからパスワードを検索します。 + 問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。 + pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。 + この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、 + それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。 + + + なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。 + + + この問題は、Emond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + ALTER ROLEのクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii) + + + コミット6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89は、ALTER ROLE/USERステートメントが使用される際にクエリキャッシュを無効にしています。 + しかし、実際にはこれが過剰です。 + 次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。 + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Pgpool-IIの子プロセスが終了したときにPgpool-IIがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + Pgpool-IIの子プロセスが終了すると、close_all_backend_connections()が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。 + しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。 + このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。 + この問題を修正するために、代わりにin_use_backend()を使用するよう変更しました。 + + + Emond Papegaaijによって報告されました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(#69) (Tatsuo Ishii) + + + INSERTコマンドを受信すると、Pgpool-IIはターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。 + この問題は拡張クエリモードの場合にのみ発生していました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii) + + + insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。 + + + + + + + pool_memqcache.cのメモリリークを修正しました。(Tatsuo Ishii) + + + この問題はコミット6fdba5c33によって導入されました。 + + + + + + + + ドキュメント修正 + + + + + ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng) + + + + + + + 回帰テスト修正 + + + + + テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii) + + + + + + リリース 4.4.9 diff --git a/doc.ja/src/sgml/release-4.5.sgml b/doc.ja/src/sgml/release-4.5.sgml index 71cd0d1a1..f4f26b22a 100644 --- a/doc.ja/src/sgml/release-4.5.sgml +++ b/doc.ja/src/sgml/release-4.5.sgml @@ -1,6 +1,254 @@ + + リリース 4.5.5 + + リリース日 + 2024-11-28 + + + + 不具合修正 + + + + + + バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii) + + + SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、 + 中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、 + Pgpool-IIやクライアントを混乱させる可能性がありました。 + このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、 + そのような攻撃を防ぐためにセッションを終了するよう修正しました。 + + + これは、PostgreSQLのCVE-2024-10977に似ています。 + + + + + + + リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng) + + + Pgpool-IIの + reload_config()関数は、 + WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。 + + + + + + + do_query関数の不具合を修正しました。(Tatsuo Ishii) + + + htons/htonlの代わりにntohs/ntohlを使用するようにdo_queryを修正しました。 + + + + + + + pool_passwdを更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii) + + + pool_hba.confが無効になっている場合、Pgpool-IIのリロードが実行されても、Pgpool-IIの子プロセスはpool_passwdの更新を認識しませんでした。 + リロード処理関数check_config_reload()は、が有効な場合にのみpool_passwdを再オープンする必要があると誤って判断していたことが原因でした。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html + + + + + + + COPYがハングする問題を修正しました。(#79) (Tatsuo Ishii) + + + COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。 + F/Bプロトコル仕様によると、これらは無視されるはずですが、Pgpool-IIは無効なメッセージとして処理し、これがCOPYのハングの原因でした。 + + + リグレッションテストも追加しました。 + + + + + + + シャットダウン中にPgpool-IIの子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + 実際のクラッシュはclose_all_backend_connections()内で発生していました。 + この関数は、on_system_exitがchild_will_go_down()を登録するために呼び出されます。 + この時点では、Pgpool-II子プロセスが起動し、pool_init_cp()を実行した直後であるようです。 + 接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。 + + + この問題はEmond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + 認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii) + + + が空文字列の場合、ヘルスチェックプロセスはpool_passwdファイルからパスワードを検索します。 + 問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。 + pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。 + この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、 + それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。 + + + なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。 + + + この問題は、Emond Papegaaijによって報告され、分析されました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + ALTER ROLEのクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii) + + + コミット6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89は、ALTER ROLE/USERステートメントが使用される際にクエリキャッシュを無効にしています。 + しかし、実際にはこれが過剰です。 + 次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。 + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。 + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Pgpool-IIの子プロセスが終了したときにPgpool-IIがクラッシュする問題を修正しました。(Tatsuo Ishii) + + + Pgpool-IIの子プロセスが終了すると、close_all_backend_connections()が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。 + しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。 + このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。 + この問題を修正するために、代わりにin_use_backend()を使用するよう変更しました。 + + + Emond Papegaaijによって報告されました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(#69) (Tatsuo Ishii) + + + INSERTコマンドを受信すると、Pgpool-IIはターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。 + この問題は拡張クエリモードの場合にのみ発生していました。 + + + + + + + ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii) + + + insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。 + + + + + + + pool_memqcache.cのメモリリークを修正しました。(Tatsuo Ishii) + + + この問題はコミット6fdba5c33によって導入されました。 + + + + + + + + ドキュメント修正 + + + + + ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng) + + + + + + + 回帰テスト修正 + + + + + テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii) + + + + + + リリース 4.5.4 diff --git a/doc/src/sgml/release-4.1.sgml b/doc/src/sgml/release-4.1.sgml index 688de7aeb..d98786ca9 100644 --- a/doc/src/sgml/release-4.1.sgml +++ b/doc/src/sgml/release-4.1.sgml @@ -1,6 +1,218 @@ + + Release 4.1.23 + + Release Date + 2024-11-28 + + + + Bug fixes + + + + + + Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii) + + + In the client side implementation of SSL negotiation + (pool_ssl_negotiate_clientserver()), it was possible for a + man-in-the-middle attacker to send a long error message to confuse + Pgpool-II or client while in the SSL negotiation phase. This commit + rejects the negotiation immediately (issue a FATAL error) and exits + the session to prevent such an attack. + + + This resembles PostgreSQL's CVE-2024-10977. + + + + + + + Fix the watchdog process not reloading configurations. (Bo Peng) + + + The reload_config() function + in Pgpool-II should send + a SIGHUP signal to the watchdog process. + + + + + + + Fix bug in do_query. (Tatsuo Ishii) + + + Fix do_query to use ntohs/ntohl instead of htons/htonl. + + + + + + + Fix authentication failure after updating pool_passwd and reload. (Tatsuo Ishii) + + + If pool_hba.conf is disabled, + updating pool_passwd was not recognized + by Pgpool-II child process even + if Pgpool-II reload was performed. + The reload processing function check_config_reload() mistakenly assumed + that reopening pool_passwd was only necessary when + is on. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html" + + + + + + + Fix COPY hangs. (#79) (Tatsuo Ishii) + + + During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush + or Sync messages. According to the F/B protocol specification, they + should be ignored but Pgpool-II treated as an invalid message and this + causes COPY hung. + + + Also a regression test is added for this issue. + + + + + + + Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii) + + + When is empty string, + health check process looks for the password from pool_passwd file. + Problem is, the file descriptor for the file is inherited from + parent pgpool process. + This means that pgpool main and health check process (possibly multiple + process) share the same descriptor, which causes various problem + including the issue reported here. To fix the problem, re-open the + file when health check process starts so that each health check + process owns its own file descriptor. + + + Note that pgpool child process (responsible for frontend sessions) + already re-opens the file descriptor and they are not related to the + issue. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + Optimize query cache invalidation for ALTER ROLE. (Tatsuo Ishii) + + + Commit 6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89 invalidates query + cache if any ALTER ROLE/USER statement is used. + Actually this is an overkill. + Because following queries do not affect the privilege of the role. + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + So do not invalidate query cache if those commands are used. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Fix bug in replication/snapshot isolation mode. (#69) (Tatsuo Ishii) + + + When INSERT command is received, + pgpool automatically issues table LOCK command to the + target table but it forgot to send the command to + other than main nodes. This only happened in extended query mode. + + + + + + + Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii) + + + insert_lock() forgot to send row lock command (lock_kind == 3 case) to + other than main node. + + + + + + + Fix resource leaks in pool_memqcache.c. (Tatsuo Ishii) + + + These leaks were brought in by commit 6fdba5c33. + + + + + + + + Documents + + + + + Fix typos in the documentation and sample configuration files. (Bo Peng) + + + + + + Release 4.1.22 diff --git a/doc/src/sgml/release-4.2.sgml b/doc/src/sgml/release-4.2.sgml index f8024356d..f532f2068 100644 --- a/doc/src/sgml/release-4.2.sgml +++ b/doc/src/sgml/release-4.2.sgml @@ -1,6 +1,279 @@ + + Release 4.2.20 + + Release Date + 2024-11-28 + + + + Bug fixes + + + + + + Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii) + + + In the client side implementation of SSL negotiation + (pool_ssl_negotiate_clientserver()), it was possible for a + man-in-the-middle attacker to send a long error message to confuse + Pgpool-II or client while in the SSL negotiation phase. This commit + rejects the negotiation immediately (issue a FATAL error) and exits + the session to prevent such an attack. + + + This resembles PostgreSQL's CVE-2024-10977. + + + + + + + Fix the watchdog process not reloading configurations. (Bo Peng) + + + The reload_config() function + in Pgpool-II should send + a SIGHUP signal to the watchdog process. + + + + + + + Fix bug in do_query. (Tatsuo Ishii) + + + Fix do_query to use ntohs/ntohl instead of htons/htonl. + + + + + + + Fix authentication failure after updating pool_passwd and reload. (Tatsuo Ishii) + + + If pool_hba.conf is disabled, + updating pool_passwd was not recognized + by Pgpool-II child process even + if Pgpool-II reload was performed. + The reload processing function check_config_reload() mistakenly assumed + that reopening pool_passwd was only necessary when + is on. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html" + + + + + + + Fix COPY hangs. (#79) (Tatsuo Ishii) + + + During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush + or Sync messages. According to the F/B protocol specification, they + should be ignored but Pgpool-II treated as an invalid message and this + causes COPY hung. + + + Also a regression test is added for this issue. + + + + + + + Fix Pgpool-II child process crash during shutdown. (Tatsuo Ishii) + + + The actual crash was in close_all_backend_connections(). + close_all_backend_connections() was + called because on_system_exit registers + child_will_go_down(). + At the moment it seems pgpool child had just started up and doing + pool_init_cp(). The connection pool + object had not been completely initialized, that's cause of the crash. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii) + + + When is empty string, + health check process looks for the password from pool_passwd file. + Problem is, the file descriptor for the file is inherited from + parent pgpool process. + This means that pgpool main and health check process (possibly multiple + process) share the same descriptor, which causes various problem + including the issue reported here. To fix the problem, re-open the + file when health check process starts so that each health check + process owns its own file descriptor. + + + Note that pgpool child process (responsible for frontend sessions) + already re-opens the file descriptor and they are not related to the + issue. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + Optimize query cache invalidation for ALTER ROLE. (Tatsuo Ishii) + + + Commit 6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89 invalidates query + cache if any ALTER ROLE/USER statement is used. + Actually this is an overkill. + Because following queries do not affect the privilege of the role. + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + So do not invalidate query cache if those commands are used. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Fix Pgpool-II crash when pgpool child process exits. (Tatsuo Ishii) + + + When a pgpool child process exits, + close_all_backend_connections() is + called, which is responsible for closing all connections to backend in + the connection pool. It used mistakenly MAIN_CONNECTION macro, which + is fine for current active connections but is not good for pooled + connections because a main node could be different at the time when + the connection pool was created. + Fix is using in_use_backend() instead. + + + Reported-by: Emond Papegaaij + + + + + + + Fix bug in replication/snapshot isolation mode. (#69) (Tatsuo Ishii) + + + When INSERT command is received, + pgpool automatically issues table LOCK command to the + target table but it forgot to send the command to + other than main nodes. This only happened in extended query mode. + + + + + + + Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii) + + + insert_lock() forgot to send row lock command (lock_kind == 3 case) to + other than main node. + + + + + + + Fix resource leaks in pool_memqcache.c. (Tatsuo Ishii) + + + These leaks were brought in by commit 6fdba5c33. + + + + + + + + Documents + + + + + Fix typos in the documentation and sample configuration files. (Bo Peng) + + + + + + + Regression Tests + + + + + Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii) + + + + + + Release 4.2.19 diff --git a/doc/src/sgml/release-4.3.sgml b/doc/src/sgml/release-4.3.sgml index 9a8c745fa..9b50e64a1 100644 --- a/doc/src/sgml/release-4.3.sgml +++ b/doc/src/sgml/release-4.3.sgml @@ -1,6 +1,279 @@ + + Release 4.3.13 + + Release Date + 2024-11-28 + + + + Bug fixes + + + + + + Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii) + + + In the client side implementation of SSL negotiation + (pool_ssl_negotiate_clientserver()), it was possible for a + man-in-the-middle attacker to send a long error message to confuse + Pgpool-II or client while in the SSL negotiation phase. This commit + rejects the negotiation immediately (issue a FATAL error) and exits + the session to prevent such an attack. + + + This resembles PostgreSQL's CVE-2024-10977. + + + + + + + Fix the watchdog process not reloading configurations. (Bo Peng) + + + The reload_config() function + in Pgpool-II should send + a SIGHUP signal to the watchdog process. + + + + + + + Fix bug in do_query. (Tatsuo Ishii) + + + Fix do_query to use ntohs/ntohl instead of htons/htonl. + + + + + + + Fix authentication failure after updating pool_passwd and reload. (Tatsuo Ishii) + + + If pool_hba.conf is disabled, + updating pool_passwd was not recognized + by Pgpool-II child process even + if Pgpool-II reload was performed. + The reload processing function check_config_reload() mistakenly assumed + that reopening pool_passwd was only necessary when + is on. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html" + + + + + + + Fix COPY hangs. (#79) (Tatsuo Ishii) + + + During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush + or Sync messages. According to the F/B protocol specification, they + should be ignored but Pgpool-II treated as an invalid message and this + causes COPY hung. + + + Also a regression test is added for this issue. + + + + + + + Fix Pgpool-II child process crash during shutdown. (Tatsuo Ishii) + + + The actual crash was in close_all_backend_connections(). + close_all_backend_connections() was + called because on_system_exit registers + child_will_go_down(). + At the moment it seems pgpool child had just started up and doing + pool_init_cp(). The connection pool + object had not been completely initialized, that's cause of the crash. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii) + + + When is empty string, + health check process looks for the password from pool_passwd file. + Problem is, the file descriptor for the file is inherited from + parent pgpool process. + This means that pgpool main and health check process (possibly multiple + process) share the same descriptor, which causes various problem + including the issue reported here. To fix the problem, re-open the + file when health check process starts so that each health check + process owns its own file descriptor. + + + Note that pgpool child process (responsible for frontend sessions) + already re-opens the file descriptor and they are not related to the + issue. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + Optimize query cache invalidation for ALTER ROLE. (Tatsuo Ishii) + + + Commit 6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89 invalidates query + cache if any ALTER ROLE/USER statement is used. + Actually this is an overkill. + Because following queries do not affect the privilege of the role. + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + So do not invalidate query cache if those commands are used. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Fix Pgpool-II crash when pgpool child process exits. (Tatsuo Ishii) + + + When a pgpool child process exits, + close_all_backend_connections() is + called, which is responsible for closing all connections to backend in + the connection pool. It used mistakenly MAIN_CONNECTION macro, which + is fine for current active connections but is not good for pooled + connections because a main node could be different at the time when + the connection pool was created. + Fix is using in_use_backend() instead. + + + Reported-by: Emond Papegaaij + + + + + + + Fix bug in replication/snapshot isolation mode. (#69) (Tatsuo Ishii) + + + When INSERT command is received, + pgpool automatically issues table LOCK command to the + target table but it forgot to send the command to + other than main nodes. This only happened in extended query mode. + + + + + + + Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii) + + + insert_lock() forgot to send row lock command (lock_kind == 3 case) to + other than main node. + + + + + + + Fix resource leaks in pool_memqcache.c. (Tatsuo Ishii) + + + These leaks were brought in by commit 6fdba5c33. + + + + + + + + Documents + + + + + Fix typos in the documentation and sample configuration files. (Bo Peng) + + + + + + + Regression Tests + + + + + Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii) + + + + + + Release 4.3.12 diff --git a/doc/src/sgml/release-4.4.sgml b/doc/src/sgml/release-4.4.sgml index 222640f1e..ac1e1b9fb 100644 --- a/doc/src/sgml/release-4.4.sgml +++ b/doc/src/sgml/release-4.4.sgml @@ -1,6 +1,279 @@ + + Release 4.4.10 + + Release Date + 2024-11-28 + + + + Bug fixes + + + + + + Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii) + + + In the client side implementation of SSL negotiation + (pool_ssl_negotiate_clientserver()), it was possible for a + man-in-the-middle attacker to send a long error message to confuse + Pgpool-II or client while in the SSL negotiation phase. This commit + rejects the negotiation immediately (issue a FATAL error) and exits + the session to prevent such an attack. + + + This resembles PostgreSQL's CVE-2024-10977. + + + + + + + Fix the watchdog process not reloading configurations. (Bo Peng) + + + The reload_config() function + in Pgpool-II should send + a SIGHUP signal to the watchdog process. + + + + + + + Fix bug in do_query. (Tatsuo Ishii) + + + Fix do_query to use ntohs/ntohl instead of htons/htonl. + + + + + + + Fix authentication failure after updating pool_passwd and reload. (Tatsuo Ishii) + + + If pool_hba.conf is disabled, + updating pool_passwd was not recognized + by Pgpool-II child process even + if Pgpool-II reload was performed. + The reload processing function check_config_reload() mistakenly assumed + that reopening pool_passwd was only necessary when + is on. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html" + + + + + + + Fix COPY hangs. (#79) (Tatsuo Ishii) + + + During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush + or Sync messages. According to the F/B protocol specification, they + should be ignored but Pgpool-II treated as an invalid message and this + causes COPY hung. + + + Also a regression test is added for this issue. + + + + + + + Fix Pgpool-II child process crash during shutdown. (Tatsuo Ishii) + + + The actual crash was in close_all_backend_connections(). + close_all_backend_connections() was + called because on_system_exit registers + child_will_go_down(). + At the moment it seems pgpool child had just started up and doing + pool_init_cp(). The connection pool + object had not been completely initialized, that's cause of the crash. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii) + + + When is empty string, + health check process looks for the password from pool_passwd file. + Problem is, the file descriptor for the file is inherited from + parent pgpool process. + This means that pgpool main and health check process (possibly multiple + process) share the same descriptor, which causes various problem + including the issue reported here. To fix the problem, re-open the + file when health check process starts so that each health check + process owns its own file descriptor. + + + Note that pgpool child process (responsible for frontend sessions) + already re-opens the file descriptor and they are not related to the + issue. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + Optimize query cache invalidation for ALTER ROLE. (Tatsuo Ishii) + + + Commit 6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89 invalidates query + cache if any ALTER ROLE/USER statement is used. + Actually this is an overkill. + Because following queries do not affect the privilege of the role. + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + So do not invalidate query cache if those commands are used. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Fix Pgpool-II crash when pgpool child process exits. (Tatsuo Ishii) + + + When a pgpool child process exits, + close_all_backend_connections() is + called, which is responsible for closing all connections to backend in + the connection pool. It used mistakenly MAIN_CONNECTION macro, which + is fine for current active connections but is not good for pooled + connections because a main node could be different at the time when + the connection pool was created. + Fix is using in_use_backend() instead. + + + Reported-by: Emond Papegaaij + + + + + + + Fix bug in replication/snapshot isolation mode. (#69) (Tatsuo Ishii) + + + When INSERT command is received, + pgpool automatically issues table LOCK command to the + target table but it forgot to send the command to + other than main nodes. This only happened in extended query mode. + + + + + + + Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii) + + + insert_lock() forgot to send row lock command (lock_kind == 3 case) to + other than main node. + + + + + + + Fix resource leaks in pool_memqcache.c. (Tatsuo Ishii) + + + These leaks were brought in by commit 6fdba5c33. + + + + + + + + Documents + + + + + Fix typos in the documentation and sample configuration files. (Bo Peng) + + + + + + + Regression Tests + + + + + Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii) + + + + + + Release 4.4.9 diff --git a/doc/src/sgml/release-4.5.sgml b/doc/src/sgml/release-4.5.sgml index 3f086f31c..a62fb21ab 100644 --- a/doc/src/sgml/release-4.5.sgml +++ b/doc/src/sgml/release-4.5.sgml @@ -1,3 +1,276 @@ + + Release 4.5.5 + + Release Date + 2024-11-28 + + + + Bug fixes + + + + + + Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii) + + + In the client side implementation of SSL negotiation + (pool_ssl_negotiate_clientserver()), it was possible for a + man-in-the-middle attacker to send a long error message to confuse + Pgpool-II or client while in the SSL negotiation phase. This commit + rejects the negotiation immediately (issue a FATAL error) and exits + the session to prevent such an attack. + + + This resembles PostgreSQL's CVE-2024-10977. + + + + + + + Fix the watchdog process not reloading configurations. (Bo Peng) + + + The reload_config() function + in Pgpool-II should send + a SIGHUP signal to the watchdog process. + + + + + + + Fix bug in do_query. (Tatsuo Ishii) + + + Fix do_query to use ntohs/ntohl instead of htons/htonl. + + + + + + + Fix authentication failure after updating pool_passwd and reload. (Tatsuo Ishii) + + + If pool_hba.conf is disabled, + updating pool_passwd was not recognized + by Pgpool-II child process even + if Pgpool-II reload was performed. + The reload processing function check_config_reload() mistakenly assumed + that reopening pool_passwd was only necessary when + is on. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html" + + + + + + + Fix COPY hangs. (#79) (Tatsuo Ishii) + + + During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush + or Sync messages. According to the F/B protocol specification, they + should be ignored but Pgpool-II treated as an invalid message and this + causes COPY hung. + + + Also a regression test is added for this issue. + + + + + + + Fix Pgpool-II child process crash during shutdown. (Tatsuo Ishii) + + + The actual crash was in close_all_backend_connections(). + close_all_backend_connections() was + called because on_system_exit registers + child_will_go_down(). + At the moment it seems pgpool child had just started up and doing + pool_init_cp(). The connection pool + object had not been completely initialized, that's cause of the crash. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html + + + + + + + Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii) + + + When is empty string, + health check process looks for the password from pool_passwd file. + Problem is, the file descriptor for the file is inherited from + parent pgpool process. + This means that pgpool main and health check process (possibly multiple + process) share the same descriptor, which causes various problem + including the issue reported here. To fix the problem, re-open the + file when health check process starts so that each health check + process owns its own file descriptor. + + + Note that pgpool child process (responsible for frontend sessions) + already re-opens the file descriptor and they are not related to the + issue. + + + Problem reported and analyzed by Emond Papegaaij. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html + + + + + + + Optimize query cache invalidation for ALTER ROLE. (Tatsuo Ishii) + + + Commit 6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89 invalidates query + cache if any ALTER ROLE/USER statement is used. + Actually this is an overkill. + Because following queries do not affect the privilege of the role. + + +ALTER ROLE user WITH [ENCRYPTED] PASSWORD +ALTER ROLE user WITH CONNECTION LIMIT + + + So do not invalidate query cache if those commands are used. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html + + + + + + + Fix Pgpool-II crash when pgpool child process exits. (Tatsuo Ishii) + + + When a pgpool child process exits, + close_all_backend_connections() is + called, which is responsible for closing all connections to backend in + the connection pool. It used mistakenly MAIN_CONNECTION macro, which + is fine for current active connections but is not good for pooled + connections because a main node could be different at the time when + the connection pool was created. + Fix is using in_use_backend() instead. + + + Reported-by: Emond Papegaaij + + + + + + + Fix bug in replication/snapshot isolation mode. (#69) (Tatsuo Ishii) + + + When INSERT command is received, + pgpool automatically issues table LOCK command to the + target table but it forgot to send the command to + other than main nodes. This only happened in extended query mode. + + + + + + + Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii) + + + insert_lock() forgot to send row lock command (lock_kind == 3 case) to + other than main node. + + + + + + + Fix resource leaks in pool_memqcache.c. (Tatsuo Ishii) + + + These leaks were brought in by commit 6fdba5c33. + + + + + + + + Documents + + + + + Fix typos in the documentation and sample configuration files. (Bo Peng) + + + + + + + Regression Tests + + + + + Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii) + + + + + + Release 4.5.4