Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPyVC-001BqM-37 for pgsql-bugs@arkaria.postgresql.org; Thu, 21 May 2026 08:11:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPyU9-009fLn-2D for pgsql-bugs@arkaria.postgresql.org; Thu, 21 May 2026 08:10:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPyU9-009fLf-19 for pgsql-bugs@lists.postgresql.org; Thu, 21 May 2026 08:10:30 +0000 Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wPyU8-00000000hZK-0X5K for pgsql-bugs@lists.postgresql.org; Thu, 21 May 2026 08:10:30 +0000 Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-7cfc382d896so22636317b3.3 for ; Thu, 21 May 2026 01:10:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779351026; cv=none; d=google.com; s=arc-20240605; b=DIlDm+duwWtnfDvgX06jRqhgJyQKrHtIRZSgu4K06aBJ6Sg3DniZ+sQ+ilzAWPVV39 zGoXtp8BIhl9y3cCIa6ZPLl//OBBZgpOptwcbPvhZZoak9Qd+YKHn1ljySWUAKtbJjoy PeBkOoWpzm5C0uhApi/BNeuTLg7bhjIm136udtnWn8seHy+i7qK+T7vs+VcJu3haGdrW Vd4ZuT+S+39hwR78tD9Asbj/2YXOJB30Mery63mOaaYbQ7gYgh3vzB/8TKUaQ7HZ6hTz Tm8q77hZkMZP4aZZ60TyoPnEMzE5BF1mGn9+5ELu3Gd4/WVaQpc63LT3/MxneVEHI/ZU u/cA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ihu3nQnfQU/hIeX8rr5teJnMd1nJMpeCJIkPaFO+9lk=; fh=qUejYJf7342WIrj4B92vVHQjdIxIITwyLxI7rXJp9+Y=; b=kDkrDl9EYPWoXghApntaRYicz9/CUzhCcPdLzrRX/5UZ0Z0Wg8ilhdSRou+sEtJf+G FfIrpF8z+YQnF0+znT9tDW1INBz3jknZLZ1WYKLooYDZJ7zvr7LBZCpi33VH9EGOvmNY rzDPlwbEnhZir0foUU4TycFtlF6JxGOtVAbpT6WEniFMb+mp5dcWWemLEyhovzdDHbR+ b7j49jj8OJKV+OwxjfvV3uEqTJ54oEMaOI/zLx9wIZAkP1HiIj6f9rq3RJj/mN62Cmnv LgKeZGvqjkJQtF/TZiVCgf6kuX+wFkqyF4iVvmriZFWd+B4GbWM/yO35fc8FKZx0RrcY RZRA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779351026; x=1779955826; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ihu3nQnfQU/hIeX8rr5teJnMd1nJMpeCJIkPaFO+9lk=; b=gciafmLV+wnaGfmmtHjZpHdRYbrHrF7JBh2QBTHCUlo0XrE9XcxvqDOZYRszOYBqXo Nd2NICWUVBQ4UBY+17sY5tx/3ETaz0LA2M4B/lH0ADp/Vn54VduAO1ZgxIOi+YkhDxJE oLA7+qKlnW0vcivTcndl9tQSg+byC5pB+hQYHsZD+EeSnCIbcaTjbxQfp21deTt+j3w4 b2hLou3fa1GRpbR5yhqMnsIswF4e3DGS3kfyAERgKs194HAYrPsGvths7/FUZcQBkX9t csQFATxwsKVf/lDpZ623aYZNatmKXw6diDr7DGTTWhs9CJWs05+cGy+rL1Fwkjf0HpSh rdfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779351026; x=1779955826; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ihu3nQnfQU/hIeX8rr5teJnMd1nJMpeCJIkPaFO+9lk=; b=EV8IwvCR5uFMQqOzoQDGYeN49J9kyTDBwDbf6brsPGruUHsEK2Za3L0Let6v/R0H6w wSoiG1+zd7oX4lJBEW7BcOW/tx0EwxWC+WOY9hYQ5dcP86VcYcr/Sc1YSYRRXcfMSl8P o/YqJJ+ESdo5xpECjylpiXuGqcvT1dnfjvlPVtbzwpTsUeZYxN0WAK8yZ6HV4kvWXqL3 0p7xEqbu7X1JbpnxZfTNGVq5W7N5c52Iy7cyiMJCCVEK/hVkhyNzUftnhY/iFt8+cT12 4L/iMnayevYU55sxZ1WJhoB5LjoM0jyVtQvdG5yLZuGZtiG//reKKEM0PuSA1KQIqilw 32qQ== X-Forwarded-Encrypted: i=1; AFNElJ+gZ5rpzdvgroKh8QH3CdsyqFXbo/bA2m4P4AZUh5tRI3Z3hJTHBgYpUj7nTtKVEkyy8/R8RZORo4hF@lists.postgresql.org X-Gm-Message-State: AOJu0Yw3BdwGA/QAQaO+S51iTeNnCJuTtTlEweQpFEeJsa2Q3DlrF3Hm LuciXnpRLs8hK5+OGp8e91JAAFt5xd31CiF336R+7bVN69U1EKX7ktm6waOfrElxVTaBgDrwEUo k5JnmTgQCT+PEhI92yfMJCW90aLTSFa4= X-Gm-Gg: Acq92OFQK9O+Ta1tn6dYaQftSlZN7hqd8/+pF0uecxYUyxrWQ2Gyd52R1xEHoGTEmfI OX+Vq1ONDDNfsTUzcOztPY7ardCsNcJnIrvjsl3Fx+rlr2gO7f6mdOdDYpgo2SXqfnj9plQkXJj lCBauN6gojy0P2i8hnuK3niUoJelP4vpwnm91eOpTrsjvM5+bMUQsT+6xbc4LWPZSrXXw27XQuS qTHTBeS097QgF7GB1QAEws0EdkDkj09dUJ9zOP7aIgPsh0VXgTK9cAs7WEXuBrdoU+fHpeZh4cc mjxz2WRi1FoDXIMG0IjXQMKW5NnzpH9i+xX7n9tnwiHthFTG8Q== X-Received: by 2002:a05:690c:4c10:b0:7bd:8cb2:4f9f with SMTP id 00721157ae682-7d20b37903emr16716997b3.21.1779351025726; Thu, 21 May 2026 01:10:25 -0700 (PDT) MIME-Version: 1.0 References: <19488-d7ccfca2bf6b74b0@postgresql.org> In-Reply-To: From: Ayush Tiwari Date: Thu, 21 May 2026 13:40:14 +0530 X-Gm-Features: AVHnY4JpsdvH-zVlT0UylLEwEWHFBrky354D5gUgefPTuaRCS_Oj7mkuM3EL6U0 Message-ID: Subject: Re: BUG #19488: Standby connection fails after dropping on login event trigger enabled always To: Fujii Masao Cc: Alexander Korotkov , kyzevan23@mail.ru, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000d1eb8b06524f718a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d1eb8b06524f718a Content-Type: multipart/alternative; boundary="000000000000d1eb8a06524f7188" --000000000000d1eb8a06524f7188 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Wed, 20 May 2026 at 18:15, Ayush Tiwari wrote: > Hi, > > On Wed, 20 May 2026 at 17:35, Fujii Masao wrote: > >> On Wed, May 20, 2026 at 8:31=E2=80=AFPM Alexander Korotkov >> wrote: >> > >> > On Wed, May 20, 2026 at 1:03=E2=80=AFPM Fujii Masao >> wrote: >> > > On Wed, May 20, 2026 at 1:37=E2=80=AFPM Ayush Tiwari >> > > wrote: >> > > > Thanks for the report and the precise repro. >> > > >> > > +1 >> > > >> > > > Attached patch adds a RecoveryInProgress() check to skip the clean= up >> > > > branch on standbys. >> > > >> > > Thanks for investigating this issue and for the patch! >> > > The patch looks good to me. >> > > >> > > > I think this needs to be backpatched too. >> > > >> > > Yes. Seems this should be backpatched to v17, where login event >> triggers >> > > were introduced. >> > >> > I've added a tap test reproducing the bug. I'm going to push and >> > backpatch this to v17 if no objections. >> >> +# Wait for the standby to replay the CREATE/DROP catalog state. At >> +# this point the standby's pg_database.dathasloginevt is still true. >> +$primary->wait_for_replay_catchup($standby); >> + >> +# A new connection to the standby exercises EventTriggerOnLogin()'s >> +# cleanup branch. With the RecoveryInProgress() guard, that branch is >> +# skipped on the standby and the connection succeeds. Without it the >> +# session aborts with a FATAL about AccessExclusiveLock. Probing the >> +# flag itself via safe_psql is what triggers the cleanup path. >> +is( $standby->safe_psql( >> + 'postgres', >> + "SELECT dathasloginevt FROM pg_database WHERE datname =3D 'postgres'")= , >> + 't', >> + 'standby accepts connection and reports dangling dathasloginevt'); >> >> The test looks unstable to me. wait_for_replay_catchup() may connect to >> the primary to obtain the flush LSN, which could cause dathasloginevt to >> become false before the subsequent safe_psql() call on the standby. >> > I had registered this in commitfest, could see CI bot failing https://commitfest.postgresql.org/patch/6790/ my $drop_lsn =3D $primary->safe_psql( > 'postgres', q{ > BEGIN; > DROP EVENT TRIGGER init_session; > DROP FUNCTION init_session(); > COMMIT; > SELECT pg_current_wal_lsn(); > }); > > $primary->wait_for_catchup($standby, 'replay', $drop_lsn); > Attaching v3 with this change on top of Alexander's changes. Regards, Ayush --000000000000d1eb8a06524f7188 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

On Wed, 20 May 2= 026 at 18:15, Ayush Tiwari <ayushtiwari.slg01@gmail.com> wrote:
Hi,
On Wed, = 20 May 2026 at 17:35, Fujii Masao <masao.fujii@gmail.com> wrote:
On Wed, May 20, 2026 at 8:31=E2= =80=AFPM Alexander Korotkov <aekorotkov@gmail.com> wrote:
>
> On Wed, May 20, 2026 at 1:03=E2=80=AFPM Fujii Masao <masao.fujii@gmail.com> = wrote:
> > On Wed, May 20, 2026 at 1:37=E2=80=AFPM Ayush Tiwari
> > <ayushtiwari.slg01@gmail.com> wrote:
> > > Thanks for the report and the precise repro.
> >
> > +1
> >
> > > Attached patch adds a RecoveryInProgress() check to skip the= cleanup
> > > branch on standbys.
> >
> > Thanks for investigating this issue and for the patch!
> > The patch looks good to me.
> >
> > > I think this needs to be backpatched too.
> >
> > Yes. Seems this should be backpatched to v17, where login event t= riggers
> > were introduced.
>
> I've added a tap test reproducing the bug.=C2=A0 I'm going to = push and
> backpatch this to v17 if no objections.

+# Wait for the standby to replay the CREATE/DROP catalog state.=C2=A0 At +# this point the standby's pg_database.dathasloginevt is still true. +$primary->wait_for_replay_catchup($standby);
+
+# A new connection to the standby exercises EventTriggerOnLogin()'s +# cleanup branch.=C2=A0 With the RecoveryInProgress() guard, that branch i= s
+# skipped on the standby and the connection succeeds.=C2=A0 Without it the=
+# session aborts with a FATAL about AccessExclusiveLock.=C2=A0 Probing the=
+# flag itself via safe_psql is what triggers the cleanup path.
+is( $standby->safe_psql(
+ 'postgres',
+ "SELECT dathasloginevt FROM pg_database WHERE datname =3D 'postg= res'"),
+ 't',
+ 'standby accepts connection and reports dangling dathasloginevt')= ;

The test looks unstable to me. wait_for_replay_catchup() may connect to
the primary to obtain the flush LSN, which could cause dathasloginevt to become false before the subsequent safe_psql() call on the standby.

I had registered this in c= ommitfest, could see CI bot failing

my $drop_lsn =3D $primary->= ;safe_psql(
=C2=A0 =C2=A0 'postgres', q{
BEGIN;
DROP EVENT= TRIGGER init_session;
DROP FUNCTION init_session();
COMMIT;
SELEC= T pg_current_wal_lsn();
});

$primary->wait_for_catchup($standb= y, 'replay', $drop_lsn);
--000000000000d1eb8a06524f7188-- --000000000000d1eb8b06524f718a Content-Type: application/octet-stream; name="v3-0001-Skip-pg_database.dathasloginevt-cleanup-on-standby.patch" Content-Disposition: attachment; filename="v3-0001-Skip-pg_database.dathasloginevt-cleanup-on-standby.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpf7l2t50 RnJvbSBmM2JmOWFlZWUwZmUwY2VkYTllYzRjZTE5M2RlMmM0M2IyMjNkYjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBeXVzaCBUaXdhcmkgPGF5dXNodGl3YXJpLnNsZzAxQGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAxNDoyMDo1MiArMDMwMApTdWJqZWN0OiBbUEFU Q0ggdjNdIFNraXAgcGdfZGF0YWJhc2UuZGF0aGFzbG9naW5ldnQgY2xlYW51cCBvbiBzdGFuZGJ5 CgpFdmVudFRyaWdnZXJPbkxvZ2luKCkgdHJpZXMgdG8gY2xlYXIgcGdfZGF0YWJhc2UuZGF0aGFz bG9naW5ldnQgd2hlbgp0aGUgZGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBhbnkgbG9naW4gZXZlbnQg dHJpZ2dlcnMgYnV0IHRoZSBmbGFnIGlzCnN0aWxsIHNldC4gIFRvIG1ha2UgdGhhdCBzYWZlIGFn YWluc3QgY29uY3VycmVudCBmbGFnIHNldHRlcnMsIGl0CnRha2VzIGEgY29uZGl0aW9uYWwgQWNj ZXNzRXhjbHVzaXZlTG9jayBvbiB0aGUgZGF0YWJhc2Ugb2JqZWN0LgoKT24gYSBob3Qgc3RhbmRi eSwgdGhhdCBsb2NrIGFjcXVpc2l0aW9uIGZhaWxzIG91dHJpZ2h0IHdpdGgKCiAgRkFUQUw6ICBj YW5ub3QgYWNxdWlyZSBsb2NrIG1vZGUgQWNjZXNzRXhjbHVzaXZlTG9jayBvbiBkYXRhYmFzZQog ICAgICAgICAgb2JqZWN0cyB3aGlsZSByZWNvdmVyeSBpcyBpbiBwcm9ncmVzcwoKYmVjYXVzZSBM b2NrQWNxdWlyZUV4dGVuZGVkKCkgcmVmdXNlcyBsb2NrcyBzdHJvbmdlciB0aGFuClJvd0V4Y2x1 c2l2ZUxvY2sgb24gZGF0YWJhc2Ugb2JqZWN0cyBkdXJpbmcgcmVjb3ZlcnkuICBUaGUgc3RhbmRi eQphbHJlYWR5IHJlcGxheXMgdGhlIGZsYWcncyB2YWx1ZSBmcm9tIHRoZSBwcmltYXJ5LCBzbyB0 aGUgZGFuZ2xpbmcKZmxhZyBpcyB0aGUgcmVzdWx0IG9mIHJlcGxheWluZyBhIHN0YXRlIGluIHdo aWNoIHRoZSBwcmltYXJ5IGhhZAphbHJlYWR5IGRyb3BwZWQgaXRzIGxvZ2luIGV2ZW50IHRyaWdn ZXJzIGJ1dCBub3QgeWV0IHJ1biBhIGxvZ2luCmV2ZW50IHRyaWdnZXIgcGFzcyB0byBjbGVhciB0 aGUgZmxhZy4gIEFueSBzZXNzaW9uIGNvbm5lY3RpbmcgdG8gdGhlCnN0YW5kYnkgaW4gdGhhdCB3 aW5kb3cgdGhlcmVmb3JlIGZhaWxzIHRvIGNvbm5lY3QuCgpTa2lwIHRoZSBjbGVhbnVwIG9uIGEg c3RhbmRieS4gIFRoZSBmbGFnIHdpbGwgYmUgY2xlYXJlZCB2aWEgV0FMCnJlcGxheSBvbmNlIHRo ZSBwcmltYXJ5IGNsZWFycyBpdCBvbiBpdHMgc2lkZS4KCkFkZCBhIHJlY292ZXJ5IFRBUCB0ZXN0 IHRoYXQgcmVwcm9kdWNlcyB0aGUgb3JpZ2luYWwgcmVwb3J0OiBjcmVhdGUKYW5kIGRyb3AgYSBs b2dpbiBldmVudCB0cmlnZ2VyIG9uIHRoZSBwcmltYXJ5IGluIG9uZSBzZXNzaW9uLCB3YWl0CmZv ciB0aGUgc3RhbmRieSB0byByZXBsYXksIHRoZW4gdmVyaWZ5IHRoYXQgYSBmcmVzaCBjb25uZWN0 aW9uIHRvCnRoZSBzdGFuZGJ5IHN1Y2NlZWRzLgoKQmFja3BhdGNoIHRvIHYxNywgd2hlcmUgdGhl IGxvZ2luIGV2ZW50IHRyaWdnZXJzIHdlcmUgaW50cm9kdWNlZC4KCkF1dGhvcjogQXl1c2ggVGl3 YXJpIDxheXVzaHRpd2FyaS5zbGcwMUBnbWFpbC5jb20+ClJlcG9ydGVkLWJ5OiBFZ29yIENoaW5k eWFza2luIDxreXpldmFuMjNAbWFpbC5ydT4KUmV2aWV3ZWQtYnk6IEZ1amlpIE1hc2FvIDxtYXNh by5mdWppaUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29y b3Rrb3ZAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE5NDg4LWQ3 Y2NmY2EyYmY2Yjc0YjAlNDBwb3N0Z3Jlc3FsLm9yZwpCYWNrcGF0Y2gtdGhyb3VnaDogMTcKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgfCAxMCArKy0K IHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAxICsKIC4u Li90LzA1M19zdGFuZGJ5X2xvZ2luX2V2ZW50X3RyaWdnZXIucGwgICAgICB8IDc5ICsrKysrKysr KysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N0YW5kYnlf bG9naW5fZXZlbnRfdHJpZ2dlci5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpp bmRleCBkY2QyZjVhMDliYi4uYWRjNmVhYmMwZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90 cmlnZ2VyLmMKQEAgLTkzNyw4ICs5MzcsMTYgQEAgRXZlbnRUcmlnZ2VyT25Mb2dpbih2b2lkKQog CSAqIGxvY2sgdG8gcHJldmVudCBjb25jdXJyZW50IFNldERhdGFiYXNlSGFzTG9naW5FdmVudFRy aWdnZXJzKCksIGJ1dCB3ZQogCSAqIGRvbid0IHdhbnQgdG8gaGFuZyB0aGUgY29ubmVjdGlvbiB3 YWl0aW5nIG9uIHRoZSBsb2NrLiAgVGh1cywgd2UgYXJlCiAJICoganVzdCB0cnlpbmcgdG8gYWNx dWlyZSB0aGUgbG9jayBjb25kaXRpb25hbGx5LgorCSAqCisJICogU2tpcCB0aGlzIG9uIGEgaG90 IHN0YW5kYnk6IHRoZSBjb25kaXRpb25hbCBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIHRoZQorCSAq IGRhdGFiYXNlIG9iamVjdCB3b3VsZCBmYWlsIHdpdGggImNhbm5vdCBhY3F1aXJlIGxvY2sgbW9k ZSAuLi4gd2hpbGUKKwkgKiByZWNvdmVyeSBpcyBpbiBwcm9ncmVzcyIsIHdoaWNoIHRoZSBjYWxs ZXIgd291bGQgc3VyZmFjZSBhcyBhIEZBVEFMCisJICogY29ubmVjdGlvbiBlcnJvci4gIE9uIGEg c3RhbmRieSwgd2UgY2Fubm90IChhbmQgbXVzdCBub3QpIGNsZWFyIHRoZQorCSAqIHBnX2RhdGFi YXNlIGZsYWcgb3Vyc2VsdmVzOyBpdCB3aWxsIGJlIGNsZWFyZWQgdmlhIFdBTCByZXBsYXkgb25j ZSB0aGUKKwkgKiBwcmltYXJ5J3MgbmV4dCBsb2dpbiBldmVudCB0cmlnZ2VyIHJ1biBjbGVhcnMg aXQgb24gdGhlIHByaW1hcnkuCiAJICovCi0JZWxzZSBpZiAoQ29uZGl0aW9uYWxMb2NrU2hhcmVk T2JqZWN0KERhdGFiYXNlUmVsYXRpb25JZCwgTXlEYXRhYmFzZUlkLAorCWVsc2UgaWYgKCFSZWNv dmVyeUluUHJvZ3Jlc3MoKSAmJgorCQkJIENvbmRpdGlvbmFsTG9ja1NoYXJlZE9iamVjdChEYXRh YmFzZVJlbGF0aW9uSWQsIE15RGF0YWJhc2VJZCwKIAkJCQkJCQkJCQkgMCwgQWNjZXNzRXhjbHVz aXZlTG9jaykpCiAJewogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRleCAzNmQ3ODk3MjBhMy4u OWViOGVkMTE0MjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC02MSw2ICs2MSw3IEBAIHRlc3Rz ICs9IHsKICAgICAgICd0LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5wbCcsCiAgICAgICAndC8w NTFfZWZmZWN0aXZlX3dhbF9sZXZlbC5wbCcsCiAgICAgICAndC8wNTJfY2hlY2twb2ludF9zZWdt ZW50X21pc3NpbmcucGwnLAorICAgICAgJ3QvMDUzX3N0YW5kYnlfbG9naW5fZXZlbnRfdHJpZ2dl ci5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUzX3N0YW5kYnlfbG9naW5fZXZlbnRfdHJpZ2dlci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUzX3N0YW5kYnlfbG9naW5fZXZlbnRfdHJpZ2dlci5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMjBkY2FkMDQ1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzA1M19zdGFuZGJ5X2xvZ2luX2V2ZW50X3RyaWdnZXIucGwKQEAgLTAsMCAr MSw3OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisjCisjIFZlcmlmeSB0aGF0IGNvbm5lY3RpbmcgdG8gYSBzdGFuZGJ5IHN0aWxs IHdvcmtzIGFmdGVyIGEgbG9naW4gZXZlbnQKKyMgdHJpZ2dlciBoYXMgYmVlbiBjcmVhdGVkIGFu ZCBkcm9wcGVkIG9uIHRoZSBwcmltYXJ5LgorIworIyBDUkVBVEUgRVZFTlQgVFJJR0dFUiAuLi4g T04gbG9naW4gc2V0cyBwZ19kYXRhYmFzZS5kYXRoYXNsb2dpbmV2dCB0bworIyB0cnVlIG9uIHRo ZSBwcmltYXJ5LCBidXQgRFJPUCBFVkVOVCBUUklHR0VSIGRvZXMgbm90IGNsZWFyIGl0IC0tIHRo ZQorIyBuZXh0IGxvZ2luIGV2ZW50IHRyaWdnZXIgcGFzcyBjbGVhcnMgdGhlIGZsYWcgbGF6aWx5 IG9uIHRoZSBwcmltYXJ5LgorIyBUaGF0IGRhbmdsaW5nIGZsYWcgcmVwbGljYXRlcyB0byB0aGUg c3RhbmRieS4gIEJlZm9yZSB0aGUKKyMgUmVjb3ZlcnlJblByb2dyZXNzKCkgZ3VhcmQgaW4gRXZl bnRUcmlnZ2VyT25Mb2dpbigpLCB0aGUgc3RhbmRieQorIyB0cmllZCB0byBjbGVhciB0aGUgZmxh ZyBpdHNlbGYsIHdoaWNoIHJlcXVpcmVzIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sKKyMgb24gdGhlIGRh dGFiYXNlIG9iamVjdDsgdGhhdCBsb2NrIG1vZGUgaXMgZm9yYmlkZGVuIGR1cmluZyByZWNvdmVy eSwKKyMgc28gdGhlIG5ldyBjb25uZWN0aW9uIGRpZWQgd2l0aCBGQVRBTC4KKwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisK KyMgU2V0IHVwIHByaW1hcnkgYW5kIGEgc3RyZWFtaW5nIHN0YW5kYnkuCitteSAkcHJpbWFyeSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKyRwcmltYXJ5LT5zdGFydDsKKworbXkgJGJhY2t1 cF9uYW1lID0gJ2xvZ2luX2V2dF9iYWNrdXAnOworJHByaW1hcnktPmJhY2t1cCgkYmFja3VwX25h bWUpOworCitteSAkc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Rh bmRieScpOworJHN0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJHByaW1hcnksICRiYWNrdXBfbmFt ZSwgaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRzdGFuZGJ5LT5zdGFydDsKKworIyBTYW5pdHkgY2hl Y2s6IGEgZnJlc2ggc3RhbmRieSB3aXRoIGRhdGhhc2xvZ2luZXZ0ID0gZmFsc2UgYWNjZXB0cwor IyBjb25uZWN0aW9ucyB3aXRob3V0IGV4ZXJjaXNpbmcgdGhlIGNsZWFudXAgYnJhbmNoLgorJHN0 YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIDEnKTsKKworIyBDcmVhdGUgYW5k IGRyb3AgYSBsb2dpbiBldmVudCB0cmlnZ2VyIG9uIHRoZSBwcmltYXJ5IGluIGEgc2luZ2xlCisj IHNlc3Npb24uICBDUkVBVEUgRVZFTlQgVFJJR0dFUiBzZXRzIHBnX2RhdGFiYXNlLmRhdGhhc2xv Z2luZXZ0ID0KKyMgdHJ1ZTsgbWFyayBpdCBFTkFCTEUgQUxXQVlTIHNvIHRoZSBzY2VuYXJpbyBt YXRjaGVzIHRoZSBvcmlnaW5hbAorIyBidWcgcmVwb3J0LiAgQWZ0ZXIgRFJPUCB0aGUgZmxhZyBy ZW1haW5zIHNldCBvbiBkaXNrIHVudGlsIGEKKyMgc3Vic2VxdWVudCBsb2dpbiBvbiB0aGUgcHJp bWFyeSBjbGVhcnMgaXQgLS0gc28gd2UgbXVzdCBub3Qgb3BlbgorIyBhbm90aGVyIGNvbm5lY3Rp b24gdG8gdGhlIHByaW1hcnkgdGhhdCB3b3VsZCBjbGVhciBpdCBiZWZvcmUgdGhlCisjIHN0YW5k YnkgcmVwbGF5cyB0aGUgRFJPUCBFVkVOVCBUUklHR0VSLgorbXkgJGRyb3BfbG9naW5fdHJpZ2dl cl9sc24gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CitDUkVBVEUgRlVO Q1RJT04gaW5pdF9zZXNzaW9uKCkgUkVUVVJOUyBldmVudF90cmlnZ2VyCitMQU5HVUFHRSBwbHBn c3FsIEFTICQkIEJFR0lOIFJBSVNFIE5PVElDRSAnaW5pdF9zZXNzaW9uJzsgRU5EICQkOworQ1JF QVRFIEVWRU5UIFRSSUdHRVIgaW5pdF9zZXNzaW9uIE9OIGxvZ2luCisgICAgRVhFQ1VURSBGVU5D VElPTiBpbml0X3Nlc3Npb24oKTsKK0FMVEVSIEVWRU5UIFRSSUdHRVIgaW5pdF9zZXNzaW9uIEVO QUJMRSBBTFdBWVM7CitEUk9QIEVWRU5UIFRSSUdHRVIgaW5pdF9zZXNzaW9uOworRFJPUCBGVU5D VElPTiBpbml0X3Nlc3Npb24oKTsKK1NFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTsKK30pOwor CisjIFdhaXQgZm9yIHRoZSBzdGFuZGJ5IHRvIHJlcGxheSB0aGUgQ1JFQVRFL0RST1AgY2F0YWxv ZyBzdGF0ZS4gIEF0CisjIHRoaXMgcG9pbnQgdGhlIHN0YW5kYnkncyBwZ19kYXRhYmFzZS5kYXRo YXNsb2dpbmV2dCBpcyBzdGlsbCB0cnVlLgorJHByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJHN0 YW5kYnksICdyZXBsYXknLCAkZHJvcF9sb2dpbl90cmlnZ2VyX2xzbik7CisKKyMgQSBuZXcgY29u bmVjdGlvbiB0byB0aGUgc3RhbmRieSBleGVyY2lzZXMgRXZlbnRUcmlnZ2VyT25Mb2dpbigpJ3MK KyMgY2xlYW51cCBicmFuY2guICBXaXRoIHRoZSBSZWNvdmVyeUluUHJvZ3Jlc3MoKSBndWFyZCwg dGhhdCBicmFuY2ggaXMKKyMgc2tpcHBlZCBvbiB0aGUgc3RhbmRieSBhbmQgdGhlIGNvbm5lY3Rp b24gc3VjY2VlZHMuICBXaXRob3V0IGl0IHRoZQorIyBzZXNzaW9uIGFib3J0cyB3aXRoIGEgRkFU QUwgYWJvdXQgQWNjZXNzRXhjbHVzaXZlTG9jay4gIFByb2JpbmcgdGhlCisjIGZsYWcgaXRzZWxm IHZpYSBzYWZlX3BzcWwgaXMgd2hhdCB0cmlnZ2VycyB0aGUgY2xlYW51cCBwYXRoLgoraXMoICRz dGFuZGJ5LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgZGF0aGFzbG9naW5l dnQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Bvc3RncmVzJyIpLAorCSd0JywK Kwknc3RhbmRieSBhY2NlcHRzIGNvbm5lY3Rpb24gYW5kIHJlcG9ydHMgZGFuZ2xpbmcgZGF0aGFz bG9naW5ldnQnKTsKKworIyBSZXBlYXQgd2l0aCBhIG5vbi1kaWUgcHNxbCB0byBtYWtlIHN1cmUg bm8gRkFUQUwgaXMgZW1pdHRlZC4KK215ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgMScpOworaXMoJHJldCwgMCwgJ3N0YW5kYnkg YWNjZXB0cyBzZWNvbmQgY29ubmVjdGlvbiB3aXRoIGRhbmdsaW5nIGRhdGhhc2xvZ2luZXZ0Jyk7 Cit1bmxpa2UoCisJJHN0ZGVyciwKKwlxci9jYW5ub3QgYWNxdWlyZSBsb2NrIG1vZGUgQWNjZXNz RXhjbHVzaXZlTG9jay8sCisJJ25vIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgRkFUQUwgb24gc3RhbmRi eSBsb2dpbicpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --000000000000d1eb8b06524f718a--