On Mon, Jul 29, 2019 at 5:55 PM Tom Lane <t...@sss.pgh.pa.us> wrote: > FYI, I just got done inventing a way to reach that code, and I have > to suspect that it's impossible to do so in production, because under > ordinary circumstances no parallel worker will take any exclusive lock > that isn't already held by its leader. (If you happen to know an > easy counterexample, let's see it.)
I think the way you could make that happen would be to run a parallel query that calls a user-defined function which does LOCK TABLE. > Anyway, armed with this, I was able to prove that HEAD just hangs up > on this test case; apparently the deadlock checker never detects that > the additional holders of the advisory lock need to be rearranged. > And removing that "break" fixes it. Nice! > So I'll go commit the break-ectomy, but what do people think about > testing this better? I think it's a great idea. I was never very happy with the amount of exercise I was able to give this code. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company