Release Date: 2022-12-22
Downgrade LOG messages "new IPC connection received" to DEBUG1. (bug 775) (Bo Peng)
It is a normal messages and should not be logged as LOG. Patch is created by pstef and reviewed by Bo Peng.
Fix issue with failover_require_consensus. (Muhammad Usama)
The fix is to dynamically set the failover command timeout based on the maximum value of health check parameters across the watchdog cluster.
Reviewed and tested by Tatsuo Ishii. Discussion: [pgpool-hackers: 4227]
Fix not to print warnings of use of backslashes in parser. (Tatsuo Ishii)
When standard_conforming_strings = off and escape_string_warning = on, PostgreSQL prints warnings if backslashes are used in string literal. This is fine. But previously Pgpool-II's parser printed the same message too. This is redundant.
Deal with idle_session_timeout. (Tatsuo Ishii)
If idle_session_timeout (added in PostgreSQL 14) is enabled and the timeout fires, followings happen:
If failover_on_backend_error is on (the default), Pgpool-II will trigger failover.
If only one of PostgreSQL servers enables idle_session_timeout, Pgpool-II could hang.
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 fatal error and disconnects the session. This is a similar fix implemented for idle_in_transaction_session_timeout. 3f5986eee360f12e6a0bb77aa46f95abf5f6bc10
Discussion: [pgpool-hackers: 4208]
Deal with SSL error SSL_ERROR_ZERO_RETURN. (Tatsuo Ishii)
Previously this caused failover, which was actually unnecessary because it means the server is just going to close the connection.
Fix: Setting memory cache size greater than 2GB causes a segfault. (Muhammad Usama)
The problem was in the block_address() function that returns the memory address for a given cache block, It was using 32bit integers to calculate the offset of the block within the shared memory space that is only good until the 2GB limit.
Fix rare segfaults in pcp_proc_info, SHOW pool_pools and SHOW pool_processes. (Tatsuo Ishii)
The segfaults were in get_pools() and get_processes(). They first extracted pid of particular process info slot on shared memory then searched the slot again by using pid as the key. Because these steps were not protected by any locking, it was possible that the search using the pid failed and returned NULL if the process id is overwritten by pgpool parent which is responsible for forking new child process after the process exiting. As a result any subsequent reference to the NULL pointer generated segfaults.
Solution is, first get the pointer to the process info slot then extract the process id member from the pointer. This way, still concurrent updating to the shared memory info by the parent process is possible (which may lead to strange results in the output) but at least we can avoid segfaults.
Fix to not allow Unix-domain socket path with invalid length. (Masaya Kawamoto)
Doc: enhance description about memqcache_method. (Tatsuo Ishii)
Add explanation which method should be used.
Doc: mention that health check process may use SSL. (Tatsuo Ishii)
Also mention that streaming replication check may use SSL too. This should have been added since 2010.
Discussion: [pgpool-hackers: 4187]