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.94.2) (envelope-from ) id 1tVe2F-00AGBV-I5 for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jan 2025 21:56:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tVe2E-007f2N-Ny for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jan 2025 21:56:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tVe2D-007f2E-FX for pgsql-hackers@lists.postgresql.org; Wed, 08 Jan 2025 21:56:18 +0000 Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tVe29-000alB-2m for pgsql-hackers@lists.postgresql.org; Wed, 08 Jan 2025 21:56:16 +0000 Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfhigh.stl.internal (Postfix) with ESMTP id 2C043254007B; Wed, 8 Jan 2025 16:56:13 -0500 (EST) Received: from phl-imap-09 ([10.202.2.99]) by phl-compute-01.internal (MEProxy); Wed, 08 Jan 2025 16:56:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1736373373; x=1736459773; bh=YZipcBRgJm 7/xZ+C5CzfvntleftlxsfqbDnbh8bCfIk=; b=dxTgo85WMXzxgM3VonQ3/4hjEF Ek7yyeF8ehpPgRb6OQy0DNm0w/GkRhwItTMlG8MeCzqJ1YahCmA2cUbkdVDRayrp iBp97CyIZYwUayfd552lGYTw/dzPILy0dRptg8J6nvL45e7WJl2IiTT+Tx97YmdS BE0xYDK9qhAlODefSYoM5FMJrawFAxr3YAm1Hjcfu+A8dlKGopQg4QhoaWJWbbOH SOqx++nrZ1Kob/DzKWnbCtqCmh/NU7XAAXM7mzyv9/6A/ui/+TbiPC52VT2KIxAv mvdBkqEI6OqOjhNMjkxPqt/S/AyGPxEgCxyhDULDJbjLZ/1IyrupNrJWLQ+A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1736373373; x=1736459773; bh=YZipcBRgJm7/xZ+C5CzfvntleftlxsfqbDn bh8bCfIk=; b=RGQVtwvYfhUVIhlsj/L1uxkqfQBak9d4l+ctimQ/wAER+s8UrT2 tyHTa35BOQ+mPf3R9Kb5ktT0mbM6OzBwdgPkrIVW7ynL3laxLv5PJ6IgGdLP9Ztc d6hxXIXOd4mXIJ3BJMuD8rDSVjazTN3yhllCwsFAHUp2ELsDnZdUi3AgbSwXtGh1 dj1Jg5ypT5eZ77VqIWEDKSGiMv1ic6BlUDGR7/H0B58vdQ7dNf+SmARH2m7YUbvJ FKP9KgCvVKpojOgxZLDXcPLk/ybULongi4CR6FBLkC6KHJAB+LmeZv8qKNLj5J8p a9WDhfDXQvQUUlWqK0P9BFgA0KlG1d2BASQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrudeggedgudehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefkjghfufgtsehmtderreertdej necuhfhrohhmpedfgfhulhgvrhcuvfgrvhgvihhrrgdfuceovghulhgvrhesvghulhgvrh htohdrtghomheqnecuggftrfgrthhtvghrnhepkeeftdejuddvkeeuveehheeivddutddv gfffkedtgedvudduveevveeggfelieehnecuffhomhgrihhnpegvnhhtvghrphhrihhsvg gusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr ohhmpegvuhhlvghrsegvuhhlvghrthhordgtohhmpdhnsggprhgtphhtthhopedvpdhmoh guvgepshhmthhpohhuthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhs thhsrdhpohhsthhgrhgvshhqlhdrohhrghdprhgtphhtthhopeguohhruhhksehmihigrh grnhhkrdgtohhm X-ME-Proxy: Feedback-ID: i0c21471d:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id AF916780068; Wed, 8 Jan 2025 16:56:12 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 Date: Wed, 08 Jan 2025 18:55:45 -0300 From: "Euler Taveira" To: "Doruk Yilmaz" Cc: pgsql-hackers@lists.postgresql.org Message-Id: In-Reply-To: References: Subject: Re: [Patch] add new parameter to pg_replication_origin_session_setup Content-Type: multipart/mixed; boundary=8451a1e7b9cd437d8af2cbfe3f15c2fd List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --8451a1e7b9cd437d8af2cbfe3f15c2fd Content-Type: multipart/alternative; boundary=b344718376654ccca6ecbd0cc76cc5c6 --b344718376654ccca6ecbd0cc76cc5c6 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Thu, Aug 15, 2024, at 5:53 PM, Doruk Yilmaz wrote: > Hello again, >=20 > On Tue, Aug 13, 2024 at 12:48=E2=80=AFAM Euler Taveira wrote: > > I'm curious about your use case. Is it just because the internal fun= ction has a > > different signature or your tool is capable of apply logical replica= tion changes > > in parallel using the SQL API? >=20 > The latter is correct, it applies logical replication changes in paral= lel. > Since multiple connections may commit, we need all of them to be able > to advance the replication origin. >=20 > > * no documentation changes. Since the function you are changing has = a new > > signature, this change should be reflected in the documentation. > > * no need for a new internal function. The second parameter (PID) ca= n be > > optional and defaults to 0 in this case. See how we changed the > > pg_create_logical_replication_slot along the years add some IN param= eters like > > twophase and failover in the recent versions. >=20 > I updated/rewrote the patch to reflect these suggestions. > It now has the same DEFAULT 0 style used in pg_create_logical_replicat= ion_slot. > I also updated the documentation. [after a long hiatus...] I tested your patch again and it does what is advertised. I changed your= patch a bit. The main change was the documentation. You didn't explain what th= is new parameter is for. I tried to explain but don't want to add lots of detai= ls. (There is a section that explain how parallel apply processes work behin= d the scenes.) I also renamed it from acquired_by to pid to be more descriptiv= e. I fixed some white space issues too. I noticed that there are no tests. Th= is doesn't appear to be a shortcoming from this patch but we need to cover = some of these replication functions with an additional test file in another patc= h. Finally, I wrote a commit message and it is RfC. session 1: postgres=3D# select * from pg_replication_origin; roident | roname=20 ---------+-------- (0 rows) postgres=3D# SELECT pg_backend_pid(); pg_backend_pid=20 ---------------- 260732 (1 row) postgres=3D# SELECT pg_replication_origin_create('test'); pg_replication_origin_create=20 ------------------------------ 1 (1 row) postgres=3D# SELECT pg_replication_origin_session_setup('test', 0); pg_replication_origin_session_setup=20 ------------------------------------- =20 (1 row) postgres=3D# select * from pg_replication_origin; roident | roname=20 ---------+-------- 1 | test (1 row) session 2: postgres=3D# SELECT pg_replication_origin_session_setup('test', 260732); pg_replication_origin_session_setup=20 ------------------------------------- =20 (1 row) session 3: postgres=3D# SELECT pg_replication_origin_session_setup('test', 12345); ERROR: could not find replication state slot for replication origin wit= h OID 1 which was acquired by 12345 -- Euler Taveira EDB https://www.enterprisedb.com/ --b344718376654ccca6ecbd0cc76cc5c6 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
On Thu, Aug 15,= 2024, at 5:53 PM, Doruk Yilmaz wrote:
Hello again,

