Re: Injection points: some tools to wait and wake
От | Michael Paquier |
---|---|
Тема | Re: Injection points: some tools to wait and wake |
Дата | |
Msg-id | ZdPkHNMK8s4o0tV4@paquier.xyz обсуждение исходный текст |
Ответ на | Re: Injection points: some tools to wait and wake (Bertrand Drouvot <bertranddrouvot.pg@gmail.com>) |
Ответы |
Re: Injection points: some tools to wait and wake
|
Список | pgsql-hackers |
On Mon, Feb 19, 2024 at 02:28:04PM +0000, Bertrand Drouvot wrote: > +CREATE FUNCTION injection_points_wake() > > what about injection_points_wakeup() instead? Sure. > +/* Shared state information for injection points. */ > +typedef struct InjectionPointSharedState > +{ > + /* protects accesses to wait_counts */ > + slock_t lock; > + > + /* Counter advancing when injection_points_wake() is called */ > + int wait_counts; > > If slock_t protects "only" one counter, then what about using pg_atomic_uint64 > or pg_atomic_uint32 instead? And btw do we need wait_counts at all? (see comment > number 4) We could, indeed, even if we use more than one counter. Still, I would be tempted to keep it in case more data is added to this structure as that would make for less stuff to do while being normally non-critical. This sentence may sound pedantic, though.. > + * SQL function for waking a condition variable > > waking up instead? Okay. > I'm wondering if this loop and wait_counts are needed, why not doing something > like (and completely get rid of wait_counts)? > > " > ConditionVariablePrepareToSleep(&inj_state->wait_point); > ConditionVariableSleep(&inj_state->wait_point, injection_wait_event); > ConditionVariableCancelSleep(); > " > > It's true that the comment above ConditionVariableSleep() mentions that: Perhaps not, but it encourages good practices around the use of condition variables, and we need to track all that in shared memory anyway. Ashutosh has argued in favor of the approach taken by the patch in the original thread when I've sent a version doing exactly what you are saying now to not track a state in shmem. -- Michael
Вложения
В списке pgsql-hackers по дате отправления: