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.92) (envelope-from ) id 1jDipm-0006hQ-TR for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2020 06:02:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jDipk-00028b-Pb for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2020 06:02:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jDipk-00028U-CF for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2020 06:02:40 +0000 Received: from out5-smtp.messagingengine.com ([66.111.4.29]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jDiph-0005CV-W6 for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2020 06:02:39 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 040295C0213; Mon, 16 Mar 2020 02:02:37 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 16 Mar 2020 02:02:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paquier.xyz; h= date:from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to; s=fm1; bh=6JDoVwY3Xi52Mr7HfrOgCGkF69s KQjj2sMMl7mgfDJs=; b=SaLvmZYJ6LS1JXuywJo2xOW2ynKAEiijg7X5CAPwAOr rgmB4DgSeNik+AWuDwBLreNArwhwobwbVMEmBzB2mHncLkNZ+uiMYYyCCnbE3885 p8WtnjjvxPGapKEkXB9E1mD6Nl9X9sndWsUQVn+thOdcEwznD7lEz/v8ukuceINT LS/7WX9kpjONgg3oaUTVmckDr5pCWr70rUUJSVk4XQZBVfxa6XRXfhS79QUvyIse /S+O1jlaF5j2HB9hG5MH8uQssW8OrCsLhHHN11n/sDDPu14VV5ZvdW6taPCF8sz+ jZ5BtbIDryP83QBUq6hYEsPGdyp8yrPBdhziNcP77vA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=6JDoVw Y3Xi52Mr7HfrOgCGkF69sKQjj2sMMl7mgfDJs=; b=AcoSrHLSfMm4agNVcrez+R ULvJf9Y0yKiJMxOEtThv1I8qa7F+TSA9RQxroU5X/rodqXU5nKQLAMlFYN6UPrNl REBJB1SHANTIPX1+Nr2IawUXmzdTkP5l6Wpw3KcWCsRqJJVNNWlsP3C5dighvtr1 QncEpDLAh1UxQPYiHCuGlokBEoZfhqaI+UBqNT2VxFnBxP5z8uHf7/G3aRckJeNM g4ZIn1or32MN47D0W4wpn376EujlmOeqysoUq73iCl9KCbznY+KobLuKq9xRySPZ kyo+9hQ0zrJMlsW5UVSDfe1VWkfkS/EVOLe57mjg36YVNc5OhzBSwiS0dEnhP1Rg == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudefvddgudduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne gfrhhlucfvnfffucdlfeehmdenucfjughrpeffhffvuffkfhggtggujgesghdtreertddt vdenucfhrhhomhepofhitghhrggvlhcurfgrqhhuihgvrhcuoehmihgthhgrvghlsehprg hquhhivghrrdighiiiqeenucffohhmrghinhepphhoshhtghhrvghsqhhlrdhorhhgnecu kfhppeduuddurddutddvrddukedtrddukeehnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepmhhitghhrggvlhesphgrqhhuihgvrhdrgiihii X-ME-Proxy: Received: from paquier.xyz (ee0822lan1.rev.em-net.ne.jp [111.102.180.185]) by mail.messagingengine.com (Postfix) with ESMTPA id 696763280059; Mon, 16 Mar 2020 02:02:34 -0400 (EDT) Date: Mon, 16 Mar 2020 15:02:31 +0900 From: Michael Paquier To: Justin Pryzby Cc: Julien Rouhaud , Sergei Kornilov , Guillaume Lelarge , pgsql-hackers@lists.postgresql.org Subject: Re: Expose lock group leader pid in pg_stat_activity Message-ID: <20200316060231.GD2331@paquier.xyz> References: <20200116074912.GA98418@paquier.xyz> <20200316042752.GE26184@telsasoft.com> <20200316054341.GG26184@telsasoft.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="Il7n/DHsA0sMLmDu" Content-Disposition: inline In-Reply-To: <20200316054341.GG26184@telsasoft.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --Il7n/DHsA0sMLmDu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Mar 16, 2020 at 12:43:41AM -0500, Justin Pryzby wrote: > I think I see. Julien's v3 patch did this: > https://www.postgresql.org/message-id/attachment/106429/pgsa_leader_pid-v= 3.diff > + if (proc->lockGroupLeader) > + values[29] =3D Int32GetDatum(proc->lockGroupLeader->pid); >=20 > ..which is racy because a proc with a leader might die and be replaced by > another proc without a leader between 1 and 2. >=20 > But the code since v4 does: >=20 > + leader =3D proc->lockGroupLeader; > + if (leader) > + values[29] =3D Int32GetDatum(lead= er->pid); >=20 > ..which is safe because PROCs are allocated in shared memory, so leader i= s for > sure a non-NULL pointer to a PROC. leader->pid may be read inconsistentl= y, > which is what the comment says: "no extra lock is being held". Yes, you have the correct answer here. As shaped, the code relies on the state of a PGPROC entry in shared memory. -- Michael --Il7n/DHsA0sMLmDu Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEG72nH6vTowiyblFKnvQgOdbyQH0FAl5vFncACgkQnvQgOdby QH1XRA//aBqA2IsbllMw7JV37sZy/vyeoGaNWjwlUtmAyZwNn3HOSo0vTkRwTLQ1 /h9TaSm/yesEWSLT7P3V50t+JXn84nCj8VBDJniam2dZaIjulWde0wS9laAjpL6j ZOjEaCre0TypkSAP3v2Y+fK95iGpZc1ABzqu10uwfrCvLlIOOyJQMUtr/wRIu5Wr YGVoYj5Te8N9EcxLbALPVjD81ICKTkOX7J6lv0wjLCrHWAlFMVGmbcSJYQ+aYTgo C225BRHRQ1ge6oNFf/zqnVfvOBK1HgwG9pziP61Q0v688a7q1wVokWJwiBH8WOnN 1lfPxygApfF7LHkjjcb5i/5mRzIYQD8qN+3tUdaeRxiNvz/1YQYTqUclbq6VJKYJ 4WjioqI2Ot7QyhJgUvWMJ35ZUFWHSNY/JERzOih7cDEVW03FFRUeDMOeifoxkgge s3Uo8RRRH1PyomijYAMKwmjBBdbnhBquxktLWaV6uslFhcC8I1iqEUCq8krKAxeg B2Zzah6K+Nl8VsdX2kkA6lV12Xa9UmahJCCp+06iZ3o64Ysm1HfzwHKxGZ3h5KHE GlwkYnoiljn0NShF6VjOpTO8n12UpBpHhNbrCVB+fb5L7CUTQl8QwaPUCl/Din57 Oq177Ac1uQ6tDelmbx05Of5vSaEQqyKlFLw9RxqP7QkBJvMFAbI= =WC4x -----END PGP SIGNATURE----- --Il7n/DHsA0sMLmDu--