Re: cleanup temporary files after crash
От | Euler Taveira |
---|---|
Тема | Re: cleanup temporary files after crash |
Дата | |
Msg-id | 6eff9861-b059-4eaa-ae70-e5ff877b6448@www.fastmail.com обсуждение исходный текст |
Ответ на | Re: cleanup temporary files after crash (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: cleanup temporary files after crash
|
Список | pgsql-hackers |
On Fri, Mar 19, 2021, at 12:23 AM, Tom Lane wrote:
[ reads code... ]... no, I think the problem is the test is still full of race conditions.In the first place, waiting till you see the output of a SELECT that'sbefore the useful query is not enough to guarantee that the useful queryis done, or even started. That's broken on both sessions.
That's an ugly and fragile mechanism to workaround the fact that pump_until
reacts after you have the query return.
In the second place, even if the second INSERT has started, you don't knowthat it's reached the point of blocking on the tuple conflict yet.Which in turn means that it might not've filled its tuplestore yet.In short, this script is designed to ensure that the test query can'tfinish too soon, but that proves nothing about whether the test queryhas even started. And since you also haven't really guaranteed that theintended-to-be-blocking query is done, I don't think that the firstcondition really holds either.
In order to avoid the race condition between filling the tuplestore and killing
the backend, we could use a pool_query_until() before SIGKILL to wait the
temporary file being created. Do you think this modification will make this
test more stable?
Вложения
В списке pgsql-hackers по дате отправления: