On 11/23/19 8:50 PM, Mark Dilger wrote:


On 11/23/19 5:01 PM, Tom Lane wrote:
I ran into a couple of issues while trying to devise a regression test
illustrating the LISTEN-in-serializable-transaction issue Mark Dilger
reported.  The first one is that an isolation test in which we expect
to see a cross-process NOTIFY immediately after a COMMIT turns out to
be not very stable: on my machine, it works as long as you're just
running the isolation tests by themselves, but it usually falls over
if I'm running check-world with any amount of parallelism.  The reason
for this seems to be that incoming notifies are only checked for when
we're about to wait for client input.  At that point we've already
sent the ReadyForQuery ('Z') protocol message, which will cause libpq
to stand down from looking for more input and return a null from
PQgetResult().  Depending on timing, the following Notify protocol
messages might arrive quickly enough that isolationtester.c sees them
before it goes off to do something else, but that's not very reliable.

Thanks for working on this, Tom.

I have finished reading and applying your three patches and have moved on to testing them.  I hope to finish the review soon.

After applying all three patches, the stress test that originally
uncovered the assert in predicate.c no longer triggers any asserts.
`check-world` passes.  The code and comments look good.

Your patches are ready for commit.

--
Mark Dilger


Reply via email to