Broken order-of-operations in parallel query latch manipulation - Mailing list pgsql-hackers

From Tom Lane
Subject Broken order-of-operations in parallel query latch manipulation
Date
Msg-id 1661.1469996911@sss.pgh.pa.us
Whole thread Raw
Responses Re: Broken order-of-operations in parallel query latch manipulation  (Amit Kapila <amit.kapila16@gmail.com>)
List pgsql-hackers
Both shm_mq.c and nodeGather.c contain instances of this coding pattern:
           WaitLatch(MyLatch, WL_LATCH_SET, 0);           CHECK_FOR_INTERRUPTS();           ResetLatch(MyLatch);

I believe this is wrong and the CHECK_FOR_INTERRUPTS needs to be before
or after the two latch operations.  As-is, if the reason somebody set
our latch was to get us to notice that a CHECK_FOR_INTERRUPTS condition
happened, there's a race condition where we'd fail to realize that.
Other places such as ProcWaitForSignal() do it that way; only recently
introduced (and unproven in the field) code has it like this.

Anyone want to argue it's okay as-is?
        regards, tom lane



pgsql-hackers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: Hash indexes and effective_cache_size in CREATE INDEX documentation
Next
From: Greg Stark
Date:
Subject: Re: Slowness of extended protocol