Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hoYXQ-0002ca-I1 for pgsql-sql@arkaria.postgresql.org; Fri, 19 Jul 2019 19:27:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hoYXP-0008FC-AC for pgsql-sql@arkaria.postgresql.org; Fri, 19 Jul 2019 19:27:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hoYXO-0008Ax-SF for pgsql-sql@lists.postgresql.org; Fri, 19 Jul 2019 19:27:27 +0000 Received: from mail-ed1-x541.google.com ([2a00:1450:4864:20::541]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hoYXM-000655-0H for pgsql-sql@postgresql.org; Fri, 19 Jul 2019 19:27:26 +0000 Received: by mail-ed1-x541.google.com with SMTP id m10so35382789edv.6 for ; Fri, 19 Jul 2019 12:27:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:date:in-reply-to:references:user-agent :mime-version:content-transfer-encoding; bh=qupAfBlbjPGSyzIakKCzES2mMmZ1o7p/TJj07iPkA2Q=; b=gMotYvJgYfBQPyhVQ7JL93V75GfZB/wjW/8TWWSjHk5gtXyQ0Jxkes0MrFNIbO6yQ/ dQ58wfE3CvCASM4KOTbPpI8YF75vfgn5acfodxX7DoVQG0wzxvWVzmPWv1J4K/zPTThC oZoZGQcRiDmBmKEc09NwY00B5qiDwIlEZid4w1j7Xz6YXxC8MqD3l/t8+VeAKd4l8JQM vJCpPoCPu/+yj5qimAgdRPNufJZtss2J6FTgm7qxC8FAvmFrEtVw/D2nWWSsz/SuUHwE EmAQ6lEs4IcCTFkAKfbLyD67FUU4td2HoLAsL8Kd+RlKRsgZHAhXoVxNt5+brQ4oTM7R SQtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=qupAfBlbjPGSyzIakKCzES2mMmZ1o7p/TJj07iPkA2Q=; b=Vfe/m+whHF3Tg6KpTokN5q3GlqN8gN290WdRUCEWsdCMvQWxsjk+uhwY9u2WeLZpTS CrlRG62VtkOPUKp4fjI+CB9XyvwyBV3/+BNSRLb+cOJ4oh7kXjAzE658A1R3JC4qPcer CNiOTdOZQkqc5jJ/VftKXVoJKwOdKPkp6fE371cSzjMleuYlEEj2IzSifccSaWhooe1q QRePfViYPmssTrLwHBZY+hR2gOkPbjnsW1+/9Yx2iivwuj7ddOJu5jBOdPXW04uKiI0Y 79Ti+/exSNGeSvWcJaWB4MuZRd8e+RibbGgdzFKbcoNQqg+K4XyuN0JkTz64dbjmzu81 +BRg== X-Gm-Message-State: APjAAAUg+3T4PXd30EodVa6RaRdra6wEhkOT/Z8lNEBDXXJf6w0akw1R QZYZI1/8C3r56oEYC9dcdZU= X-Google-Smtp-Source: APXvYqzRKnfPKzoBTiiL+AYMNHxfBOFw8X0jqJCS1akzZbfTZ2qSHSedPtNfkKdSCPZv2w1C7LH22Q== X-Received: by 2002:a50:9729:: with SMTP id c38mr49387356edb.283.1563564442112; Fri, 19 Jul 2019 12:27:22 -0700 (PDT) Received: from localhost.localdomain ([213.208.157.37]) by smtp.gmail.com with ESMTPSA id i18sm9027387ede.65.2019.07.19.12.27.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 12:27:21 -0700 (PDT) Message-ID: Subject: Re: pg_advisory_lock lock FAILURE / What does those numbers mean (process 240828 waits for ExclusiveLock on advisory lock [1167570,16820923,3422556162,1];)? From: Laurenz Albe To: Alexandru Lazarev , Postgres General , pgsql-sql@postgresql.org Date: Fri, 19 Jul 2019 21:27:20 +0200 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.30.5 (3.30.5-1.fc29) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk 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