Pgpool-II 4.5.5 文書 | |||
---|---|---|---|
前のページ | 上に戻る | 付録 A. リリースノート | 次のページ |
リリース日: 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()
は、enable_pool_hbaが有効な場合にのみ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)
health_check_passwordが空文字列の場合、ヘルスチェックプロセスは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)