</para>
<para>
<!--
- The result packet returnd by watchdog for the "GET NODES LIST"
+ The result packet returned by watchdog for the "GET NODES LIST"
will contains the list of all configured watchdog nodes to do
health check on in the <acronym>JSON</acronym> format.
The <acronym>JSON</acronym> of the watchdog nodes contains the
status and brings the virtual IP assigned to watchdog down.
Thus clients of <productname>Pgpool-II</productname> cannot
connect to <productname>Pgpool-II</productname> using the
- virtual IP any more. This is neccessary to avoid split-brain,
+ virtual IP any more. This is necessary to avoid split-brain,
that is, situations where there are multiple active
<productname>Pgpool-II</productname>.
-->
<sect1 id="tutorial-advanced-arch">
<!--
- <title>Architecure of the watchdog</title>
+ <title>Architecture of the watchdog</title>
-->
<title>watchdogの構造</title>
14. pgpool child process id
15. PostgreSQL backend id
16. process status
- 17. 1 if backend is load balance node and frontend connected, 0 othewise
+ 17. 1 if backend is load balance node and frontend connected, 0 otherwise
-->
1. 接続先のデータベース名
2. 接続先のユーザ名
hostname, the port, the status, the weight (only meaningful if
you use the load balancing mode), the role, the SELECT query
counts issued to each backend, whether each node is the load
- bakance node or not, the replication delay (only if in streaming
+ balance node or not, the replication delay (only if in streaming
replication mode) and last status change time. The possible
values in the status column are explained in
the <xref linkend="pcp-node-info"> reference. If the hostname is
</para>
<para>
<!--
- Removeing "Type=forking" and add OPTS=" -n" to
+ Removing "Type=forking" and add OPTS=" -n" to
run Pgpool-II with non-daemon mode, because we need to redirect logs.
Using "journalctl" command to see Pgpool-II systemd log.
-->
</para>
<para>
<!--
- When all backend nodes are down, <productname>Pgpool-II</> throws an uncorrect
+ When all backend nodes are down, <productname>Pgpool-II</> throws an incorrect
error message "ERROR: connection cache is full". Change the error
message to "all backend nodes are down, pgpool requires at least one valid node".
-->
<para>
<!--
In a explicit transaction, the <literal>SELECT</literal> results are cached in temporary buffer.
- If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffe should be reset.
+ If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffer should be reset.
-->
明示的なトランザクションでは、<literal>SELECT</literal>の結果は一時バッファにキャッシュされます。
テーブルを変更する書込み<acronym>SQL</acronym>が送信されると、一時的なバッファをリセットしなければなりません。
</para>
<para>
<!--
- Removeing "Type=forking" and add OPTS=" -n" to
+ Removing "Type=forking" and add OPTS=" -n" to
run Pgpool-II with non-daemon mode, because we need to redirect logs.
Using "journalctl" command to see Pgpool-II systemd log.
-->
-->
<para>
<!--
- Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failire. (Bo Peng)
+ Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failure. (Bo Peng)
-->
起動時のbind()エラーを回避するために、ソケットファイルが存在するかどうかを確認し、
PIDファイルが存在しない場合、それらのソケットファイルを削除するように修正しました。(Bo Peng)
-->
<para>
<!--
- Fix sefault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
+ Fix segfault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
-->
クエリキャッシュが有効な場合に発生するセグメンテーション違反を修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
</para>
</para>
<para>
<!--
- When all backend nodes are down, <productname>Pgpool-II</> throws an uncorrect
+ When all backend nodes are down, <productname>Pgpool-II</> throws an incorrect
error message "ERROR: connection cache is full". Change the error
message to "all backend nodes are down, pgpool requires at least one valid node".
-->
<para>
<!--
In a explicit transaction, the <literal>SELECT</literal> results are cached in temporary buffer.
- If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffe should be reset.
+ If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffer should be reset.
-->
明示的なトランザクションでは、<literal>SELECT</literal>の結果は一時バッファにキャッシュされます。
テーブルを変更する書込み<acronym>SQL</acronym>が送信されると、一時的なバッファをリセットしなければなりません。
</para>
<para>
<!--
- Removeing "Type=forking" and add OPTS=" -n" to
+ Removing "Type=forking" and add OPTS=" -n" to
run Pgpool-II with non-daemon mode, because we need to redirect logs.
Using "journalctl" command to see Pgpool-II systemd log.
-->
<!--
But the problem with this technique is that, for the instance when the node has
announced itself as a master/coordinator of the cluster and is waiting for
- the standby nodes to recognise it as a Master node. For that period of time
+ the standby nodes to recognize it as a Master node. For that period of time
the watchdog state of the node is Master/coordinator, but it is yet not fully
capable of handling the failover and failover-locking requests.
-->
<productname>Pgpool-II</productname>が "Row description" メッセージを受信した際に、クエリ処理中のフラグをリセットするように修正しました。"no data" メッセージと同じ扱いにする必要がありました。
</para>
<para>
- 詳細は<ulink url="http://www.pgpool.net/pipermail/pgpool-general/2017-June/005613.html">[pgpo ol-general: 5555]</ulink>を参照してください。
+ 詳細は<ulink url="http://www.pgpool.net/pipermail/pgpool-general/2017-June/005613.html">[pgpool-general: 5555]</ulink>を参照してください。
</para>
</listitem>
2017-04-06 [7859f06]
-->
<para>
- リグレッションの失敗を防ぐために、サポートされていないJavaメソッドを新しいJDBCドライバでコメントアウトしました。(Tatsu Ishii)
+ リグレッションの失敗を防ぐために、サポートされていないJavaメソッドを新しいJDBCドライバでコメントアウトしました。(Tatsuo Ishii)
</para>
</listitem>
</para>
<para>
サーバサイドのSSLネゴシエーションの実装において、任意のSQLコマンドを実行できる中間者攻撃が可能でした。
- これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hotssl + trust認証の場合に可能でした。
+ これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hostssl + trust認証の場合に可能でした。
PostgreSQLのCVE-2021-23214と似た脆弱性です。
</para>
<para>
-->
<para>
<!--
- Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failire. (Bo Peng)
+ Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failure. (Bo Peng)
-->
起動時のbind()エラーを回避するために、ソケットファイルが存在するかどうかを確認し、
PIDファイルが存在しない場合、それらのソケットファイルを削除するように修正しました。(Bo Peng)
-->
<para>
<!--
- Doc: mention that VIP will not be brougt up if quorum does not exist. (Tatsuo Ishii)
+ Doc: mention that VIP will not be brought up if quorum does not exist. (Tatsuo Ishii)
-->
Doc: クォーラムが存在しない場合、VIPは起動されないことをドキュメントに追加しました。(Tatsuo Ishii)
</para>
-->
<para>
<!--
- Fix sefault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
+ Fix segfault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
-->
クエリキャッシュが有効な場合に発生するセグメンテーション違反を修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
</para>
</para>
<para>
<!--
- When all backend nodes are down, <productname>Pgpool-II</> throws an uncorrect
+ When all backend nodes are down, <productname>Pgpool-II</> throws an incorrect
error message "ERROR: connection cache is full". Change the error
message to "all backend nodes are down, pgpool requires at least one valid node".
-->
<para>
<!--
In a explicit transaction, the <literal>SELECT</literal> results are cached in temporary buffer.
- If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffe should be reset.
+ If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffer should be reset.
-->
明示的なトランザクションでは、<literal>SELECT</literal>の結果は一時バッファにキャッシュされます。
テーブルを変更する書込み<acronym>SQL</acronym>が送信されると、一時的なバッファをリセットしなければなりません。
</para>
<para>
<!--
- Removeing "Type=forking" and add OPTS=" -n" to
+ Removing "Type=forking" and add OPTS=" -n" to
run Pgpool-II with non-daemon mode, because we need to redirect logs.
Using "journalctl" command to see Pgpool-II systemd log.
-->
<!--
But the problem with this technique is that, for the instance when the node has
announced itself as a master/coordinator of the cluster and is waiting for
- the standby nodes to recognise it as a Master node. For that period of time
+ the standby nodes to recognize it as a Master node. For that period of time
the watchdog state of the node is Master/coordinator, but it is yet not fully
capable of handling the failover and failover-locking requests.
-->
2017-04-14 [50fb9a4]
-->
<para>
- pool_config_vatiable.cから「定義されたが未使用の関数」という警告を削除しました。(Muhammad Usama)
+ pool_config_variable.cから「定義されたが未使用の関数」という警告を削除しました。(Muhammad Usama)
</para>
</listitem>
2017-04-06 [d87f93d]
-->
<para>
- リグレッションの失敗を防ぐために、サポートされていないJavaメソッドを新しいJDBCドライバでコメントアウトしました。(Tatsu Ishii)
+ リグレッションの失敗を防ぐために、サポートされていないJavaメソッドを新しいJDBCドライバでコメントアウトしました。(Tatsuo Ishii)
</para>
</listitem>
-->
<para>
<!--
- Sync inconsitent status
+ Sync inconsistent status
of <productname>PostgreSQL</productname> nodes
in <productname>Pgpool-II</productname> instances after
restart. (Muhammad Usama)
</para>
<para>
<!--
- This commit tries to remove the data inconsitency in
+ This commit tries to remove the data inconsistency in
replication mode found
in <ulink url="http://www.pgpool.net/pipermail/pgpool-general/2015-August/003974.html">[pgpool-general:
3918]</ulink> by not recording the status file when all
</listitem>
<listitem>
<!--
- 2016-08-01 [024eaea] Fix for 215: pgpool doesnt escalate ip in case of another node inavailability
+ 2016-08-01 [024eaea] Fix for 215: pgpool doesn't escalate ip in case of another node unavailability
-->
<para>
<!--
- Fix <productname>Pgpool-II</productname> doesn't escalate ip in case of another node inavailability. (bug 215) (Muhammad Usama)
+ Fix <productname>Pgpool-II</productname> doesn't escalate ip in case of another node unavailability. (bug 215) (Muhammad Usama)
-->
他のノードが利用できない場合、<productname>Pgpool-II</productname> が
IPアドレスをエスカレートしない不具合を修正しました。(bug 215) (Muhammad Usama)
</listitem>
<listitem>
<!--
- 2016-06-08 [294cf4a] Fix a posible hang during health checking
+ 2016-06-08 [294cf4a] Fix a possible hang during health checking
-->
<para>
<!--
- Fix a posible hang during health checking. (bug 204) (Yugo Nagata)
+ Fix a possible hang during health checking. (bug 204) (Yugo Nagata)
-->
ヘルスチェックで発生し得るハングアップを修正しました。(bug 204) (Yugo Nagata)
</para>
<para>
<!--
- Helath checking was hang when any data wasn't sent
+ Health checking was hang when any data wasn't sent
from backend after <function>connect(2)</function> succeeded. To fix this,
<function>pool_check_fd()</function> returns 1 when <function>select(2)</function> exits with
- EINTR due to SIGALRM while health checkking is performed.
+ EINTR due to SIGALRM while health checking is performed.
-->
<function>connect(2)</function> が成功し、
その後バックエンドからデータが送信されない場合、ヘルスチェックがハングしていました。
</listitem>
<listitem>
<!--
- 2016-05-11 [de905f6] Fix documetation bug about raw mode
+ 2016-05-11 [de905f6] Fix documentation bug about raw mode
-->
<para>
<!--
- Fix Japanese and Chinese documetation bug about raw mode. (Yugo Nagata, Bo Peng)
+ Fix Japanese and Chinese documentation bug about raw mode. (Yugo Nagata, Bo Peng)
-->
日本語と中国語ドキュメントのraw モードに関する内容の誤りを修正しました。(Yugo Nagata, Bo Peng)
</para>
<para>
<!--
- Connection pool is avalilable in raw mode.
+ Connection pool is available in raw mode.
-->
raw モードでも、コネクションプーリングが有効です。
</para>
</para>
<para>
<!--
- This could happend if we execute an extended protocol query and it fails.
+ This could happened if we execute an extended protocol query and it fails.
-->
これは拡張プロトコル問い合わせを実行しそれが失敗したときに発生し得ました。
</para>
</para>
<para>
サーバサイドのSSLネゴシエーションの実装において、任意のSQLコマンドを実行できる中間者攻撃が可能でした。
- これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hotssl + trust認証の場合に可能でした。
+ これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hostssl + trust認証の場合に可能でした。
PostgreSQLのCVE-2021-23214と似た脆弱性です。
</para>
<para>
-->
<para>
<!--
- Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failire. (Bo Peng)
+ Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failure. (Bo Peng)
-->
起動時のbind()エラーを回避するために、ソケットファイルが存在するかどうかを確認し、
PIDファイルが存在しない場合、それらのソケットファイルを削除するように修正しました。(Bo Peng)
-->
<para>
<!--
- Doc: mention that VIP will not be brougt up if quorum does not exist. (Tatsuo Ishii)
+ Doc: mention that VIP will not be brought up if quorum does not exist. (Tatsuo Ishii)
-->
Doc: クォーラムが存在しない場合、VIPは起動されないことをドキュメントに追加しました。(Tatsuo Ishii)
</para>
-->
<para>
<!--
- Fix sefault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
+ Fix segfault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
-->
クエリキャッシュが有効な場合に発生するセグメンテーション違反を修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
</para>
</para>
<para>
<!--
- When all backend nodes are down, <productname>Pgpool-II</> throws an uncorrect
+ When all backend nodes are down, <productname>Pgpool-II</> throws an incorrect
error message "ERROR: connection cache is full". Change the error
message to "all backend nodes are down, pgpool requires at least one valid node".
-->
<para>
<!--
In a explicit transaction, the <literal>SELECT</literal> results are cached in temporary buffer.
- If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffe should be reset.
+ If a write <acronym>SQL</acronym> is sent which modifies the table, the temporary buffer should be reset.
-->
明示的なトランザクションでは、<literal>SELECT</literal>の結果は一時バッファにキャッシュされます。
テーブルを変更する書込み<acronym>SQL</acronym>が送信されると、一時的なバッファをリセットしなければなりません。
</para>
<para>
<!--
- Removeing "Type=forking" and add OPTS=" -n" to
+ Removing "Type=forking" and add OPTS=" -n" to
run Pgpool-II with non-daemon mode, because we need to redirect logs.
Using "journalctl" command to see Pgpool-II systemd log.
-->
Supporting per node health check parameters. (Tatsuo Ishii,
Muhammad Usama)
-->
- <productname>PostgreSQL</productname>ノードごとにヘルスチェックパラメータを設定できるようになりました。(Tatsuo Ishi, Muhammad Usama)
+ <productname>PostgreSQL</productname>ノードごとにヘルスチェックパラメータを設定できるようになりました。(Tatsuo Ishii, Muhammad Usama)
</para>
<para>
<!--
</para>
<para>
サーバサイドのSSLネゴシエーションの実装において、任意のSQLコマンドを実行できる中間者攻撃が可能でした。
- これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hotssl + trust認証の場合に可能でした。
+ これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hostssl + trust認証の場合に可能でした。
PostgreSQLのCVE-2021-23214と似た脆弱性です。
</para>
<para>
-->
<para>
<!--
- Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failire. (Bo Peng)
+ Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failure. (Bo Peng)
-->
起動時のbind()エラーを回避するために、ソケットファイルが存在するかどうかを確認し、
PIDファイルが存在しない場合、それらのソケットファイルを削除するように修正しました。(Bo Peng)
-->
<para>
<!--
- Doc: Change the sample follow_master_command script %M %H paramater's order. (Bo Peng)
+ Doc: Change the sample follow_master_command script %M %H parameter's order. (Bo Peng)
-->
Doc: follow_master_command サンプルスクリプトの %M と %H パラメータの順序を変更しました。(Bo Peng)
</para>
-->
<para>
<!--
- Doc: mention that VIP will not be brougt up if quorum does not exist. (Tatsuo Ishii)
+ Doc: mention that VIP will not be brought up if quorum does not exist. (Tatsuo Ishii)
-->
Doc: クォーラムが存在しない場合、VIPは起動されないことをドキュメントに追加しました。(Tatsuo Ishii)
</para>
-->
<para>
<!--
- Fix sefault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
+ Fix segfault when query cache is enabled. (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
-->
クエリキャッシュが有効な場合に発生するセグメンテーション違反を修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=525">bug 525</ulink>) (Tatsuo Ishii)
</para>
</para>
<para>
<!--
- When all backend nodes are down, <productname>Pgpool-II</> throws an uncorrect
+ When all backend nodes are down, <productname>Pgpool-II</> throws an incorrect
error message "ERROR: connection cache is full". Change the error
message to "all backend nodes are down, pgpool requires at least one valid node".
-->
<title>概要</title>
<para>
<!--
- This version addes support for SCRAM and CERT authentication,
+ This version adds support for SCRAM and CERT authentication,
improves load balancing control and import PostgreSQL 11
new SQL parser.
-->
<!--
Specify a semicolon separated list of SQL patterns that
should be sent to primary node only. Regular expression can be
- used in SQL patterns. Only Maste Slave mode is supported.
+ used in SQL patterns. Only Master Slave mode is supported.
-->
プライマリノードだけに送るSQLのパターンをセミコロンで区切られたリストで指定できます。
SQLのパターンには正規表現を使用することができます。
<!--
Downgrade most of DEBUG1 messages to DEBUG5. (Tatsuo Ishii)
-->
- 大半のDBUG1のメッセージをDEBUG5に変更しました。(Tatsuo Ishii)
+ 大半のDEBUG1のメッセージをDEBUG5に変更しました。(Tatsuo Ishii)
</para>
<para>
<!--
<!--
pgpool_setup -n 3 (or greater) triggers the bug. While recovering node
2, pgpool main process tried to retrieve version info from backend #2
- even if it's not running. This causes the sefault because connection
+ even if it's not running. This causes the segfault because connection
was not established yet. The reason why <productname>PostgreSQL 9.6</productname>
or later was not suffered from the bug was, <productname>PostgreSQL</productname>
exited the loop as soon as the server version is higher than 9.5. To fix this,
このポータルは<productname>Pgpool-II</productname>によって管理されないため、<command>Describe foo</command>メッセージは「unable to execute Describe. unable to get the bind message」エラーで失敗していました。
</para>
<para>
- これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Desribe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
+ これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Describe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
</para>
<para>
新たなテストケース080も追加しました。
<!--
Fix process memory requirement. Previously the formula was based on
RSS. However PSS should be used because RSS includes shared memory
- such as the memory used for libraries. This resuls in lot smaller
+ such as the memory used for libraries. This results in lot smaller
memory requirement than before.
-->
必要プロセスメモリを修正しました。以前の式はRSSを基にしていましたが、RSSはライブラリに使用されるメモリなどの共有メモリも含むため、PSSを使用するべきです。
</para>
<para>
サーバサイドのSSLネゴシエーションの実装において、任意のSQLコマンドを実行できる中間者攻撃が可能でした。
- これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hotssl + trust認証の場合に可能でした。
+ これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hostssl + trust認証の場合に可能でした。
PostgreSQLのCVE-2021-23214と似た脆弱性です。
</para>
<para>
-->
<para>
<!--
- Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failire. (Bo Peng)
+ Check if socket file exists at startup and remove them if PID file doesn't exist to avoid bind() failure. (Bo Peng)
-->
起動時のbind()エラーを回避するために、ソケットファイルが存在するかどうかを確認し、
PIDファイルが存在しない場合、それらのソケットファイルを削除するように修正しました。(Bo Peng)
-->
<para>
<!--
- Doc: Change the sample follow_master_command script %M %H paramater's order. (Bo Peng)
+ Doc: Change the sample follow_master_command script %M %H parameter's order. (Bo Peng)
-->
Doc: follow_master_command サンプルスクリプトの%Mと%Hパラメータの順序を変更しました。(Bo Peng)
</para>
2019-08-29 [69419ac4]
-->
<para>
- 多数決ルールを設定する<xref linkend="guc-enable-consensus-with-half-votes">パラメータを追加しました。 (Muhammd Usama, Tatsuo Ishii)
+ 多数決ルールを設定する<xref linkend="guc-enable-consensus-with-half-votes">パラメータを追加しました。 (Muhammad Usama, Tatsuo Ishii)
</para>
<para>
これは、偶数(すなわち、2, 4, 6...) watchdogクラスタにおけるクォーラムの存在および多数決の決定における振る舞いを変更します。
</para>
<para>
<!--
- If installing from RPMs, <literal>postrges</literal> user will be allowed to
+ If installing from RPMs, <literal>postgres</literal> user will be allowed to
run <varname>if_up/down_cmd</varname> and <varname>arping_cmd</varname>
with sudo without a password.
If <varname>if_up/down_cmd</varname> or <varname>arping_cmd</varname> starts with "/",
<para>
<!--
Performance enhancements for the large INSERT and UPDATE
- statements. (Muhammd Usama)
+ statements. (Muhammad Usama)
-->
- 大規模なINSERTとUPDATE文のパフォーマンスの強化。(Muhammd Usama)
+ 大規模なINSERTとUPDATE文のパフォーマンスの強化。(Muhammad Usama)
</para>
<para>
<!--
</para>
<para>
<!--
- Major chanegs of PostgreSQL 12 parser include:
+ Major changes of PostgreSQL 12 parser include:
-->
PostgreSQL12のパーサの主な改善点は以下のとおりです。
we set <xref linkend="guc-disable-load-balance-on-write"> =
<literal>transaction</literal>, when a write query is issued
inside an explicit truncation, subsequent queries should be
- sent to primary only until the end of this transactionin in
+ sent to primary only until the end of this transaction in
order to avoid the replication delay. However, the SELECTs
having write functions specified
in <xref linkend="guc-write-function-list"> or not specified
<para>
<!--
Resign the master watchdog node from master responsibilities if
- the primary backend node gets into quarantine state on that. (Muhammd Usama)
+ the primary backend node gets into quarantine state on that. (Muhammad Usama)
-->
- プライマリバックエンドノードがqurantine状態になるのであれば、マスタwatchdogノードを辞退します。(Muhammd Usama)
+ プライマリバックエンドノードがquarantine状態になるのであれば、マスタwatchdogノードを辞退します。(Muhammad Usama)
</para>
<para>
<!--
2019-08-29 [69419ac4]
-->
<para>
- 多数決ルールの計算方法を設定する<xref linkend="guc-enable-consensus-with-half-votes">パラメータを追加しました。(Muhammd Usama, Tatsuo Ishii)
+ 多数決ルールの計算方法を設定する<xref linkend="guc-enable-consensus-with-half-votes">パラメータを追加しました。(Muhammad Usama, Tatsuo Ishii)
</para>
<para>
<productname>Pgpool-II</productname>はwatchdogクラスタが偶数のノードで構成されている場合、ちょうど50%の賛成を得られたときにクォーラムの存在とフェイルオーバの合意を決定します。
<para>
<!--
Mention that schema qualifications cannot be used in
- Add performance chapterwhite/black_function_list. (tatsuo
+ Add performance chapter white/black_function_list. (tatsuo
Ishii)
-->
white/black_function_listでスキーマ修飾が使用出来ないことを記述しました。(tatsuo Ishii)
Add description to pg_md5 man page how to show
pool_passwd ready string. (tatsuo ishii)
-->
- pg_md5のマニュアルページにpool_paswd文字列の表現の仕方の説明を追加しました。(tatsuo ishii)
+ pg_md5のマニュアルページにpool_passwd文字列の表現の仕方の説明を追加しました。(tatsuo ishii)
</para>
</listitem>
このポータルは<productname>Pgpool-II</productname>によって管理されないため、<command>Describe foo</command>メッセージは「unable to execute Describe. unable to get the bind message」エラーで失敗していました。
</para>
<para>
- これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Desribe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
+ これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Describe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
</para>
<para>
新たなテストケース080も追加しました。
<!--
Fix process memory requirement. Previously the formula was based on
RSS. However PSS should be used because RSS includes shared memory
- such as the memory used for libraries. This resuls in lot smaller
+ such as the memory used for libraries. This results in lot smaller
memory requirement than before.
-->
必要プロセスメモリを修正しました。以前の式はRSSを基にしていましたが、RSSはライブラリに使用されるメモリなどの共有メモリも含むため、PSSを使用するべきです。
</para>
<para>
サーバサイドのSSLネゴシエーションの実装において、任意のSQLコマンドを実行できる中間者攻撃が可能でした。
- これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hotssl + trust認証の場合に可能でした。
+ これはPgpool-IIがクライアント認証で証明書認証を使用しているか、hostssl + trust認証の場合に可能でした。
PostgreSQLのCVE-2021-23214と似た脆弱性です。
</para>
<para>
<!--
Use <command>pg_config</command> to get
<productname>PostgreSQL</productname> lib path and add this path
- to LD_LIBRARY_PATH environment paramater in regress.sh. (Bo Peng)
+ to LD_LIBRARY_PATH environment parameter in regress.sh. (Bo Peng)
-->
<productname>PostgreSQL</productname>のlib pathを<command>pg_config</command>を使って取得し、regress.shのLD_LIBRARY_PATH環境変数に追加するようにしました。(Bo Peng)
</para>
このポータルは<productname>Pgpool-II</productname>によって管理されないため、<command>Describe foo</command>メッセージは「unable to execute Describe. unable to get the bind message」エラーで失敗していました。
</para>
<para>
- これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Desribe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
+ これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Describe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
</para>
<para>
新たなテストケース080も追加しました。
<!--
Fix process memory requirement. Previously the formula was based on
RSS. However PSS should be used because RSS includes shared memory
- such as the memory used for libraries. This resuls in lot smaller
+ such as the memory used for libraries. This results in lot smaller
memory requirement than before.
-->
必要プロセスメモリを修正しました。以前の式はRSSを基にしていましたが、RSSはライブラリに使用されるメモリなどの共有メモリも含むため、PSSを使用するべきです。
このポータルは<productname>Pgpool-II</productname>によって管理されないため、<command>Describe foo</command>メッセージは「unable to execute Describe. unable to get the bind message」エラーで失敗していました。
</para>
<para>
- これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Desribe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
+ これを修正するため、<function>Describe()</function>でダミーの書き込みクエリコンテキストを作成し、<command>Describe</command>メッセージをプライマリ(ストリーミングレプリケーションモード)またはすべてのノード(レプリケーション/スナップショットアイソレーションモード)に送信するようにしました。
</para>
<para>
新たなテストケース080も追加しました。
</para>
<para>
- <firstterm>ストリーミングレプリケーションモード</firstterm>はストリーミングレプリケーションを使用する<productname>PostgreSQL</>サーバ(AWSのAuroa、RDSを含みます)と一緒に使うことができます。
+ <firstterm>ストリーミングレプリケーションモード</firstterm>はストリーミングレプリケーションを使用する<productname>PostgreSQL</>サーバ(AWSのAurora、RDSを含みます)と一緒に使うことができます。
このモードでは、<productname>PostgreSQL</>がデータベースを同期する責任を持ちます。
このモードは広く使われており、最も推奨される<productname>Pgpool-II</>の使用法です。
このモードでは負荷分散が可能です。
responsible for synchronizing tables. Load balancing is possible
in the mode. Since logical replication does not replicate all
tables, it's user's responsibility to replicate the table which
- could be load balanced. <productname>Pgpool-II</> load balaces
+ could be load balanced. <productname>Pgpool-II</> load balances
all tables. This means that if a table is not
replicated, <productname>Pgpool-II</> may lookup outdated tables
in the subscriber side.
<!--
In the raw mode, <productname>Pgpool-II</> does not care about the database
synchronization. It's user's responsibility to make the whole
- system does a meaningfull thing. Load balancing
+ system does a meaningful thing. Load balancing
is <emphasis>not</emphasis> possible in the mode.
-->
<firstterm>rawモード</firstterm>では、<productname>Pgpool-II</>はデータベースの同期に関しては関与しません。
backend servers, you need to configure <varname>backend*</varname>
in <filename>pgpool.conf</filename>. For starters, at
least <xref linkend="guc-backend-hostname">
- and <xref linkend="guc-backend-port"> paramters are required to
+ and <xref linkend="guc-backend-port"> parameters are required to
be set up to start <productname>Pgpool-II</> server.
-->
<productname>Pgpool-II</>が<productname>PostgreSQL</>バックエンドサーバを認識するために、<filename>pgpool.conf</filename>の<varname>backend*</varname>を設定する必要があります。
<itemizedlist>
<listitem>
<para>
- <path to script>: Specify the path to the script used to assgin or remove Elastic IP address.
+ <path to script>: Specify the path to the script used to assign or remove Elastic IP address.
</para>
</listitem>
<listitem>
<para>
create two route tables associated with the public subnet and the private subnet
- respectively. Please refer to this <ulink url="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html#VPC_Scenario2_Routing">documetation</ulink>
+ respectively. Please refer to this <ulink url="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html#VPC_Scenario2_Routing">documentation</ulink>
for detailed information.
</para>
</listitem>
Mostly the <productname>Pgpool-II</productname> configurations for this
example will be same as in the <xref linkend="example-cluster">, except
using <xref linkend="guc-if-up-cmd"> and <xref linkend="guc-if-down-cmd">
- to assign the virtaul IP and update route tables.
+ to assign the virtual IP and update route tables.
</para>
<para>
Specify the virtual IP to <xref linkend="guc-delegate-ip">.
from the application instance.
</para>
<programlisting>
-[user@appliaction instance]$ psql -h 20.0.0.50 -p 9999 -U postgres -c "show pool_nodes"
+[user@application instance]$ psql -h 20.0.0.50 -p 9999 -U postgres -c "show pool_nodes"
</programlisting>
<para>
Stop the leader <productname>Pgpool-II</productname>.
Password:
3 3 YES server1:9999 Linux server1 server1
-server1:9999 Linux server1 server1 9999 9000 4 LEADER 0 MEMBER # The Pgpool-II server started first becames "LEADER".
+server1:9999 Linux server1 server1 9999 9000 4 LEADER 0 MEMBER # The Pgpool-II server started first becomes "LEADER".
server2:9999 Linux server2 server2 9999 9000 7 STANDBY 0 MEMBER # running as STANDBY
server3:9999 Linux server3 server3 9999 9000 7 STANDBY 0 MEMBER # running as STANDBY
</programlisting>
14. pgpool child process id
15. PostgreSQL backend id
16. process status
- 17. 1 if backend is load balance node and frontend connected, 0 othewise
+ 17. 1 if backend is load balance node and frontend connected, 0 otherwise
</literallayout>
</para>
<para>
<row>
<entry><literal>free_cache_entries_size</literal></entry>
<entry>
- The size in bytes of the unsed cache. As this value approaches
+ The size in bytes of the unused cache. As this value approaches
0, it removes the registered cache and registers a new cache,
which does not cause an error, but reduces performance.
Consider to increase <xref linkend="guc-memqcache-total-size">.
Fix the incorrect display of load balancing node in raw mode. (Bo Peng)
</para>
<para>
- In raw mode, <productname>Pgpool-II</productname> sends all queies to main node.
+ In raw mode, <productname>Pgpool-II</productname> sends all queries to main node.
This is harmless, but it may confuse users.
</para>
</listitem>
<programlisting>
- pgpool.conf is configured so that all read queries are sent to the standby.
- First, issue a writing query in a transaction block
- - After commiting the transaction, issue a select query.
+ - After committing the transaction, issue a select query.
- When processing the query, send Describe (statement) message just after Parse.
</programlisting>
</listitem>
<listitem>
<!--
- 2016-08-01 [024eaea] Fix for 215: pgpool doesnt escalate ip in case of another node unavailability
+ 2016-08-01 [024eaea] Fix for 215: pgpool doesn't escalate ip in case of another node unavailability
-->
<para>
Fix <productname>Pgpool-II</productname> doesn't escalate ip in case of another node unavailability. (bug 215) (Muhammad Usama)
Fix the incorrect display of load balancing node in raw mode. (Bo Peng)
</para>
<para>
- In raw mode, <productname>Pgpool-II</productname> sends all queies to main node.
+ In raw mode, <productname>Pgpool-II</productname> sends all queries to main node.
This is harmless, but it may confuse users.
</para>
</listitem>
2023-01-31 [633bdca]
-->
<para>
- Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ Fix kind mismatch error with <literal>DEALLOCATE</literal>.
(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
</para>
<para>
- Kind mimatch error occurs when conditions below are all met:
+ Kind mismatch error occurs when conditions below are all met:
<itemizedlist>
<listitem>
<para>
<para>
To deal with idle_session_timeout detect_idle_session_timeout_error()
is added to detect the error code for idle_session_timeout. If the
- error is detected, Pgpool-II returns the error code to frondend as a
+ error is detected, Pgpool-II returns the error code to frontend as a
fatal error and disconnects the session. This is a similar fix
implemented for idle_in_transaction_session_timeout.
<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=3f5986eee360f12e6a0bb77aa46f95abf5f6bc10">3f5986eee360f12e6a0bb77aa46f95abf5f6bc10</ulink>
2022-04-17 [72d31b0]
-->
<para>
- Enhance regression test 074.bug700_memqcache_segfault to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 074.bug700_memqcache_segfault to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
Fix the incorrect display of load balancing node in raw mode. (Bo Peng)
</para>
<para>
- In raw mode, <productname>Pgpool-II</productname> sends all queies to main node.
+ In raw mode, <productname>Pgpool-II</productname> sends all queries to main node.
This is harmless, but it may confuse users.
</para>
</listitem>
2021-10-06 [42a77d8c]
-->
<para>
- Doc: fix documentaion typos. (Bo Peng)
+ Doc: fix documentation typos. (Bo Peng)
</para>
</listitem>
2023-08-09 [30db44e]
-->
<para>
- Fix covery warning. (Tatsuo Ishii)
+ Fix coverity warning. (Tatsuo Ishii)
</para>
<para>
Fix query cache module assigned time_t value to int32 variable. Change
2023-01-31 [633bdca]
-->
<para>
- Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ Fix kind mismatch error with <literal>DEALLOCATE</literal>.
(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
</para>
<para>
- Kind mimatch error occurs when conditions below are all met:
+ Kind mismatch error occurs when conditions below are all met:
<itemizedlist>
<listitem>
<para>
<para>
To deal with idle_session_timeout detect_idle_session_timeout_error()
is added to detect the error code for idle_session_timeout. If the
- error is detected, Pgpool-II returns the error code to frondend as a
+ error is detected, Pgpool-II returns the error code to frontend as a
fatal error and disconnects the session. This is a similar fix
implemented for idle_in_transaction_session_timeout.
<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=3f5986eee360f12e6a0bb77aa46f95abf5f6bc10">3f5986eee360f12e6a0bb77aa46f95abf5f6bc10</ulink>
2022-05-31 [5cacb7db]
-->
<para>
- When CloseComplete is received, foward to frontend without buffering. (Tatsuo Ishii)
+ When CloseComplete is received, forward to frontend without buffering. (Tatsuo Ishii)
</para>
<para>
It seems this caused occasional timeout error in 074.bug700_memqcache_segfault.
<para>
Fix process memory requirement. Previously the formula was based on
RSS. However PSS should be used because RSS includes shared memory
- such as the memory used for libraries. This resuls in lot smaller
+ such as the memory used for libraries. This results in lot smaller
memory requirement than before.
</para>
</listitem>
2022-04-17 [29734b5]
-->
<para>
- Enhance regression test 018.detach_primary to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 018.detach_primary to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
2022-04-17 [72d31b0]
-->
<para>
- Enhance regression test 074.bug700_memqcache_segfault to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 074.bug700_memqcache_segfault to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
Fix the incorrect display of load balancing node in raw mode. (Bo Peng)
</para>
<para>
- In raw mode, <productname>Pgpool-II</productname> sends all queies to main node.
+ In raw mode, <productname>Pgpool-II</productname> sends all queries to main node.
This is harmless, but it may confuse users.
</para>
</listitem>
Fix race condition between <xref linkend="guc-detach-false-primary"> and <xref linkend="guc-follow-primary-command">. (Tatsuo Ishii)
</para>
<para>
- If <xref linkend="guc-detach-false-primary"> and <xref linkend="guc-follow-primary-command"> are running concurrently, many problem occured.
+ If <xref linkend="guc-detach-false-primary"> and <xref linkend="guc-follow-primary-command"> are running concurrently, many problem occurred.
Typical problem is, no primary node is found at the end.
</para>
</listitem>
startup user is changed to <literal>postgres</literal> user.
</para>
<para>
- If installing from RPMs, <literal>postrges</literal> user will be allowed to
+ If installing from RPMs, <literal>postgres</literal> user will be allowed to
run <varname>if_up/down_cmd</varname> and <varname>arping_cmd</varname>
with <command>sudo</command> without a password.
If <varname>if_up/down_cmd</varname> or <varname>arping_cmd</varname> starts with "/",
2023-08-09 [30db44e]
-->
<para>
- Fix covery warning. (Tatsuo Ishii)
+ Fix coverity warning. (Tatsuo Ishii)
</para>
<para>
Fix query cache module assigned time_t value to int32 variable. Change
2023-01-31 [633bdca]
-->
<para>
- Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ Fix kind mismatch error with <literal>DEALLOCATE</literal>.
(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
</para>
<para>
- Kind mimatch error occurs when conditions below are all met:
+ Kind mismatch error occurs when conditions below are all met:
<itemizedlist>
<listitem>
<para>
<para>
To deal with idle_session_timeout detect_idle_session_timeout_error()
is added to detect the error code for idle_session_timeout. If the
- error is detected, Pgpool-II returns the error code to frondend as a
+ error is detected, Pgpool-II returns the error code to frontend as a
fatal error and disconnects the session. This is a similar fix
implemented for idle_in_transaction_session_timeout.
<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=3f5986eee360f12e6a0bb77aa46f95abf5f6bc10">3f5986eee360f12e6a0bb77aa46f95abf5f6bc10</ulink>
2022-05-31 [a8b4904e]
-->
<para>
- When CloseComplete is received, foward to frontend without buffering. (Tatsuo Ishii)
+ When CloseComplete is received, forward to frontend without buffering. (Tatsuo Ishii)
</para>
<para>
It seems this caused occasional timeout error in 074.bug700_memqcache_segfault.
<para>
Fix process memory requirement. Previously the formula was based on
RSS. However PSS should be used because RSS includes shared memory
- such as the memory used for libraries. This resuls in lot smaller
+ such as the memory used for libraries. This results in lot smaller
memory requirement than before.
</para>
</listitem>
2022-04-17 [29734b5]
-->
<para>
- Enhance regression test 018.detach_primary to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 018.detach_primary to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
2022-04-17 [72d31b0]
-->
<para>
- Enhance regression test 074.bug700_memqcache_segfault to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 074.bug700_memqcache_segfault to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
Fix the incorrect display of load balancing node in raw mode. (Bo Peng)
</para>
<para>
- In raw mode, <productname>Pgpool-II</productname> sends all queies to main node.
+ In raw mode, <productname>Pgpool-II</productname> sends all queries to main node.
This is harmless, but it may confuse users.
</para>
</listitem>
Fix race condition between <xref linkend="guc-detach-false-primary"> and <xref linkend="guc-follow-primary-command">. (Tatsuo Ishii)
</para>
<para>
- If <xref linkend="guc-detach-false-primary"> and <xref linkend="guc-follow-primary-command"> are running concurrently, many problem occured.
+ If <xref linkend="guc-detach-false-primary"> and <xref linkend="guc-follow-primary-command"> are running concurrently, many problem occurred.
Typical problem is, no primary node is found at the end.
</para>
</listitem>
2023-08-09 [30db44e]
-->
<para>
- Fix covery warning. (Tatsuo Ishii)
+ Fix coverity warning. (Tatsuo Ishii)
</para>
<para>
Fix query cache module assigned time_t value to int32 variable. Change
2023-01-31 [633bdca]
-->
<para>
- Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ Fix kind mismatch error with <literal>DEALLOCATE</literal>.
(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
</para>
<para>
- Kind mimatch error occurs when conditions below are all met:
+ Kind mismatch error occurs when conditions below are all met:
<itemizedlist>
<listitem>
<para>
<para>
To deal with idle_session_timeout detect_idle_session_timeout_error()
is added to detect the error code for idle_session_timeout. If the
- error is detected, Pgpool-II returns the error code to frondend as a
+ error is detected, Pgpool-II returns the error code to frontend as a
fatal error and disconnects the session. This is a similar fix
implemented for idle_in_transaction_session_timeout.
<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=3f5986eee360f12e6a0bb77aa46f95abf5f6bc10">3f5986eee360f12e6a0bb77aa46f95abf5f6bc10</ulink>
2022-05-31 [f08ef22b]
-->
<para>
- When CloseComplete is received, foward to frontend without buffering. (Tatsuo Ishii)
+ When CloseComplete is received, forward to frontend without buffering. (Tatsuo Ishii)
</para>
<para>
It seems this caused occasional timeout error in 074.bug700_memqcache_segfault.
<para>
Fix process memory requirement. Previously the formula was based on
RSS. However PSS should be used because RSS includes shared memory
- such as the memory used for libraries. This resuls in lot smaller
+ such as the memory used for libraries. This results in lot smaller
memory requirement than before.
</para>
</listitem>
2022-04-17 [29734b5]
-->
<para>
- Enhance regression test 018.detach_primary to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 018.detach_primary to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
2022-04-17 [72d31b0]
-->
<para>
- Enhance regression test 074.bug700_memqcache_segfault to avoid the timeut error. (Tatsuo Ishii)
+ Enhance regression test 074.bug700_memqcache_segfault to avoid the timeout error. (Tatsuo Ishii)
</para>
</listitem>
2023-08-09 [30db44e]
-->
<para>
- Fix covery warning. (Tatsuo Ishii)
+ Fix coverity warning. (Tatsuo Ishii)
</para>
<para>
Fix query cache module assigned time_t value to int32 variable. Change
2023-01-31 [38225a7]
-->
<para>
- Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ Fix kind mismatch error with <literal>DEALLOCATE</literal>.
(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
</para>
<para>
- Kind mimatch error occurs when conditions below are all met:
+ Kind mismatch error occurs when conditions below are all met:
<itemizedlist>
<listitem>
<para>
2023-01-30 [93f5585]
-->
<para>
- Obtain stronger lock while commiting shared relcache. (Tatsuo Ishii)
+ Obtain stronger lock while committing shared relcache. (Tatsuo Ishii)
</para>
</listitem>
<para>
Configuration parameter <literal>delegate_IP</literal> is renamed
to <xref linkend="guc-delegate-ip">. For compatibility with the
- old versions, the old paramter delegate_IP can still work. If
- the old paramter delegate_IP is
+ old versions, the old parameter delegate_IP can still work. If
+ the old parameter delegate_IP is
used, <productname>Pgpool-II</productname> will set the value to
delegate_ip and throw a warning message.
</para>
/*
* function first uses the password in the argument, if the argument is empty
- * string or NULL, it looks for the password for uset in pool_passwd file.
+ * string or NULL, it looks for the password for user in pool_passwd file.
* The returned password is always in plain text or md5 hashed and palloc'd
* (if not null)
*/
* will not be load balanced until the session ends.
*/
-Step3: Add config_emum_entry array to src/config/pool_config.c.
+Step3: Add config_enum_entry array to src/config/pool_config.c.
================================================================
static const struct config_enum_entry disable_load_balance_on_write_options[] = {
},
{
{"failover_require_consensus", CFGCXT_INIT, FAILOVER_CONFIG,
- "Only do failover when majority aggrees.",
+ "Only do failover when majority agrees.",
CONFIG_VAR_TYPE_BOOL, false, 0
},
&g_pool_config.failover_require_consensus,
{
{"log_pcp_processes", CFGCXT_RELOAD, LOGGING_CONFIG,
- "Logs PCP process forks and anormal exit status to the log",
+ "Logs PCP process forks and a normal exit status to the log",
CONFIG_VAR_TYPE_BOOL, false, 0
},
&g_pool_config.log_pcp_processes,
{
{"num_init_children", CFGCXT_INIT, CONNECTION_POOL_CONFIG,
- "Maximim number of child processs to handle client connections.",
+ "Maximim number of child process to handle client connections.",
CONFIG_VAR_TYPE_INT, false, 0
},
&g_pool_config.num_init_children,
*/
bool flush_pending;
- bool is_tx_started_by_multi_statement; /* true if an explicit transaction has been strated by
+ bool is_tx_started_by_multi_statement; /* true if an explicit transaction has been started by
multi statement query */
} POOL_PENDING_MESSAGE;
typedef enum
{
POOL_NODE_STATUS_UNUSED, /* unused */
- POOL_NODE_STATUS_PRIMARY, /* primary ndoe */
+ POOL_NODE_STATUS_PRIMARY, /* primary node */
POOL_NODE_STATUS_STANDBY, /* standby node */
- POOL_NODE_STATUS_INVALID /* invalid node (split branin, stand alone) */
+ POOL_NODE_STATUS_INVALID /* invalid node (split brain, stand alone) */
} POOL_NODE_STATUS;
/* Clustering mode macros */
} POOL_RECOVERY_MODE;
/*
- * Process types. DO NOT change the order of each enum meber! If you do
+ * Process types. DO NOT change the order of each enum member! If you do
* that, you must change application_name array in src/main/pgpool_main.c
* accordingly.
*/
bool failover_when_quorum_exists; /* Do failover only when wd
* cluster holds the quorum */
bool failover_require_consensus; /* Only do failover when majority
- * aggrees */
+ * agrees */
bool allow_multiple_failover_requests_from_node; /* One Pgpool-II node
* can send multiple
* failover requests to
* block". Each block is assigned a "cache block id", which is
* starting with 0.
*/
-typedef char *POOL_CACH_BLOCK; /* pointer to cache block */
+typedef char *POOL_CACHE_BLOCK; /* pointer to cache block */
typedef unsigned int POOL_CACHE_BLOCKID; /* cache block id */
typedef unsigned int POOL_CACHE_ITEMID; /* cache item id */
pcp_write(pcpConn->pcpConn, sendchar, 1);
- /* caluculate send buffer size */
+ /* calculate send buffer size */
wsize = sizeof(char); /* protocol. 'j' or 'J' */
wsize += strlen(node_id); /* node id + space */
wsize += sizeof(char); /* promote option */
/*
* If the node is already in down status or unused, do nothing.
* except when the node state is down because of quarantine operation
- * since we want to detect when the node cames back to life again to
+ * since we want to detect when the node comes back to life again to
* remove it from the quarantine state
*/
if (bkinfo->backend_status == CON_UNUSED ||
(bkinfo->backend_status == CON_DOWN && bkinfo->quarantine == false))
{
- /* get current time to use auto_faliback_interval */
+ /* get current time to use auto_failback_interval */
now = time(NULL);
if (pool_config->auto_failback && auto_failback_interval < now &&
{
ereport(LOG,
(errmsg("request auto failback, node id:%d", node)));
- /* get current time to use auto_faliback_interval */
+ /* get current time to use auto_failback_interval */
now = time(NULL);
auto_failback_interval = now + pool_config->auto_failback_interval;
for (;;)
{
- int cnt = 5; /* sending sinal retry interval */
+ int cnt = 5; /* sending signal retry interval */
if (kill(pid, stop_sig) == -1)
{
}
/*
- * Frist try out with old format file.
+ * First try out with old format file.
*/
is_old_format = true;
/*
* Ideally this should not happen.
* yet if for some reason our local node is trying to release a lock
- * that is heald by remote node. Just produce a LOG message and release
+ * that is held by remote node. Just produce a LOG message and release
* the lock
*/
ereport(LOG,
else
{
/*
- * The request is a proper failbak request and not because of
+ * The request is a proper failback request and not because of
* the update status of quarantined node
*/
(void) write_status_file();
{
if (failover_context->nodes[i])
{
- /* If this is prmoting specified node, new_main_node
+ /* If this is promoting specified node, new_main_node
* should be replaced by the requested node. The requested
* node should be REAL_PRIMARY_NODE_ID.
*/
}
/*
- * Execute follow primary command if neccessary.
+ * Execute follow primary command if necessary.
* return new main node id if it needs to be changed.
* If not changed, -1 will be returned.
*/
sp = MAIN_CONNECTION(backend)->sp;
/*
- * cach connection if connection cache configuration parameter is enabled
+ * cache connection if connection cache configuration parameter is enabled
* and frontend connection is not invalid
*/
if (sp && pool_config->connection_cache != 0 && frontend_invalid == false)
}
/*
- * Enable authtentication timeout.
+ * Enable authentication timeout.
*/
static void
enable_authentication_timeout(void)
}
/*
- * Disable authtentication timeout.
+ * Disable authentication timeout.
*/
static void
disable_authentication_timeout(void)
* receives an ERROR, it stops processing and terminates, which is not
* good. This is problematic especially with pcp_node_info, since it
* calls db_node_role(), and db_node_role() calls this function. So if
- * the target PostgreSQL is down, EmitErrorRepor() sends ERROR message
+ * the target PostgreSQL is down, EmitErrorReport() sends ERROR message
* to pcp frontend and it stops (see process_pcp_response() in
* src/libs/pcp/pcp.c. To fix this, just eliminate calling
* EmitErrorReport(). This will suppress ERROR message but as you can
errdetail("suggested backend %d is streaming delayed over delay_threshold", suggested_node_id)));
/*
- * The new load balancing node is seleted from the
+ * The new load balancing node is selected from the
* nodes which have the lowest delay.
*/
if (pool_config->delay_threshold_by_time > 0)
}
else
ereport(ERROR,
- (errmsg("ParameterStatus: failed to obatain parameter name, value from the main node.")));
+ (errmsg("ParameterStatus: failed to obtain parameter name, value from the main node.")));
return status;
}
}
/*
- * If SQL comment is not allowed, the query must start with cetain characters.
+ * If SQL comment is not allowed, the query must start with certain characters.
* However if it's PREPARE, we should skip the check.
*/
if (!pool_config->allow_sql_comments)
* query in progress flag is set. At returning, the ReadyForQuery packet
* length and the transaction state should be left in the backend buffers
* EXCEPT for backends that do not satisfy VALID_BACKEND macro. This is
- * required because the caller later on calls pool_message_length() wich
+ * required because the caller later on calls pool_message_length() which
* retrieves the packet length and the transaction state from the backends
- * that satify VALID_BACKEND macro.
+ * that satisfy VALID_BACKEND macro.
*/
POOL_STATUS
end_internal_transaction(POOL_CONNECTION * frontend, POOL_CONNECTION_POOL * backend)
{
/*
* It is possible that client wants to use the portal created by
- * DECLARE CUSOR or pl/pgSQL function. If so, the describe message
+ * DECLARE CURSOR or pl/pgSQL function. If so, the describe message
* should only be sent to primary node.
*/
query_context = create_dummy_query_context();
}
#ifdef LOCK_TRACE
- elog(LOG, "LOCK TRACE: try to aquire lock %s", type == POOL_MEMQ_EXCLUSIVE_LOCK? "LOCK_EX" : "LOCK_SH");
+ elog(LOG, "LOCK TRACE: try to acquire lock %s", type == POOL_MEMQ_EXCLUSIVE_LOCK? "LOCK_EX" : "LOCK_SH");
#endif
if (pool_is_shmem_cache() && !is_shmem_locked)
{
}
#ifdef LOCK_TRACE
- elog(LOG, "LOCK TRACE: aquire lock %s", type == POOL_MEMQ_EXCLUSIVE_LOCK? "LOCK_EX" : "LOCK_SH");
+ elog(LOG, "LOCK TRACE: acquire lock %s", type == POOL_MEMQ_EXCLUSIVE_LOCK? "LOCK_EX" : "LOCK_SH");
#endif
is_shmem_locked = true;
}
return (TSRel *) pool_search_relcache(ts_relcache, ctx->backend, table_name);
}
-/* If timestamp value is required then return ts_const. Otherwize make
+/* If timestamp value is required then return ts_const. Otherwise make
* a new ParamRef, whose number member is 0 and is overwritten at last,
* and add it into params list in context.
*/
/*
* Rewrite `now()' to timestamp literal.
* If rewrite_to_params is false then, we rewrite `now()' to timestamp constant.
- * Otherwize, we rewrite `now()' to params and expand that at Bind message.
+ * Otherwise, we rewrite `now()' to params and expand that at Bind message.
* returns query string as palloced string, or NULL if not to need rewrite.
*/
char *
copy_to += sizeof(int16);
}
}
- /* otherwize, copy the original format codes as they are*/
+ /* otherwise, copy the original format codes as they are*/
else
{
copy_len = num_formats * sizeof(int16);
# Log all statements
#log_per_node_statement = off
# Log all statements
- # with node and backend informations
+ # with node and backend information
#notice_per_node_statement = off
# logs notice message for per node detailed SQL statements
#log_client_messages = off
# Password in pool_passwd file before using the empty password
#health_check_database = ''
- # Database name for health check. If '', tries 'postgres' frist,
+ # Database name for health check. If '', tries 'postgres' first.
#health_check_max_retries = 0
# Maximum number of times to retry a failed health check before giving up.
#health_check_retry_delay = 1
#auto_failback = off
# Detached backend node reattach automatically
- # if replicatiotate is 'streaming'.
+ # if replication is 'streaming'.
#auto_failback_interval = 1min
# Min interval of executing auto_failback in
# seconds.
# ping command path
# (change requires restart)
-# - Behaivor on escalation Setting -
+# - Behavior on escalation Setting -
#clear_memqcache_on_escalation = on
# Clear all the query cache on shared memory
#failover_require_consensus = on
# Perform failover when majority of Pgpool-II nodes
- # aggrees on the backend node status change
+ # agrees on the backend node status change
# (change requires restart)
#allow_multiple_failover_requests_from_node = off
# Number of relation cache
# entry. If you see frequently:
# "pool_search_relcache: cache replacement happened"
- # in the pgpool log, you might want to increate this number.
+ # in the pgpool log, you might want to increase this number.
#check_temp_table = catalog
# Temporary table check method. catalog, trace or none.
# Defaults to localhost.
# (change requires restart)
#memqcache_memcached_port = 11211
- # Memcached port number. Mondatory if memqcache_method = 'memcached'.
+ # Memcached port number. Mandatory if memqcache_method = 'memcached'.
# Defaults to 11211.
# (change requires restart)
#memqcache_total_size = 64MB
Req_info->switching == false)
{
/*
- * Acquire follow primary lock. If fail to acqure lock, try again.
+ * Acquire follow primary lock. If fail to acquire lock, try again.
*/
follow_primary_lock_acquired = false;
#include "pgproto/buffer.h"
/*
- * Read integer field and returns it. The pointer in the buffer afer reading
+ * Read integer field and returns it. The pointer in the buffer after reading
* the data is returned to "bufp". If the format is not follows above, exit
* within this function.
*/
/*
* Read string and returns pg_malloced buffer. The string must start with a
* double quotation and end with a double quotation. The pointer in the buffer
- * afer reading the data is returned to "bufp". If the format is not follows
+ * after reading the data is returned to "bufp". If the format is not follows
* above, exit within this function.
*/
char *
/*
* Read a character and returns it. The character must start with a single
- * quotation and end with a single quotation. The pointer in the buffer afer
+ * quotation and end with a single quotation. The pointer in the buffer after
* reading the data is returned to "bufp". If the format is not follows
* above, exit within this function.
*/
send_char('B', conn);
send_int(len, conn); /* message length */
- send_string(portal, conn); /* protal name */
+ send_string(portal, conn); /* portal name */
free(portal);
send_string(stmt, conn); /* statement name */
free(stmt);
StrNCpy(status[i].name, "log_pcp_processes", POOLCONFIG_MAXNAMELEN);
snprintf(status[i].value, POOLCONFIG_MAXVALLEN, "%d", pool_config->log_pcp_processes);
- StrNCpy(status[i].desc, "if true, print PCP process forks and anormal exit status to the log", POOLCONFIG_MAXDESCLEN);
+ StrNCpy(status[i].desc, "if true, print PCP process forks and a normal exit status to the log", POOLCONFIG_MAXDESCLEN);
i++;
StrNCpy(status[i].name, "log_hostname", POOLCONFIG_MAXNAMELEN);
{
int idle_duration = pi->connection_info[pool * MAX_NUM_BACKENDS].client_idle_duration;
int load_balancing_node_id = pi->connection_info[pool * MAX_NUM_BACKENDS].load_balancing_node;
- int cliet_idle_time = pool_config->client_idle_limit;
+ int client_idle_time = pool_config->client_idle_limit;
if (pool_config->client_idle_limit > 0)
{
- cliet_idle_time = pool_config->client_idle_limit - idle_duration;
+ client_idle_time = pool_config->client_idle_limit - idle_duration;
}
for (backend_id = 0; backend_id < NUM_BACKENDS; backend_id++)
{
snprintf(pools[lines].client_idle_duration, sizeof(pools[lines].client_idle_duration),
"%d (%d:%02d before client disconnected)", idle_duration,
- cliet_idle_time / 60,
- cliet_idle_time % 60);
+ client_idle_time / 60,
+ client_idle_time % 60);
}
else
snprintf(pools[lines].client_idle_duration, sizeof(pools[lines].client_idle_duration),
/*
* Obtain database name and node id to be sent query. If
- * relcache_query_target is RELQTARGET_LOADL_BALANCE_NODE, we consider
+ * relcache_query_target is RELQTARGET_LOAD_BALANCE_NODE, we consider
* load balance node id to be used to send queries.
*
* Note that we need to use VALID_BACKEND_RAW, rather than VALID_BACKEND
query_cache_data = relation_cache_to_query_cache(res, &query_cache_len);
/*
* So far, we have already obtained a lock. But to register
- * a query cache entry, we need to aquire an exclusive lock.
+ * a query cache entry, we need to acquire an exclusive lock.
* Unfortunately:
- * (1) we don't know if we already aquired an exclusive or not.
+ * (1) we don't know if we already acquired an exclusive or not.
* (2) we cannot escalate a shared lock to an exclusive lock.
* So we release the lock and obtain an exclusive lock. This may
* create a window and thus we might try to register duplicate
}
/*
- * Removes a shared memory segment from process' address spaceq (called as
+ * Removes a shared memory segment from process' address space (called as
* an on_shmem_exit callback, hence funny argument list)
*/
static void
ereport(FATAL,
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("received unencrypted data after SSL request"),
- errdetail("This could be an evidence of an attempted man-in-the-middle attacck.")));
+ errdetail("This could be an evidence of an attempted man-in-the-middle attack.")));
}
SSL_set_fd(cp->ssl, cp->fd);
ereport(FATAL,
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("received unencrypted data after SSL request"),
- errdetail("This could be either a client-software bug or evidence of an attempted man-in-the-middle attacck.")));
+ errdetail("This could be either a client-software bug or evidence of an attempted man-in-the-middle attack.")));
}
SSL_set_fd(cp->ssl, cp->fd);
* indicate that the underlying transport has been closed.
* -------------------------------------------------------------
* We don't want to trigger failover but it is also possible that
- * the connectoon has been closed. So returns 0 to ask pool_read()
+ * the connection has been closed. So returns 0 to ask pool_read()
* to close connection to frontend.
*/
ereport(WARNING,
pool_release_follow_primary_lock(true);
else
ereport(LOG,
- (errmsg("invalid looking operaition[%s] in 'LOCK ON STANDBY' from remote node \"%s\"", operation, wdNode->nodeName),
+ (errmsg("invalid looking operation[%s] in 'LOCK ON STANDBY' from remote node \"%s\"", operation, wdNode->nodeName),
errdetail("command ignored")));
}
else
/*
* Check remote connections except their state are either WD_SHUTDOWN or
- * WD_DEAD. If suncceeded in connecting to any of the remote nodes, returns
+ * WD_DEAD. If succeeded in connecting to any of the remote nodes, returns
* true, otherwise false.
*/
static bool
* This is the intermediate state before going to cluster initialization
* here we update the information of all connected nodes and move to the
* initialization state. moving to this state from loading does not make
- * much sence as at loading time we already have updated node informations
+ * much sense as at loading time we already have updated node informations
*/
static int
watchdog_state_machine_joining(WD_EVENTS event, WatchdogNode * wdNode, WDPacketData * pkt, WDCommandData * clusterCommand)
}
value = json_get_value_for_key(root, "health_check_params");
- /* We don't get seperate health check params from older version
+ /* We don't get separate health check params from older version
* so be kind if the JSON does not contain one
*/
if (value != NULL && value->type == json_array)
WDExecCommandArg *command_arg = palloc0(sizeof(WDExecCommandArg));
/*
* Append to list right away, so that deep freeing the list also
- * get rid of half cooked argumnts in case of an error
+ * get rid of half cooked arguments in case of an error
*/
*args_list = lappend(*args_list,command_arg);