Re: Deadlock when inserting from multiple processes - Mailing list pgsql-admin

From Dave Johansen
Subject Re: Deadlock when inserting from multiple processes
Date
Msg-id CAAcYxUc+uckyb3p2XEDaVFLV0ppZ972MZ6xKBaVm9dtEy2cb5Q@mail.gmail.com
Whole thread Raw
In response to Re: Deadlock when inserting from multiple processes  (Keith <keith@keithf4.com>)
Responses Re: Deadlock when inserting from multiple processes  (Keith <keith@keithf4.com>)
List pgsql-admin
On Wed, Apr 27, 2016 at 1:45 PM, Keith <keith@keithf4.com> wrote:


On Wed, Apr 27, 2016 at 3:10 PM, Dave Johansen <davejohansen@gmail.com> wrote:
I'm using Postgres 9.2.15 on CentOS 7.2 with the method described below to support INSERTing from multiple processes:
http://www.postgresql.org/message-id/CAAcYxUf9o3NpiKaHdeShO_iJjm92314eX6ko0JvJidmksutkJg@mail.gmail.com

Last night, one of the processes experienced a dead lock. The error looked like this:
ERROR: deadlock detected
DETAIL: Process 23527 waits for ShareLock on transaction 1537228819; blocked by process 34184
        Process 34184 waits for ShareLock on transaction 1537228441; blocked by process 23527.

Is there anything I can do to help diagnose what the cause of this issue was?

Thanks,
Dave

Look in the postgresql logs. It should give you more info on what queries were running in each session that conflicted with each other. If you didn't have the PID as part of your log_line_prefix, that can make it a bit more challenging to figure out which sessions were which, though. I've found this prefix to be very useful (note there is a space at the end):

"%t [%r] [%p]: [%l-1] user=%u,db=%d,e=%e "

9.2 should give you enough info, but I believe more recent versions are much more verbose with their deadlock output to help with debugging.

Sorry, I didn't include that part because I was retyping the log output, but it did provide that information about the queries and it was two instances like the one that I linked to above. Basically, it's a function that wraps an INSERT with exception handling so that duplicated records won't cause an error. According to the log, the two queries were executing the actual INSERT when the deadlock happened.

pgsql-admin by date:

Previous
From: Sreekanth Palluru
Date:
Subject: Re: Testing hot standby on same server sharing same tablespace directory
Next
From: Dave Johansen
Date:
Subject: Best way to handle "read only" paritions