On Mon, Dec 14, 2020 at 8:03 PM Fujii Masao <masao.fu...@oss.nttdata.com> wrote:
> > We will not output if the invalidated entry has no active connection[2], so 
> > if we fix the connection leak issue with the above discussed fix i.e 
> > closing all the invalidated connections at the end of next xact, there are 
> > less chances that we will output invalidated entries in the 
> > postgres_fdw_get_connections() output. Only case we may show up invalidated 
> > connections(which have active connections entry->conn) in the 
> > postgres_fdw_get_connections() output is as follows:
> >
> > 1) say we have few cached active connections exists in session 1
> > 2) drop the user mapping (in another session) associated with any of the 
> > cached connections to make that entry invalid
> > 3) run select * from postgres_fdw_get_connections(); in session 1.  At the 
> > start of the xact, the invalidation message gets processed and the 
> > corresponding entry gets marked as invalid. If we allow invalid connections 
> > (that have entry->conn) to show up in the output, then we show them in the 
> > result of the query. At the end of xact, we close these invalid 
> > connections, in this case, user might think that he still have invalid 
> > connections active.
>
> What about the case where the transaction started at the above 1) at session 
> 1, and postgres_fdw_get_connections() in the above 3) is called within that 
> transaction at session 1? In this case, postgres_fdw_get_connections() can 
> return even invalidated connections?

In that case, since the user mapping would have been dropped in
another session and we are in the middle of a txn in session 1, the
entries would not get marked as invalid until the invalidation message
gets processed by the session 1 which may happen if the session 1
opens a sub txn, if not then for postgres_fdw_get_connections() the
entries will still be active as they would not have been marked as
invalid yet and postgres_fdw_get_connections() would return them in
the output.

With Regards,
Bharath Rupireddy.
EnterpriseDB: http://www.enterprisedb.com


Reply via email to