On= Tue, Aug 13, 2024 at 12:48=E2=80=AFAM Euler Taveira <euler@eulerto.com> wrote:
>= ; I'm curious about your use case. Is it just because the internal funct= ion has a
> different signature or your tool is capable= of apply logical replication changes
> in parallel usi= ng the SQL API?

The latter is correct, it a= pplies logical replication changes in parallel.
Since mult= iple connections may commit, we need all of them to be able
to advance the replication origin.

> *= no documentation changes. Since the function you are changing has a new=
> signature, this change should be reflected in the do= cumentation.
> * no need for a new internal function. T= he second parameter (PID) can be
> optional and default= s to 0 in this case. See how we changed the
> pg_create= _logical_replication_slot along the years add some IN parameters like
> twophase and failover in the recent versions.
=

I updated/rewrote the patch to reflect these suggest= ions.
It now has the same DEFAULT 0 style used in pg_creat= e_logical_replication_slot.
I also updated the documentati= on.

[after a long hiatus...]

I tested your patch again and it does what i= s advertised. I changed your patch
a bit. The main change = was the documentation. You didn't explain what this new
parameter is for. I tried to explain= but don't want to add lots of details.
(There is a section that explain how parallel apply = processes work behind the
scenes.) I also renamed it from acquired_by to pid to be more desc= riptive. I
fixed som= e white space issues too. I noticed that there are no tests. This
doesn't appear to be a sho= rtcoming from this patch but we need to cover some of
these replication functions with an ad= ditional test file in another patch.
Finally, I wrote a commit message and it is RfC.

