ecpg PREPARE is not thread safe

Поиск
Список
Период
Сортировка
От ITAGAKI Takahiro
Тема ecpg PREPARE is not thread safe
Дата
Msg-id 20070921103313.68C4.ITAGAKI.TAKAHIRO@oss.ntt.co.jp
обсуждение исходный текст
Ответы Re: ecpg PREPARE is not thread safe  (Michael Meskes <meskes@postgresql.org>)
Список pgsql-hackers
Hi,

I encountered segfaults in a multi-threaded ecpg application. It uses
PREPARE statements concurrently in several threads. The cause seems to
be the global variable 'prep_stmts' in ecpg/ecpglib/prepare.c .
It is accessed without any locks.

I'm trying to fix it, but there are some approaches to fix it.  1. Add a giant lock to protect prep_stmts.  2. Put
prep_stmtsinto TSD (Thread Specific Data).  3. Put prep_stmts into connection specific data.
 

I think the proper approach is 3, because server-side prepared statements
are independent in each connection. For that matter, are there any problems
in current codes? Prepared statements are managed with a single list in it.
Even if we have some kinds of exclusive controls, current ecpg might not
good at prepared statements when we use multiple connections in a signle
thread or do multiple PREPARE in multiple threads. If so, 1 and 2 are not
correct fixes.

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: HOT is applied
Следующее
От: Tom Lane
Дата:
Сообщение: Re: HOT is applied