Re: Weird test mixup

x4mmm@yandex-team.ru

From: "Andrey M. Borodin" <x4mmm@yandex-team.ru>
To: Michael Paquier <michael@paquier.xyz>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-04-06T05:34:46Z
Lists: pgsql-hackers

> On 5 Apr 2024, at 07:19, Michael Paquier <michael@paquier.xyz> wrote:
> 
> It's been a couple of weeks since this has been sent, and this did not
> get any reviews.  I'd still be happy with the simplicity of a single
> injection_points_local() that can be used to link all the injection
> points created in a single process to it, discarding them once the
> process exists with a shmem exit callback.

OK, makes sense.
I find name of the function "injection_points_local()" strange, because there is no verb in the name. How about "injection_points_set_local"?

>  And I don't really see an
> argument to tweak the backend-side routines, as well.
>  Comments and/or
> objections?

I'm not sure if we should refactor anything here, but InjectionPointSharedState has singular name, plural wait_counts and singular condition.
InjectionPointSharedState is already an array of injection points, maybe let's add there optional pid instead of inventing separate array of pids?

Can we set global point to 'notice', but same local to 'wait'? Looks like now we can't, but allowing to do so would make code simpler.

Besides this opportunity to simplify stuff, both patches looks good to me.


Best regards, Andrey Borodin.


Commits

  1. injection_points: Store runtime conditions in private area

  2. Introduce private data area for injection points

  3. injection_points: Fix incorrect spinlock acquisition

  4. Make GIN tests using injection points concurrent-safe

  5. injection_points: Fix race condition with local injection point tests

  6. injection_points: Introduce runtime conditions

  7. Make GIN test using injection points repeatable

  8. Fix backstop in gin test if injection point is not reached

  9. Try to unbreak injection-fault tests in the buildfarm

  10. Disable tests using injection points in installcheck