Erlang client sends "Describe" message followed by "Flush". So the
backend returns "Row description." However Pgpool-II forgets to reset
the query in progress flag upon receiving "Row description" message,
then Pgpool-II keeps on waiting for response from backend. This is the
cause of erlang client hanging.
Fix is, just reset the query in progress flag upon receiving "Row
description" message. Same thing can be said to "no data" message.
Discussion: [pgpool-general: 5555]
http://www.pgpool.net/pipermail/pgpool-general/2017-June/005613.html
case 'T': /* RowDescription */
status = SimpleForwardToFrontend(kind, frontend, backend);
- if ((REPLICATION || RAW_MODE) && pool_is_doing_extended_query_message())
+ if (pool_is_doing_extended_query_message())
pool_unset_query_in_progress();
break;
case 'n': /* NoData */
status = SimpleForwardToFrontend(kind, frontend, backend);
- if ((REPLICATION || RAW_MODE) && pool_is_doing_extended_query_message())
+ if (pool_is_doing_extended_query_message())
pool_unset_query_in_progress();
break;