Thread: WaitOnLock error - what does this mean?

WaitOnLock error - what does this mean?

From
"Robert B. Easter"
Date:
I got the error:

ERROR: WaitOnLock: error on wakeup - Aborting this transaction

Can anyone explain what this means?

I am testing my database by having it do inserts continuously using a bash
while true loop that calls psql --file to do the inserts.  When I try to do a
different kind of insert from a php script at the same time, I get the above
error.  I can provide more details if needed.  One thing, I have PL/pgSQL
triggers that cause a chain of updates to happen for each insert.

--
            - Robert

Re: WaitOnLock error - what does this mean?

From
Tom Lane
Date:
"Robert B. Easter" <reaster@comptechnews.com> writes:
> ERROR: WaitOnLock: error on wakeup - Aborting this transaction

Is there any NOTICE coming out right before that?

For example:

psql #1:

begin;
lock table tenk1;

psql #2:

begin;
lock table tenk2;
lock table tenk1;

<waits>

psql #1:

lock table tenk2;

NOTICE:  Deadlock detected -- See the lock(l) manual page for a possible cause.
ERROR:  WaitOnLock: error on wakeup - Aborting this transaction


Not sure why this isn't just one ERROR, since anyone using a client that
discards NOTICEs is going to be confused...

            regards, tom lane

Re: WaitOnLock error - what does this mean?

From
"Robert B. Easter"
Date:
On Sun, 23 Jul 2000, Tom Lane wrote:
> "Robert B. Easter" <reaster@comptechnews.com> writes:
> > ERROR: WaitOnLock: error on wakeup - Aborting this transaction
>
> Is there any NOTICE coming out right before that?

Yes.  After sending my email to this list, I kept trying the same thing again.
After a few more tries, my php script managed to do an insert but when I
looked at the inserts running from bash I saw both the NOTICE and ERROR.  My php
script only reports ERRORs when a query fails (not sure if php has any ability
to report notices). Its random which inserts will be the cause of deadlock. I
guess I'll just have to make the script output a more user-friendly message
like: system is too busy, please try again later.  Is my database design flawed
if this occurs?

>
> For example:
>
> psql #1:
>
> begin;
> lock table tenk1;
>
> psql #2:
>
> begin;
> lock table tenk2;
> lock table tenk1;
>
> <waits>
>
> psql #1:
>
> lock table tenk2;
>
> NOTICE:  Deadlock detected -- See the lock(l) manual page for a possible cause.
> ERROR:  WaitOnLock: error on wakeup - Aborting this transaction
>
>
> Not sure why this isn't just one ERROR, since anyone using a client that
> discards NOTICEs is going to be confused...
>


Re: WaitOnLock error - what does this mean?

From
Tom Lane
Date:
"Robert B. Easter" <reaster@comptechnews.com> writes:
> Is my database design flawed if this occurs?

The db layout is probably not the issue, but I'd say your scripts are
flawed.

The usual recipe for avoiding deadlocks is pretty simple: all acquirers
of locks must grab the locks in the same order.

            regards, tom lane

Re: WaitOnLock error - what does this mean?

From
Bruce Momjian
Date:
> "Robert B. Easter" <reaster@comptechnews.com> writes:
> > ERROR: WaitOnLock: error on wakeup - Aborting this transaction
>
> Is there any NOTICE coming out right before that?
>
> For example:
>
> psql #1:
>
> begin;
> lock table tenk1;
>
> psql #2:
>
> begin;
> lock table tenk2;
> lock table tenk1;
>
> <waits>
>
> psql #1:
>
> lock table tenk2;
>
> NOTICE:  Deadlock detected -- See the lock(l) manual page for a possible cause.
> ERROR:  WaitOnLock: error on wakeup - Aborting this transaction
>
>
> Not sure why this isn't just one ERROR, since anyone using a client that
> discards NOTICEs is going to be confused...

Seems the code wants to throw the NOTICE, then keep going, then throw
the error later.  I don't know who did this, but is was not me.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re: WaitOnLock error - what does this mean?

From
Bruce Momjian
Date:
> "Robert B. Easter" <reaster@comptechnews.com> writes:
> > Is my database design flawed if this occurs?
>
> The db layout is probably not the issue, but I'd say your scripts are
> flawed.
>
> The usual recipe for avoiding deadlocks is pretty simple: all acquirers
> of locks must grab the locks in the same order.

Of course, reading the lock(l) manual page helps too.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026