session 1:<= br>

postgres=3D# select * from pg_replication_o= rigin;
roident | roname 
---------+--------
(0 rows)

postgre= s=3D# SELECT pg_backend_pid();
=
pg_backend_pid 
----------------
         260732
(1 row)

postgres=3D# SELECT pg_replication_origin_create('test');<= br style=3D"max-width:100%;height:auto;">
pg_replication_origi= n_create 
-----= -------------------------
           =             =      1
(1 row)

postgres=3D# SELECT pg_r= eplication_origin_session_setup('test', 0);
pg_replication_origin_session_setup 
--------------------------= -----------
 
(1 row)

postgres=3D# select * from pg_replication_origin;
roident | roname =
---------+--------<= br style=3D"max-width:100%;height:auto;">
   &n= bsp;   1 | test
(1 row)

session 2:
=
postgres=3D# SELECT pg_replication_origin_session_setup('= test', 260732);
pg_replication_origin_session_setup <= br style=3D"max-width:100%;height:auto;">
--------------------= -----------------
&n= bsp;
(1 row)

session 3:

postgres=3D# SELECT pg_replication_origin_se= ssion_setup('test', 12345);
ERROR:  could not find re= plication state slot for replication origin with OID 1 which was acquire= d by 12345


--
Euler T= aveira

