Re: pg_advisory_lock lock FAILURE / What does those numbers mean (process 240828 waits for ExclusiveLock on advisory lock [1167570,16820923,3422556162,1];)?

From: Alexandru Lazarev <alexandru(dot)lazarev(at)gmail(dot)com>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: Postgres General <pgsql-general(at)postgresql(dot)org>, pgsql-sql(at)postgresql(dot)org
Subject: Re: pg_advisory_lock lock FAILURE / What does those numbers mean (process 240828 waits for ExclusiveLock on advisory lock [1167570,16820923,3422556162,1];)?
Date: 2019-07-19 19:52:05
Message-ID: CAL93h0GqbLfLR+hn08oy9owhMG2gvTuuGezsVN=Ye=Dea8HkKQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-sql

Thanks. Question closed. :)

<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
Virus-free.
www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Fri, Jul 19, 2019 at 10:27 PM Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
wrote:

> On Fri, 2019-07-19 at 21:15 +0300, Alexandru Lazarev wrote:
> > I receive locking failure on pg_advisory_lock, I do deadlock condition
> and receive following:
> > - - -
> > ERROR: deadlock detected
> > SQL state: 40P01
> > Detail: Process 240828 waits for ExclusiveLock on advisory lock
> [1167570,16820923,3422556162,1]; blocked by process 243637.
> > Process 243637 waits for ExclusiveLock on advisory lock
> [1167570,16820923,3422556161,1]; blocked by process 240828.
> > - - -
> > I do from Tx1:
> > select pg_advisory_lock(72245317596090369);
> > select pg_advisory_lock(72245317596090370);
> > and from Tx2:
> > select pg_advisory_lock(72245317596090370);
> > select pg_advisory_lock(72245317596090369);
> >
> > where long key is following: 72245317596090369-> HEX 0x0100AABBCC001001
> > where 1st byte (highest significance "0x01") is namespace masked with
> MAC Address " AABBCC001001", but in error i see 4 numbers - what is their
> meaning?
> > I deducted that 2nd ( 16820923 .) HEX 0x100AABB, 1st half of long key)
> and 3rd is ( 3422556161 -> HEX 0xCC001001, 2nd half of long key)
> > but what are 1st ( 1167570 ) and 4th (1) numbers?
>
> See this code in src/backend/utils/adt/lockfuncs.c:
>
> /*
> * Functions for manipulating advisory locks
> *
> * We make use of the locktag fields as follows:
> *
> * field1: MyDatabaseId ... ensures locks are local to each database
> * field2: first of 2 int4 keys, or high-order half of an int8 key
> * field3: second of 2 int4 keys, or low-order half of an int8 key
> * field4: 1 if using an int8 key, 2 if using 2 int4 keys
> */
> #define SET_LOCKTAG_INT64(tag, key64) \
> SET_LOCKTAG_ADVISORY(tag, \
> MyDatabaseId, \
> (uint32) ((key64) >> 32), \
> (uint32) (key64), \
> 1)
> #define SET_LOCKTAG_INT32(tag, key1, key2) \
> SET_LOCKTAG_ADVISORY(tag, MyDatabaseId, key1, key2, 2)
>
> Yours,
> Laurenz Albe
> --
> Cybertec | https://www.cybertec-postgresql.com
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Peter J. Holzer 2019-07-19 19:53:13 Re: How to run a task continuously in the background
Previous Message Peter J. Holzer 2019-07-19 19:39:56 Re: Rearchitecting for storage

Browse pgsql-sql by date

  From Date Subject
Next Message Karen Goh 2019-07-21 00:58:05 How do I alter an existing column and add a foreign key which is a Primary key to a table?
Previous Message Laurenz Albe 2019-07-19 19:27:20 Re: pg_advisory_lock lock FAILURE / What does those numbers mean (process 240828 waits for ExclusiveLock on advisory lock [1167570,16820923,3422556162,1];)?