[pgpool-hackers: 1072] Re: [pgpool-committers: 2702] pgpool: Mega patch to enhance performance in extended protocol mode.
Yugo Nagata
nagata at sraoss.co.jp
Wed Sep 30 18:21:44 JST 2015
Ishii-san
Thank you for reply. I understand that we don't have to be worry
about memory leak.
BTW, I found other questions about the commit.
(1)
> - New data structure called "pending message queue" is created to
> manage which response of particular message is pending. When
> Parse/Bind/Close message are received, each message is en-queued.
> The information is used to process those response messages, when
> Parse complete/Bind completes and Close compete message are received
> because they don't have any information regarding statement/portal.
In the codes, this structure is used only for Close message
(in Close() and CloseComplete()). This is enough and the
structure is not necessary for Parse/Bind?
(2)
In CloseComplete() function, the condition for removing message is
"kind == ' '". Is should be "kind != ' '" ?
pool_remove_sent_message(' ', name) looks odd to me.
1865 if (kind == ' ')
1866 {
1867 pool_remove_sent_message(kind, name);
1868 ereport(DEBUG1,
1869 (errmsg("CloseComplete: remove uncompleted message. kind:%c, name:%s",
1870 kind, name)));
1871 }
On Wed, 30 Sep 2015 14:04:10 +0900 (JST)
Tatsuo Ishii <ishii at postgresql.org> wrote:
> [remving Cc: to pgpool-committers to keep the list clean]
>
> > Ishii-san
> >
> > Looking at the commit, I found that pool_sent_message_destory()
> > isn't called in pool_remove_sent_message() which is commented
> > out with XXX. Is it needed? I think this causes memory leak.
> >
> > @@ -304,7 +317,8 @@ bool pool_remove_sent_message(char kind, const char *name)
> > if (msglist->sent_messages[i]->kind == kind &&
> > !strcmp(msglist->sent_messages[i]->name, name))
> > {
> > - pool_sent_message_destroy(msglist->sent_messages[i]);
> > + //XXX
> > + //pool_sent_message_destroy(msglist->sent_messages[i]);
> > break;
> > }
> > }
>
> Because the commit removes most flush messages, it is possible that
> pending messages remain (not yet receiving response message from
> backend).
>
> Also, the memory for sent_message is in the session context, when a
> session ends, it will be freed anyway.
>
> However the code is apparently a temporary one, I should have cleaned
> earlier. Will work on it.
>
> Best regards,
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp
--
Yugo Nagata <nagata at sraoss.co.jp>
More information about the pgpool-hackers
mailing list