--b344718376654ccca6ecbd0cc76cc5c6-- --8451a1e7b9cd437d8af2cbfe3f15c2fd Content-Disposition: attachment; filename*0="v3-0001-pg_replication_origin_session_setup-pid-parameter.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v3-0001-pg=5Freplication=5Forigin=5Fsession=5Fsetup-pid-parame?= =?UTF-8?Q?ter.patch?=" Content-Transfer-Encoding: base64 RnJvbSA3NGE3NGZkMDJiY2U3ODYwOTNjMTlhMjNiZWY5NDQ0ZDBiOGVmNDFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEb3J1ayA8ZG9ydWtAbWl4cmFuay5jb20+CkRhdGU6 IFRodSwgMTUgQXVnIDIwMjQgMjM6MzQ6MjYgKzAzMDAKU3ViamVjdDogW1BBVENIIHYzXSBw Z19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cDogcGlkIHBhcmFtZXRlcgoKU2lu Y2UgdGhlIGludHJvZHVjdGlvbiBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChjb21taXQg MjE2YTc4NDgyOWMpLAp0aGUgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKCkgd2FzIGV4dGVu ZGVkIHRvIGFjY2VwdCBhbiBleHRyYQpwYXJhbWV0ZXI6IHBpZC4gVGhpcyBwcm9jZXNzIElE IGlzIHVzZWQgdG8gaW5mb3JtIHRoYXQgbXVsdGlwbGUKcHJvY2Vzc2VzIGFyZSBzaGFyaW5n IHRoZSBzYW1lIHJlcGxpY2F0aW9uIG9yaWdpbiB0byBhcHBseSBjaGFuZ2VzIGluCnBhcmFs bGVsLiBUaGUgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwIGZ1bmN0aW9uIGhhcyBhIFNRTCB1 c2VyCmludGVyZmFjZTogcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAuIFRo aXMgY29tbWl0IGFkZHMgYW4Kb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgcGFzc2VzIHRoZSBw cm9jZXNzIElEIHRvIHRoZSBpbnRlcm5hbCBmdW5jdGlvbgpyZXBsb3JpZ2luX3Nlc3Npb25f c2V0dXAuIEl0IGFsbG93cyBtdWx0aXBsZSBwcm9jZXNzZXMgdG8gdXNlIHRoZSBzYW1lCnJl cGxpY2F0aW9uIG9yaWdpbiBpZiB5b3UgYXJlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBmdW5j dGlvbnMuCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICB8 IDggKysrKysrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwg fCA5ICsrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YyB8IDQgKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICB8 IDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21s L2Z1bmMuc2dtbAppbmRleCA0NzM3MGU1ODFhLi5lNTBlNjg5ZmI2IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAg LTI5NDc1LDcgKzI5NDc1LDcgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6OnBnX2xzbiAr IHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNldAogICAgICAg ICA8aW5kZXh0ZXJtPgogICAgICAgICAgPHByaW1hcnk+cGdfcmVwbGljYXRpb25fb3JpZ2lu X3Nlc3Npb25fc2V0dXA8L3ByaW1hcnk+CiAgICAgICAgIDwvaW5kZXh0ZXJtPgotICAgICAg ICA8ZnVuY3Rpb24+cGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXA8L2Z1bmN0 aW9uPiAoIDxwYXJhbWV0ZXI+bm9kZV9uYW1lPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5 cGU+ICkKKyAgICAgICAgPGZ1bmN0aW9uPnBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9u X3NldHVwPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPm5vZGVfbmFtZTwvcGFyYW1ldGVyPiA8 dHlwZT50ZXh0PC90eXBlPiA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPnBpZDwvcGFyYW1ldGVy PiA8dHlwZT5pbnRlZ2VyPC90eXBlPiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8bGl0 ZXJhbD4wPC9saXRlcmFsPjwvb3B0aW9uYWw+ICkKICAgICAgICAgPHJldHVybnZhbHVlPnZv aWQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KQEAgLTI5 NDgzLDYgKzI5NDgzLDEyIEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBw ZC5zZWdtZW50X251bWJlciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgICAg b3JpZ2luLCBhbGxvd2luZyByZXBsYXkgcHJvZ3Jlc3MgdG8gYmUgdHJhY2tlZC4KICAgICAg ICAgQ2FuIG9ubHkgYmUgdXNlZCBpZiBubyBvcmlnaW4gaXMgY3VycmVudGx5IHNlbGVjdGVk LgogICAgICAgICBVc2UgPGZ1bmN0aW9uPnBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9u X3Jlc2V0PC9mdW5jdGlvbj4gdG8gdW5kby4KKyAgICAgICAgSWYgbXVsdGlwbGUgcHJvY2Vz c2VzIGNhbiBzYWZlbHkgdXNlIHRoZSBzYW1lIHJlcGxpY2F0aW9uIG9yaWdpbiAoZm9yCisg ICAgICAgIGV4YW1wbGUsIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3NlcyksIHRoZSBvcHRpb25h bCA8cGFyYW1ldGVyPnBpZDwvcGFyYW1ldGVyPgorICAgICAgICBwYXJhbWV0ZXIgY2FuIGJl IHVzZWQgdG8gc3BlY2lmeSB0aGUgcHJvY2VzcyBJRCBvZiB0aGUgZmlyc3QgcHJvY2Vzcy4K KyAgICAgICAgVGhlIGZpcnN0IHByb2Nlc3MgbXVzdCBwcm92aWRlIDxwYXJhbWV0ZXI+cGlk PC9wYXJhbWV0ZXI+IGVxdWFscyB0bworICAgICAgICA8bGl0ZXJhbD4wPC9saXRlcmFsPiBh bmQgdGhlIG90aGVyIHByb2Nlc3NlcyB0aGF0IHNoYXJlIHRoZSBzYW1lCisgICAgICAgIHJl cGxpY2F0aW9uIG9yaWdpbiBzaG91bGQgcHJvdmlkZSB0aGUgcHJvY2VzcyBJRCBvZiB0aGUg Zmlyc3QgcHJvY2Vzcy4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93Pgog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAppbmRleCA1OTEx NTdiMWQxLi4yNjE1MWUwZjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwKQEAgLTY2OCw2ICs2NjgsMTMgQEAgTEFOR1VBR0UgSU5URVJOQUwKIENB TExFRCBPTiBOVUxMIElOUFVUIFZPTEFUSUxFCiBBUyAncGdfc2V0X2F0dHJpYnV0ZV9zdGF0 cyc7CiAKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OCisgIHBnX3JlcGxpY2F0aW9uX29y aWdpbl9zZXNzaW9uX3NldHVwKG5vZGVfbmFtZSB0ZXh0LCBwaWQgaW50ZWdlciBERUZBVUxU IDApCitSRVRVUk5TIHZvaWQKK0xBTkdVQUdFIElOVEVSTkFMCitTVFJJQ1QgVk9MQVRJTEUK K0FTICdwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cCc7CisKIC0tCiAtLSBU aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgZnVuY3Rpb25zIG1lYW4gdGhhdCBhbnlvbmUg Y2FuIGV4ZWN1dGUgdGhlbS4KIC0tIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBzaG91bGRuJ3Qg YmUgZXhlY3V0YWJsZSBieSBqdXN0IGFueW9uZSwgYnV0IHJhdGhlcgpAQCAtNzY5LDcgKzc3 Niw3IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9zZXNzaW9uX3Byb2dyZXNzKGJvb2xlYW4pIEZST00KIAogUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fcmVzZXQoKSBGUk9NIHB1 YmxpYzsKIAotUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfcmVwbGljYXRpb25fb3Jp Z2luX3Nlc3Npb25fc2V0dXAodGV4dCkgRlJPTSBwdWJsaWM7CitSRVZPS0UgRVhFQ1VURSBP TiBGVU5DVElPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cCh0ZXh0LCBp bnRlZ2VyKSBGUk9NIHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdf cmVwbGljYXRpb25fb3JpZ2luX3hhY3RfcmVzZXQoKSBGUk9NIHB1YmxpYzsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggMWI1ODZjYjFjZi4u OWNiZTFlZWM0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jCkBAIC0xMzU1LDEyICsxMzU1LDE0IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNz aW9uX3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJY2hhcgkgICAqbmFtZTsKIAlSZXBP cmlnaW5JZCBvcmlnaW47CisJaW50CQkJcGlkOwogCiAJcmVwbG9yaWdpbl9jaGVja19wcmVy ZXF1aXNpdGVzKHRydWUsIGZhbHNlKTsKIAogCW5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoKHRl eHQgKikgRGF0dW1HZXRQb2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9yaWdpbiA9 IHJlcGxvcmlnaW5fYnlfbmFtZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKG9yaWdpbiwgMCk7CisJcGlkID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCXJlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIHBpZCk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBi MzdlOGE2Zjg4Li5lYTExOGEwNTYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTEyMDYzLDcgKzEyMDYzLDcgQEAKIHsgb2lkID0+ICc2MDA2JywKICAgZGVzY3IgPT4gJ2Nv bmZpZ3VyZSBzZXNzaW9uIHRvIG1haW50YWluIHJlcGxpY2F0aW9uIHByb2dyZXNzIHRyYWNr aW5nIGZvciB0aGUgcGFzc2VkIGluIG9yaWdpbicsCiAgIHByb25hbWUgPT4gJ3BnX3JlcGxp Y2F0aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAotICBw cm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLCBwcm9hcmd0eXBlcyA9 PiAndGV4dCcsCisgIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcs IHByb2FyZ3R5cGVzID0+ICd0ZXh0IGludDQnLAogICBwcm9zcmMgPT4gJ3BnX3JlcGxpY2F0 aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwJyB9LAogCiB7IG9pZCA9PiAnNjAwNycsIGRlc2Ny ID0+ICd0ZWFyZG93biBjb25maWd1cmVkIHJlcGxpY2F0aW9uIHByb2dyZXNzIHRyYWNraW5n JywKLS0gCjIuMzkuNQoK --8451a1e7b9cd437d8af2cbfe3f15c2fd--