pgpool2.git / summary / log / commit / refs

commit    cf0bb90d751ea10354953749f02a45e73ada0c32
Author:   Tatsuo Ishii <ishii@postgresql.org>
Date:     Tue Dec 12 06:18:56 2017 +0000

    Fix for re-sync logic in reading packet from backend.
    
    read_kind_from_backend(), which reads message kind from backend,
    re-syncs backend nodes when a ready for query message is
    received. Unfortunately it forgot to call
    pool_pending_message_pull_out() to delete sync pending message. This
    leads to random stuck while reading packets from backend. Fix this to
    call pool_pending_message_pull_out().


src/protocol/pool_process_query.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/protocol/pool_process_query.c b/src/protocol/pool_process_query.c index 11d3dc349..31c773f91 100644 --- a/src/protocol/pool_process_query.c +++ b/src/protocol/pool_process_query.c @@ -3455,6 +3455,16 @@ void read_kind_from_backend(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *bac ereport(DEBUG1, (errmsg("read_kind_from_backend: succeeded in re-sync"))); *decided_kind = kind; + + if (SL_MODE && pool_get_session_context(true) && pool_is_doing_extended_query_message() && + msg && msg->type == POOL_SYNC) + { + POOL_PENDING_MESSAGE *pending_message; + + pending_message = pool_pending_message_pull_out(); + if (pending_message) + pool_pending_message_free_pending_message(pending_message); + } return; } [parent: ce42ffcf9f54]