pgpool-II 4.7.2 Documentation
Prev | Up | Appendix A. Release Notes | Next

# A.193. Release 3.6.1

> Release Date: 2016-12-26

## A.193.1. Bug fixes

- Tightening up the watchdog security. (Muhammad Usama)

  Now wd_authkey uses the HMAC SHA-256 hashing.

- Add pgpool_adm extension in Pgpool-II RPM. (Bo Peng)

- Fix occasional segfault when query cache is enabled. (bug 263) (Tatsuo Ishii)

- Fix packet kind does not match error in extended protocol. (bug 231) (Tatsuo Ishii)

  According to the bug231, the bug seem to bite you if all of following conditions are met:

  - Streaming replication mode

  - Load balance node is not node 0

  - Extended protocol is used

  - SELECT is executed, the statement is closed, then a transaction command is executed

  The sequence of how the problem bites is:

  1. SELECT executes on statement S1 on the load balance node 1

  2. Frontend send Close statement

  3. Pgpool-II forward it to backend 1

  4. Frontend sends Parse, Bind, Execute of COMMIT

  5. Pgpool-II forward it to backend 0 & 1

  6. Frontend sends sync message

  7. Pgpool-II forward it to backend 0 & 1

  8. Backend 0 replies back Parse complete ("1"), while backend 1 replies back close complete ("3") because of #3.

  9. Kind mismatch occurs

  The solution is, in #3, let Pgpool-II wait for response from backend 1, but do not read the response message. Later on Pgpool-II's state machine will read the response from it before the sync message is sent in #6. With this, backend 1 will reply back "1" in #8, and the kind mismatch error does not occur.

  Also, fix not calling pool_set_doing_extended_query_message() when receives Close message. (I don't know why it was missed).

  New regression test "067.bug231" was added.

- Fix a race condition in a signal handler. (bug 265) (Tatsuo Ishii)

  In child.c there's signal handler which calls elog. Since the signal handler is not blocked against other signals while processing, deadlock could occur in the system calls in the pgpool shutdown sequence. To fix the problem, now the signal handler is blocked by using POOL_SETMASK.

  Ideally we should avoid calling elog in signal handlers though.

- Fix wrong minimum configuration value for client_idle_limit_in_recovery. (bug 264) (Tatsuo Ishii)

- Allow to execute "make xslthtml" under doc.ja. (Tatsuo Ishii)

Prev | Home | Next
Release 3.6.2 | Up | Release 3.6