[pgpool-general-jp: 1393] pgpool-II 3.4.4, 3.3.8 3.2.13, 3.1.16, and 3.0, 20 released
Yugo Nagata
nagata @ sraoss.co.jp
2016年 2月 5日 (金) 18:03:06 JST
長田です。
pgpool-II 3.4.4, 3.3.8, 3.2.13, 3.1.16, 3.0,20 をリリースしましたので
お知らせいたします。
pgpool-II 3.0.20 は 3.0 系の最終リリースです。この系は "End of Life" となり、
これ以後のメンテナンスやアップデートは行われません。
以下からダウンロードすることができます。
http://pgpool.net/mediawiki/index.php/Downloads
=================================================================================
リリースノート
=================================================================================
3.4.4 (tataraboshi) 2016/02/05
* 概要
このバージョンは 3.4.3 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- doc: ドキュメントのロードバランスに関する情報を修正しました。(Tatsuo Ishii)
ストリーミングレプリケーションでは DECLARE, FETCH, CLOSE, SHOW はプライマリ
ノードにのみ送られます。[pgpool-general-jp: 1378] での指摘によります。
- pgpool_status 書き込み時に fsync() を実行するようになりました。(Tatsuo Ishii)
これにより、pgpool_status が永続ストレージに保存され、システムクラッシュ時
も情報が失われないことを保証します。
- リセットクエリがスタックする問題を修正しました。(Muhammad Usama)
DISCARD ALL などのリセットクエリが時々終了せずに pgpool 子プロセスはバック
エンドからの応答を待ったままとなり、その結果、クライアントが pgpool-II に
接続できなくなるという報告があります(例えば bug #107 の報告)。原因は
まだ特定できていませんが、クライアントがクエリ処理中に突然 pgpool-II への
接続をクローズした場合、バックエンドは ready for query でないために、
リセットクエリを受け付けられなくなるかもしれません。
この問題は、フロントエンドのソケットの状態を追跡し続け、フロントエンドへの
接続が適切に終了できない場合には PostgreSQL の接続をキャッシュしないことで
修正されました。
- test: レグレッションテスト 062 の誤報を修正しました。(Yugo Nagata)
- test: ネイティブレプリケーションのレグレッションテストが壊れていたのを修正
しました(Yugo Nagata)
insert-lock のテストが動作していませんでした。
- test: レグレッションテストで pgpool_reload の後に sleep を実行するよう修正
しました。(Yugo Nagata)
いくつかのテストでは設定ファイルを変更しリロードしますが、時々のリロードを
実行した直後では設定の変更が適用されていないことがありました。
- レプリケーションモードで発生するシーケンス値の不整合を修正しました。
(Yugo Nagata)
スキーマ名が与えられときに、テーブル名が正しくない方法で引用符がつけられて
いました。例えば、"public"."mytbl" ではなく "public.mytbl" というようにです。
このため、pool_regclass または to_regclass が正しくテーブルの OID を取得
できず、insert-lock が常に実行されなくなっていました。これは DB 間の不整合
の原因となっていました。
- test: timestamp rewrite テストのコンパイラエラーとセグメンテーションフォルト
を修正しました。(Yugo Nagata)
- test: timestamp rewrite テストをレグレッションテストに追加しました。
(Yugo Nagata)
- doc: 日本語ドキュメントに未翻訳の文があったのを修正しました。(Yugo Nagata)
- 古くから存在していた pool_push() 関連関数のバグを修正しました。(Tatsuo Ishii)
これはバッファを realloc で割り当て、返却されたポインタを使っていますが、
realloc が呼ばれる前にポインタの計算を行っていたため、古いポインタ値が使われ
ることになり、セグメンテーションフォルトを含む様々な問題の原因となっていました。
また、他にも問題がありました。バッファポインタやバッファサイズが初期化され
ていない、バッファが pool_close で解放されていない、デバッグメッセージの
typo などです。これらも同時に修正されました。
- doc: log_standby_delay に関するドキュメントの誤った記述が修正されました。
(Yugo Nagata)
- doc: app_name_redirect_preference_list の JDBC ドライバに関する注意を
ドキュメントに追加しました。(Tatsuo Ishii)
- bug #145 で報告されたハングを修正しました。(Tatsuo Ishii)
この問題は以下の全ての条件が揃うと発生します:
-- pgpool-II 3.4 か、それ以降
-- ストリーミングレプリケーションモード
-- プライマリノードがロードバランス先
-- 拡張プロトコルが使われている
- test: レグレッションテスト 065 を修正しました。(Tatsuo Ishii)
JDBC ドライバのパスが明示的に定義されていました。これは良くないため、
JDBC_DRIVER 環境変数の値を用いるように変更されました。
- test: レグレッションテスト 054.postgres_fdw で発生し得るハングアップを修正
しました。(Yugo Nagata)
- test: レグレッションテストと pgpool_setup に unix ドメインソケットディレ
クトリを指定するオプションを追加しました。(Yugo Nagata)
- doc: ドキュメントに欠けていたデフォルト値の記述を追加しました。(Yugo Nagata)
- test: regress.sh のオプション処理のバグを修正しました。(Yugo Nagata)
- test: PostgreSQL rhel7 向け rpm に対応するため、レグレッションテスト
055.backend_all_down で PGSOCKET_DIR を使う様修正しました。(Yugo Nagata)
- リセットクエリがスタックする問題を修正しました。(Muhammad Usama)
この問題は他のブランチでは既に修正済みであり、今回も 3.3 シリーズと同じ方法で
解決されました。すなわち、client idle limit に達した際に、バックエンドの接続
を閉じるようにしました。
- "SET TRANSACTION READ ONLY" のバグを修正しました。(Tatsuo Ishii)
pgpool-II は読み込み以外を行うクエリ(SET を含む)が明示的なトランザクション
の中で実行されたことを記憶し、それが「書き込みトランザクション」であること
をマークします。これはストリーミングレプリケーション時のクエリの振り分け
処理に影響します。pgpool-II はそのマークの後、クエリをプライマリに送信する
ようになります。これは、ストリーミングレプリケーションで書き込みクエリの
結果がスタンバイで遅れて現れるために、クエリはプライマリに送られが方がより
安全だからです。
ただし、見過ごされていましたが "SET TRANSACTION READ ONLY" はデータを変更
しないので、例外として扱われるべきでした。
バグ報告 #157 によります。
- test: レグレッションテスト 063 のタイムアウト処理で timeout コマンドを使用
するよう修正しました。(Yugo Nagata)
- エラー出力が誤っていた箇所を修正しました。(Tatsuo Ishii)
connect_with_timeout() で getsockopt(SO_ERROR) がエラーを報告した際に、適切
なエラー情報が表示できていませんでした。bug #159 の報告によります。
- test: regress.sh のヘルプメッセージで抜けていた改行を追加しました。
(Yugo Nagata)
- get_backends_status() 関数のロジックの誤りを修正しました。(Muhammad Usama)
get_backends_status () 関数は現在の有効でかつダウンしているバックエンド
ノードの数をカウントします。このとき、有効ではないノードは常にダウン
ステータスにあることを前提にしていましたが、この前提は常に正しい訳では
ありません。
- test: レグレッションテスト 003.failover を rhtl7 向け PostgreSQL rpm に対応
させました。(Yugo Nagata)
'show pool_nodes' の期待される結果の hostname カラムで PGSOCKET_DIR の値を
使うように修正されました。
- white/black_memqcache_table_list パラメータがクォーテーションを要求しない
よう修正しました。(Yugo Nagata)
*_memqcache_table_list でテーブル名およびスキーマ名を指定する際に、ダブル
クォーテーションが必要となっていました。修正パッチは Dang Minh Huong に
よって提供されました。[pgpool-hackers: 1323] の報告によります。
- 設定リロード時の FATAL エラーを修正しました。(Tatsuo Ishii)
pgpool.conf をリロードする際には DB ノードの数が一時的に 0 にセットされた
のちに pgpool メインプロセスにより実際のバックエンド数に達するまでカウント
アップされます。この変数が共有メモリ上にあったため pgpool 子プロセスで問題
が発生し FATAL エラーの原因となっていました。
Bug #156 の harukat の報告によります。
- test: レグレッションテスト 006.memqcache に white/black_memqcache_table_list
のテストを追加しました。 (Yugo Nagata)
- リセットクエリがスタックする問題を修正しました。(Muhammad Usama, Tatsuo Ishii)
pool_read がフロントエンドからの読み込みに失敗した場合、または poll_flush
がフロントエンドへの書き込みに失敗した場合に、pgpool 子プロセスの切断・終了
処理を行うERROR ではなく、FRONTEND_ERROR を報告するようにしました。これに
よりクエリがスタックすることを防止します。
- test: デバッグモードで失敗していたレグレッションテストを修正しました。
(Yugo Nagata)
- IPv6 使用時のパフォーマンス低下を修正しました。(Muhammad Usama)
Bug #165 の報告によります。
- wd_authkey ハッシュ計算失敗時に警告メッセージを出力するようにしました。
(Yugo Nagata)
たまに、認証キー不一致以外の何らかの理由で wd_authkey 計算に失敗することがあり
ます。メッセージ出力を追加することでこれらを互いに区別できるようにしました。
- test: 個々のテストのタイムアウトをチェックできるようレグレッションテストを修正
しました。(Yugo Nagata)
- test: タイムアウトの値をコマンドオプションで指定できるようにしました。
(Yugo Nagat)
- データを更新する WITH 句に関するバグが修正されました。(Tatsuo Ishii)
pgpool-II 3.3 以降では データを更新する WITH 句を認識する SQL パーサを持って
いたにもかかわらず、pgpool-II はこれを認識していませんでした。このバグは
pgpool-II 3.5 で(PostgreSQL 9.5 のパーサを取り込む際に)修正され、この修正
が pgpool-II 3.3 及び 3.4 にバックポートされました。
Bug #153 の報告によります。
- FROM 句に関数が使われた場合に発生するセグメンテーションフォルトが修正されました。
(Yugo Nagata)
ストリーミングレプリケーションモードでの PREPARE 文、ネイティブレプリケー
ションモードでの SELECT を伴う INSERT/UPDATE 文が影響を受けていました。
例)
prepare p as select * from generate_series(1,1);
insert into tbl select now(), * from generate_series(1,1);
- arping_cmd の設定チェックが働かない場合があるのを修正しました。(Muhammad Usama)
wd_chk_setuid() 関数はいずれかのネットワーク設定コマンドに setuid ビットが
セットされていないのを発見すると、NOTICE メッセージを出してただちに終了し、
残りの設定のチェックを無視していました。
bug #139 の報告によります。
- doc: 複数の pgpool-II を同時に起動することに関する制限事項を追加しました。
(Yugo Nagata)
- erreport で errno の値を直接ではなく保存して使うように修正しました。
(Yugo Nagata)
errmsg() や errhint() の中ではいくつかのシステムコールが呼ばれており、errno
を直接引数として渡すのは安全ではありません。これは以下のような混乱を招く
ログメッセージの原因となっていました。
DETAIL: connect() reports failure "Success"
- インメモリクエリキャッシュのバグを修正しました。(Tatsuo Ishii)
拡張プロトコルが使用されており、以前の parse メッセージで作成された文を使用
する bind/execute メッセージが到着した際に、一時キャッシュが parse メッセージ
で初期されておらず、メッセージは既存の一時キャッシュに追加されていました。
これが、キャッシュの結果を返すときに Data Row メッセージと Command Complete
メッセージが2重に現れるというトラブルの原因になっていました。
bug #152 の報告によります。
- FreeBSD のコンパイルの問題を修正し、不足していたインクルードファイルを追加
しました。(Muhammad Usama)
===============================================================================
3.3.8 (tokakiboshi) 2016/02/05
* 概要
このバージョンは 3.3.7 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- doc: ドキュメントのロードバランスに関する情報を修正しました。(Tatsuo Ishii)
ストリーミングレプリケーションでは DECLARE, FETCH, CLOSE, SHOW はプライマリ
ノードにのみ送られます。[pgpool-general-jp: 1378] での指摘によります。
- pgpool_status 書き込み時に fsync() を実行するようになりました。(Tatsuo Ishii)
これにより、pgpool_status が永続ストレージに保存され、システムクラッシュ時
も情報が失われないことを保証します。
- test: レグレッションテスト 062 の誤報を修正しました。(Yugo Nagata)
- test: ネイティブレプリケーションのレグレッションテストが壊れていたのを修正
しました(Yugo Nagata)
insert-lock のテストが動作していませんでした。
- test: レグレッションテストで pgpool_reload の後に sleep を実行するよう修正
しました。(Yugo Nagata)
いくつかのテストでは設定ファイルを変更しリロードしますが、時々のリロードを
実行した直後では設定の変更が適用されていないことがありました。
- レプリケーションモードで発生するシーケンス値の不整合を修正しました。
(Yugo Nagata)
スキーマ名が与えられときに、テーブル名が正しくない方法で引用符がつけられて
いました。例えば、"public"."mytbl" ではなく "public.mytbl" というようにです。
このため、pool_regclass または to_regclass が正しくテーブルの OID を取得
できず、insert-lock が常に実行されなくなっていました。これは DB 間の不整合
の原因となっていました。
- test: timestamp rewrite テストのコンパイラエラーとセグメンテーションフォルト
を修正しました。(Yugo Nagata)
- test: timestamp rewrite テストをレグレッションテストに追加しました。
(Yugo Nagata)
- 古くから存在していた pool_push() 関連関数のバグを修正しました。(Tatsuo Ishii)
これはバッファを realloc で割り当て、返却されたポインタを使っていますが、
realloc が呼ばれる前にポインタの計算を行っていたため、古いポインタ値が使われ
ることになり、セグメンテーションフォルトを含む様々な問題の原因となっていました。
また、他にも問題がありました。バッファポインタやバッファサイズが初期化され
ていない、バッファが pool_close で解放されていない、デバッグメッセージの
typo などです。これらも同時に修正されました。
- doc: log_standby_delay に関するドキュメントの誤った記述が修正されました。
(Yugo Nagata)
- test: レグレッションテスト 065 を修正しました。(Tatsuo Ishii)
JDBC ドライバのパスが明示的に定義されていました。これは良くないため、
JDBC_DRIVER 環境変数の値を用いるように変更されました。
- test: レグレッションテストと pgpool_setup に unix ドメインソケットディレ
クトリを指定するオプションを追加しました。(Yugo Nagata)
- doc: ドキュメントに欠けていたデフォルト値の記述を追加しました。(Yugo Nagata)
- test: regress.sh のオプション処理のバグを修正しました。(Yugo Nagata)
- test: PostgreSQL rhel7 向け rpm に対応するため、レグレッションテスト
055.backend_all_down で PGSOCKET_DIR を使う様修正しました。(Yugo Nagata)
- "SET TRANSACTION READ ONLY" のバグを修正しました。(Tatsuo Ishii)
pgpool-II は読み込み以外を行うクエリ(SET を含む)が明示的なトランザクション
の中で実行されたことを記憶し、それが「書き込みトランザクション」であること
をマークします。これはストリーミングレプリケーション時のクエリの振り分け
処理に影響します。pgpool-II はそのマークの後、クエリをプライマリに送信する
ようになります。これは、ストリーミングレプリケーションで書き込みクエリの
結果がスタンバイで遅れて現れるために、クエリはプライマリに送られが方がより
安全だからです。
ただし、見過ごされていましたが "SET TRANSACTION READ ONLY" はデータを変更
しないので、例外として扱われるべきでした。
バグ報告 #157 によります。
- test: レグレッションテスト 063 のタイムアウト処理で timeout コマンドを使用
するよう修正しました。(Yugo Nagata)
- test: regress.sh のヘルプメッセージで抜けていた改行を追加しました。
(Yugo Nagata)
- test: レグレッションテスト 003.failover を rhtl7 向け PostgreSQL rpm に対応
させました。(Yugo Nagata)
'show pool_nodes' の期待される結果の hostname カラムで PGSOCKET_DIR の値を
使うように修正されました。
- white/black_memqcache_table_list パラメータがクォーテーションを要求しない
よう修正しました。(Yugo Nagata)
*_memqcache_table_list でテーブル名およびスキーマ名を指定する際に、ダブル
クォーテーションが必要となっていました。修正パッチは Dang Minh Huong に
よって提供されました。[pgpool-hackers: 1323] の報告によります。
- 設定リロード時の FATAL エラーを修正しました。(Tatsuo Ishii)
pgpool.conf をリロードする際には DB ノードの数が一時的に 0 にセットされた
のちに pgpool メインプロセスにより実際のバックエンド数に達するまでカウント
アップされます。この変数が共有メモリ上にあったため pgpool 子プロセスで問題
が発生し FATAL エラーの原因となっていました。
Bug #156 の harukat の報告によります。
- test: レグレッションテスト 006.memqcache に white/black_memqcache_table_list
のテストを追加しました。 (Yugo Nagata)
- wd_authkey ハッシュ計算失敗時に警告メッセージを出力するようにしました。
(Yugo Nagata)
たまに、認証キー不一致以外の何らかの理由で wd_authkey 計算に失敗することがあり
ます。メッセージ出力を追加することでこれらを互いに区別できるようにしました。
- test: 個々のテストのタイムアウトをチェックできるようレグレッションテストを修正
しました。(Yugo Nagata)
- test: タイムアウトの値をコマンドオプションで指定できるようにしました。
(Yugo Nagat)
- データを更新する WITH 句に関するバグが修正されました。(Tatsuo Ishii)
pgpool-II 3.3 以降では データを更新する WITH 句を認識する SQL パーサを持って
いたにもかかわらず、pgpool-II はこれを認識していませんでした。このバグは
pgpool-II 3.5 で(PostgreSQL 9.5 のパーサを取り込む際に)修正され、この修正
が pgpool-II 3.3 及び 3.4 にバックポートされました。
Bug #153 の報告によります。
- arping_cmd の設定チェックが働かない場合があるのを修正しました。(Muhammad Usama)
wd_chk_setuid() 関数はいずれかのネットワーク設定コマンドに setuid ビットが
セットされていないのを発見すると、NOTICE メッセージを出してただちに終了し、
残りの設定のチェックを無視していました。
bug #139 の報告によります。
- doc: 複数の pgpool-II を同時に起動することに関する制限事項を追加しました。
(Yugo Nagata)
- インメモリクエリキャッシュのバグを修正しました。(Tatsuo Ishii)
拡張プロトコルが使用されており、以前の parse メッセージで作成された文を使用
する bind/execute メッセージが到着した際に、一時キャッシュが parse メッセージ
で初期されておらず、メッセージは既存の一時キャッシュに追加されていました。
これが、キャッシュの結果を返すときに Data Row メッセージと Command Complete
メッセージが2重に現れるというトラブルの原因になっていました。
bug #152 の報告によります。
- ステートメント/ポータルが存在しない場合は、これらのクローズ要求を無視するよう
修正しました。(Tatsuo Ishii)
この場合は単にクローズ完了メッセージをクライアントに返すだけとなります。
この修正は過去に pgpool-II 3.4 で修正された以下のコミットのバックポートです。
1a37e1c35bd8b6f10f524693bbcb7b51f73b4bf0
- test: show pool_nodes の期待される結果のポート番号を修正しました。(Yugo Nagata)
===============================================================================
3.2.13 (namameboshi) 2016/02/05
* 概要
このバージョンは 3.2.12 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- doc: ドキュメントのロードバランスに関する情報を修正しました。(Tatsuo Ishii)
ストリーミングレプリケーションでは DECLARE, FETCH, CLOSE, SHOW はプライマリ
ノードにのみ送られます。[pgpool-general-jp: 1378] での指摘によります。
- pgpool_status 書き込み時に fsync() を実行するようになりました。(Tatsuo Ishii)
これにより、pgpool_status が永続ストレージに保存され、システムクラッシュ時
も情報が失われないことを保証します。
- 古くから存在していた pool_push() 関連関数のバグを修正しました。(Tatsuo Ishii)
これはバッファを realloc で割り当て、返却されたポインタを使っていますが、
realloc が呼ばれる前にポインタの計算を行っていたため、古いポインタ値が使われ
ることになり、セグメンテーションフォルトを含む様々な問題の原因となっていました。
また、他にも問題がありました。バッファポインタやバッファサイズが初期化され
ていない、バッファが pool_close で解放されていない、デバッグメッセージの
typo などです。これらも同時に修正されました。
- doc: log_standby_delay に関するドキュメントの誤った記述が修正されました。
(Yugo Nagata)
- "SET TRANSACTION READ ONLY" のバグを修正しました。(Tatsuo Ishii)
pgpool-II は読み込み以外を行うクエリ(SET を含む)が明示的なトランザクション
の中で実行されたことを記憶し、それが「書き込みトランザクション」であること
をマークします。これはストリーミングレプリケーション時のクエリの振り分け
処理に影響します。pgpool-II はそのマークの後、クエリをプライマリに送信する
ようになります。これは、ストリーミングレプリケーションで書き込みクエリの
結果がスタンバイで遅れて現れるために、クエリはプライマリに送られが方がより
安全だからです。
ただし、見過ごされていましたが "SET TRANSACTION READ ONLY" はデータを変更
しないので、例外として扱われるべきでした。
バグ報告 #157 によります。
- 設定リロード時の FATAL エラーを修正しました。(Tatsuo Ishii)
pgpool.conf をリロードする際には DB ノードの数が一時的に 0 にセットされた
のちに pgpool メインプロセスにより実際のバックエンド数に達するまでカウント
アップされます。この変数が共有メモリ上にあったため pgpool 子プロセスで問題
が発生し FATAL エラーの原因となっていました。
Bug #156 の harukat の報告によります。
- doc: 複数の pgpool-II を同時に起動することに関する制限事項を追加しました。
(Yugo Nagata)
- インメモリクエリキャッシュのバグを修正しました。(Tatsuo Ishii)
拡張プロトコルが使用されており、以前の parse メッセージで作成された文を使用
する bind/execute メッセージが到着した際に、一時キャッシュが parse メッセージ
で初期されておらず、メッセージは既存の一時キャッシュに追加されていました。
これが、キャッシュの結果を返すときに Data Row メッセージと Command Complete
メッセージが2重に現れるというトラブルの原因になっていました。
bug #152 の報告によります。
- ステートメント/ポータルが存在しない場合は、これらのクローズ要求を無視するよう
修正しました。(Tatsuo Ishii)
この場合は単にクローズ完了メッセージをクライアントに返すだけとなります。
この修正は過去に pgpool-II 3.4 で修正された以下のコミットのバックポートです。
1a37e1c35bd8b6f10f524693bbcb7b51f73b4bf0
===============================================================================
3.1.16 (hatsuiboshi) 2016/02/05
* 概要
このバージョンは 3.1.15 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- doc: ドキュメントのロードバランスに関する情報を修正しました。(Tatsuo Ishii)
ストリーミングレプリケーションでは DECLARE, FETCH, CLOSE, SHOW はプライマリ
ノードにのみ送られます。[pgpool-general-jp: 1378] での指摘によります。
- pgpool_status 書き込み時に fsync() を実行するようになりました。(Tatsuo Ishii)
これにより、pgpool_status が永続ストレージに保存され、システムクラッシュ時
も情報が失われないことを保証します。
- doc: log_standby_delay に関するドキュメントの誤った記述が修正されました。
(Yugo Nagata)
- "SET TRANSACTION READ ONLY" のバグを修正しました。(Tatsuo Ishii)
pgpool-II は読み込み以外を行うクエリ(SET を含む)が明示的なトランザクション
の中で実行されたことを記憶し、それが「書き込みトランザクション」であること
をマークします。これはストリーミングレプリケーション時のクエリの振り分け
処理に影響します。pgpool-II はそのマークの後、クエリをプライマリに送信する
ようになります。これは、ストリーミングレプリケーションで書き込みクエリの
結果がスタンバイで遅れて現れるために、クエリはプライマリに送られが方がより
安全だからです。
ただし、見過ごされていましたが "SET TRANSACTION READ ONLY" はデータを変更
しないので、例外として扱われるべきでした。
バグ報告 #157 によります。
- 設定リロード時の FATAL エラーを修正しました。(Tatsuo Ishii)
pgpool.conf をリロードする際には DB ノードの数が一時的に 0 にセットされた
のちに pgpool メインプロセスにより実際のバックエンド数に達するまでカウント
アップされます。この変数が共有メモリ上にあったため pgpool 子プロセスで問題
が発生し FATAL エラーの原因となっていました。
Bug #156 の harukat の報告によります。
- ステートメント/ポータルが存在しない場合は、これらのクローズ要求を無視するよう
修正しました。(Tatsuo Ishii)
この場合は単にクローズ完了メッセージをクライアントに返すだけとなります。
この修正は過去に pgpool-II 3.4 で修正された以下のコミットのバックポートです。
1a37e1c35bd8b6f10f524693bbcb7b51f73b4bf0
===============================================================================
3.0.20 (umiyameboshi) 2016/02/05
* 概要
このバージョンは 3.0.19 に対するバグ修正リリースです。
これは 3.0 系の最終リリースです。pgpool-II 3.0 は End of Life となり、
これ以上のメンテナンスやアップデートは行われません。
__________________________________________________________________
* バグ修正
- doc: ドキュメントのロードバランスに関する情報を修正しました。(Tatsuo Ishii)
ストリーミングレプリケーションでは DECLARE, FETCH, CLOSE, SHOW はプライマリ
ノードにのみ送られます。[pgpool-general-jp: 1378] での指摘によります。
- pgpool_status 書き込み時に fsync() を実行するようになりました。(Tatsuo Ishii)
これにより、pgpool_status が永続ストレージに保存され、システムクラッシュ時
も情報が失われないことを保証します。
- doc: log_standby_delay に関するドキュメントの誤った記述が修正されました。
(Yugo Nagata)
- "SET TRANSACTION READ ONLY" のバグを修正しました。(Tatsuo Ishii)
pgpool-II は読み込み以外を行うクエリ(SET を含む)が明示的なトランザクション
の中で実行されたことを記憶し、それが「書き込みトランザクション」であること
をマークします。これはストリーミングレプリケーション時のクエリの振り分け
処理に影響します。pgpool-II はそのマークの後、クエリをプライマリに送信する
ようになります。これは、ストリーミングレプリケーションで書き込みクエリの
結果がスタンバイで遅れて現れるために、クエリはプライマリに送られが方がより
安全だからです。
ただし、見過ごされていましたが "SET TRANSACTION READ ONLY" はデータを変更
しないので、例外として扱われるべきでした。
バグ報告 #157 によります。
- 設定リロード時の FATAL エラーを修正しました。(Tatsuo Ishii)
pgpool.conf をリロードする際には DB ノードの数が一時的に 0 にセットされた
のちに pgpool メインプロセスにより実際のバックエンド数に達するまでカウント
アップされます。この変数が共有メモリ上にあったため pgpool 子プロセスで問題
が発生し FATAL エラーの原因となっていました。
Bug #156 の harukat の報告によります。
- ステートメント/ポータルが存在しない場合は、これらのクローズ要求を無視するよう
修正しました。(Tatsuo Ishii)
この場合は単にクローズ完了メッセージをクライアントに返すだけとなります。
この修正は過去に pgpool-II 3.4 で修正された以下のコミットのバックポートです。
1a37e1c35bd8b6f10f524693bbcb7b51f73b4bf0
===============================================================================
--
Yugo Nagata <nagata @ sraoss.co.jp>
pgpool-general-jp メーリングリストの案内