Release Date: 2017-04-28
Fixing a mistake in the watchdog code. (Muhammad Usama)
commit also adds some debug messages in the watchdog code.
Fix for 0000299: Errors on the reloading of configuration. (Bug 299) (Muhammad Usama)
Fix for 0000289: Inconsistent backend state. (Bug 289) (Muhammad Usama)
Enhancing the handling of split-brain scenario by the watchdog. (Muhammad Usama)
Previously, the watchdog cluster was used to call for re-election of the master/coordinator node whenever the split-brain situation was detected. And consequently every node was required to rejoin the watchdog network, Which was essentially similar to the re-booting of the whole watchdog cluster.
The candidate for the master/coordinator node is selected on the following criteria.
1-- When two watchdog nodes are claiming to be the cluster master, the master node that has performed the escalation keeps the master status and the other node is asked to step down.
2-- If the conflict could not be resolved by the escalation status of the nodes, The node which holds the quorum remains the master/coordinator.
3-- If the quorum status of both contenders is also same. The node with higher number of connected alive nodes get the preference.
4-- Finally, if all above three yields no winner, the older master (The node that has the coordinator status for longer duration) remains the master.
Enhancing the watchdog internal command mechanism to handle multiple concurrent commands. (Muhammad Usama)
Add bool encode and decode functions to JSON framework for code compatibility.(Muhammad Usama)
Comment out unsupported Java method in new JDBC drivers to prevent regression failure. (Tatsuo Ishii)
Downgrade parse before bind log message to debug1. (Tatsuo Ishii)
Fix coverity warnings. (Tatsuo Ishii, Muhammad Usama)
Fix for [pgpool-general: 5396] pam ldap failure. (Muhammad Usama)
Consider SHOW command as kind of a read query. (Tatsuo Ishii)
In streaming replication mode, if SHOW is issued then subsequent SELECTs are sent to the primary node in an explicit transaction. This is not a reasonable and unnecessary limitation. Also fix hang when parse command returns error.
Fix memory leak problem caused by commit adcb636. (Tatsuo Ishii)
Commit adcb636 introduces "pending message queue". When a message arrives, the info is added to the queue and a copy of object is created at the same time, but forgot to free the object. Fix is, creating a new function pool_pending_message_free_pending_message() and call it after pool_pending_message_add(), pool_pending_message_get() and pool_pending_message_pull_out(). Problem reported by Sergey Kim.
Mega patch to fix "kind mismatch" (or derived) errors in streaming replication mode. (Bug 271) (Tatsuo Ishii)
The errors are caused by wrong prediction in which (or both) database node will send response to Pgpool-II. Previous implementation using "sync map" are weak and sometimes fail in the prediction.
This patch introduces new implementation using "pending message queue", which records all sent message to backends. The element of the queue stores info regarding messages types (parse/bind/execute/describe/close/sync), to which database node the message was sent and so on. It's a simple FIFO queue. When a message arrives from backend, by looking at the head of the "pending message queue", it is possible to reliably predict what kind of message and from which database node it will arrive. After receiving the message, the element is removed from the queue.
I would like to thank to Sergey Kim, who has been helping me in testing series of patches.
Fix for 0000296: Pgpool v3.6.2 terminated by systemd because the service Type has been set to 'forking'. (Bug 296) (Muhammad Usama)