Re: Weird test mixup
От | Michael Paquier |
---|---|
Тема | Re: Weird test mixup |
Дата | |
Msg-id | ZhOd3NXAutteokGL@paquier.xyz обсуждение исходный текст |
Ответ на | Re: Weird test mixup (Michael Paquier <michael@paquier.xyz>) |
Ответы |
Re: Weird test mixup
|
Список | pgsql-hackers |
On Mon, Apr 08, 2024 at 10:22:40AM +0900, Michael Paquier wrote: > For now I have applied 997db123c054 to make the GIN tests with > injection points repeatable as it was an independent issue, and > f587338dec87 to add the local function pieces. Bharath has reported me offlist that one of the new tests has a race condition when doing the reconnection. When the backend creating the local points is very slow to exit, the backend created after the reconnection may detect that a local point previously created still exists, causing a failure. The failure can be reproduced with a sleep in the shmem exit callback, like: --- a/src/test/modules/injection_points/injection_points.c +++ b/src/test/modules/injection_points/injection_points.c @@ -163,6 +163,8 @@ injection_points_cleanup(int code, Datum arg) if (!injection_point_local) return; + pg_usleep(1000000 * 1L); + SpinLockAcquire(&inj_state->lock); for (int i = 0; i < INJ_MAX_CONDITION; i++) { At first I was looking at a loop with a scan of pg_stat_activity, but I've noticed that regress.so includes a wait_pid() that we can use to make sure that a given process exits before moving on to the next parts of a test, so I propose to just reuse that here. This requires tweaks with --dlpath for meson and ./configure, nothing new. The CI is clean. Patch attached. Thoughts? -- Michael
Вложения
В списке pgsql-hackers по дате отправления: