Re: libpq is not thread safe

Поиск
Список
Период
Сортировка
Искать
От
Zdenek Kotala
Тема
Re: libpq is not thread safe
Дата
в 05:23:21
Msg-id
1241424350.1355.65.camel@localhost
Ответ на
Список
Дерево обсуждения
libpq is not thread safe Zdenek Kotala <Zdenek.Kotala@Sun.COM>
Re: libpq is not thread safe Tom Lane <tgl@sss.pgh.pa.us>
Re: libpq is not thread safe Zdenek Kotala <Zdenek.Kotala@Sun.COM>
Re: libpq is not thread safe Bruce Momjian <bruce@momjian.us>
Re: libpq is not thread safe Bruce Momjian <bruce@momjian.us>
Re: libpq is not thread safe Zdenek Kotala <Zdenek.Kotala@Sun.COM>
Re: libpq is not thread safe Bruce Momjian <bruce@momjian.us>
Re: libpq is not thread safe Bruce Momjian <bruce@momjian.us>

Tom Lane píše v ne 03. 05. 2009 v 16:39 -0400:
> Zdenek Kotala  writes:
> > When postgreSQL is compiled with --thread-safe that libpq should be
> > thread safe. But it is not true when somebody call fork(). The problem
> > is that fork() forks only active threads and some mutex can stay locked
> > by another thread. We use ssl_config mutex which is global.
> 
> fork() without exec() when there are open libpq connections is
> unbelievably dangerous anyway --- you will have multiple processes
> that all think they own the same database connection.  

The difference is that developer can close connection, but he is not
able to unlock a lock after fork. OK libpq does not offer any PQFinish
variant which frees only resources and close connection without
terminate message, but he can do it with dirty hacking.

Another advantage of atfork handler is that you can close all open
connection and clean resource (similar to what pkcs11 library does). But
at this moment libpq does not keep list of open connections and atfork
handler works only with pthreads.

> I think writing code to deal with this for the ssl_config mutex is entirely a waste
> of time.

yeah, I prefer to document it together how to deal with fork() and
sessions.
Zdenek




В списке pgsql-hackers по дате отправления
От: Laurent Laborde
Дата:
Сообщение: high shared buffer and swap
От: James Pye
Дата:
FAQ