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
|
Список | 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 по дате отправления: