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 1t0RtU-00BUxL-Lc for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Oct 2024 20:42:21 +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 1t0RtS-00HCjL-3s for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Oct 2024 20:42:18 +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.94.2) (envelope-from ) id 1t0RtR-00HCjD-K4 for pgsql-hackers@lists.postgresql.org; Mon, 14 Oct 2024 20:42:18 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t0RtJ-0014AD-Ou for pgsql-hackers@postgresql.org; Mon, 14 Oct 2024 20:42:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1728938530; bh=/MMVcuVZR+NhY49K8ZGc+wkfkCil6+Up5IUFI+iy6fA=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=7OIpUhPlPOwdX+yN/8JDw+mvGtfQ5uzJtoGPTXvcnorXBQIgZ2dXPbM9a8WDUihGt VKlTQZk/KCNnKMVqzLrKUduVnIdwVZFuSozzwgf2njfOQ6ElvruhnN5xX1UxfaNDh1 qKo2Sb1o0bxBpQWhCrgAd6uA+dgXrKK834Wm3OO2GcbOp2zNiaEQmu+n4RGNLxcz/t kAESsEG/L3ShkYNPXij3kCpTu2RHpl5/ZqZZigeb18H883X318E/5svh0toSvipR2I 85TP92lf6THAtuVjbTCSJiK7bkhzG6psvynyS22Mj6grX+M0HNFZ6GjpQwnFmrFuh/ ytyN7ehOlDcJQ== Received: from [172.30.33.154] (unknown [172.30.33.154]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id E9323601FE; Mon, 14 Oct 2024 23:42:09 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------GfSG3jOaZ1TVmKMXiKDKn2N5" Message-ID: Date: Mon, 14 Oct 2024 23:42:09 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Logging parallel worker draught From: Alena Rybakina To: =?UTF-8?Q?Benoit_Lobr=C3=A9au?= , pgsql-hackers Cc: "Imseih (AWS), Sami" , Alvaro Herrera , Robert Haas , Amit Kapila , Melanie Plageman , "Andrey M. Borodin" References: <10D5C31A-A303-4440-BCA2-921440A9E1CC@amazon.com> <202310111011.lyo66rk7k7pu@alvherre.pgsql> <9E9E69BD-BABB-49BB-8B69-61939179F20D@amazon.com> <11e34b80-b0a6-e2e4-1606-1f5077379a34@dalibo.com> <0d08b978-10cb-4512-bcef-ca1f192049ab@enterprisedb.com> <0b7ef57e-bf30-440b-9478-d8f587f2637c@dalibo.com> <2cccd814-d7b3-4c9a-a66a-6df4c45fd95e@enterprisedb.com> <17f9faf1-4edb-46d0-80ed-91bba16423a3@dalibo.com> <7ECC97AE-2670-4792-BC6F-FD91B23F8E8C@yandex-team.ru> <39ac8951-6b99-469b-b9f1-2791efe43fbd@dalibo.com> <8123423a-f041-4f4c-a771-bfd96ab235b0@dalibo.com> <2a8e9e1c-0f05-4ebd-9a4d-d023d26c0def@dalibo.com> <04e6d7e2-f67a-438c-bc11-9354ab64ef1f@dalibo.com> Content-Language: en-US In-Reply-To: X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/10/14 19:21:00 #26753819 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------GfSG3jOaZ1TVmKMXiKDKn2N5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sorry, I was in a hurry and didn't check my patch properly. On 14.10.2024 23:20, Alena Rybakina wrote: > On 28.08.2024 15:58, Benoit Lobréau wrote: >> Hi, >> >> Here is a new version of the patch. Sorry for the long delay, I was >> hit by a motivation drought and was quite busy otherwise. >> >> The guc is now called `log_parallel_workers` and has three possible >> values: >> >> * "none": disables logging >> * "all": logs parallel worker info for all parallel queries or utilities >> * "failure": logs only when the number of parallel workers planned >> couldn't be reached. >> >> For this, I added several members to the EState struct. >> >> Each gather node / gather merge node updates the values and the >> offending queries are displayed during standard_ExecutorEnd. >> >> For CREATE INDEX / REINDEX on btree and brin, I check the parallel >> context struct (pcxt) during _bt_end_parallel() or >> _brin_end_parallel() and display a log message when needed. >> >> For vacuum, I do the same in parallel_vacuum_end(). >> >> I added some information to the error message for parallel queries as >> an experiment. I find it useful, but it can be removed, if you re not >> convinced. >> >> 2024-08-27 15:59:11.089 CEST [54585] LOG:  1 parallel nodes planned >> (1 obtained all their workers, 0 obtained none), 2 workers planned (2 >> workers launched) >> 2024-08-27 15:59:11.089 CEST [54585] STATEMENT:  EXPLAIN (ANALYZE) >>         SELECT i, avg(j) FROM test_pql GROUP BY i; >> >> 2024-08-27 15:59:14.006 CEST [54585] LOG:  2 parallel nodes planned >> (0 obtained all their workers, 1 obtained none), 4 workers planned (1 >> workers launched) >> 2024-08-27 15:59:14.006 CEST [54585] STATEMENT:  EXPLAIN (ANALYZE) >>         SELECT i, avg(j) FROM test_pql GROUP BY i >>         UNION >>         SELECT i, avg(j) FROM test_pql GROUP BY i; >> >> For CREATE INDEX / REDINDEX / VACUUMS: >> >> 2024-08-27 15:58:59.769 CEST [54521] LOG:  1 workers planned (0 >> workers launched) >> 2024-08-27 15:58:59.769 CEST [54521] STATEMENT:  REINDEX TABLE test_pql; >> >> Do you think this is better? >> >> I am not sure if a struct is needed to store the es_nworkers* and if >> the modification I did to parallel.h is ok. >> >> Thanks to: Jehan-Guillaume de Rorthais, Guillaume Lelarge and Franck >> Boudehen for the help and motivation boost. > > Hi! > > I think it's a good idea to log this. I suggest some changes that > might improve your patch. > > > 2. I think you can transfer nworkers_to_launch and nworkers_launched > vacuum parameters in the ParallelContext struct. Sorry, I didn’t notice right away that the second point is impossible to fulfill here. Attached is the correct version of the patch. -- Regards, Alena Rybakina Postgres Professional --------------GfSG3jOaZ1TVmKMXiKDKn2N5 Content-Type: text/plain; charset=UTF-8; name="parallel_log_workers.no-cfbot" Content-Disposition: attachment; filename="parallel_log_workers.no-cfbot" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAppbmRleCA1YzA0YTI3ZWI2Ni4uMWUyZmFkZmZhZjEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKQEAgLTc3MDQsOCArNzcwNCw4IEBAIGxvZ19saW5lX3ByZWZpeCA9ICclbSBbJXBdICVx JXVAJWQvJWEgJwogICAgICAgPC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxw YXJhPgotICAgICAgICBDb250cm9scyB3aGV0aGVyIGEgbG9nIG1lc3NhZ2UgaXMgcHJvZHVj ZWQgdG8gZGlzcGxheSBpbmZvcm1hdGlvbiBvbiB0aGUgbnVtYmVyIG9mCi0gICAgICAgIHdv cmtlcnMgc3Bhd25lZCB3aGVuIGEgcGFyYWxsZWwgcXVlcnkgb3IgdXRpbGl0eSBpcyBleGVj dXRlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMKKyAgICAgICAgQ29udHJvbHMgd2hldGhlciBh IGxvZyBtZXNzYWdlIGFib3V0IHRoZSBudW1iZXIgb2Ygd29ya2VycyBwcm9kdWNlZCBkdXJp bmcgYW4KKyAgICAgICAgZXhlY3V0aW9uIG9mIHRoZSBwYXJhbGxlbCBxdWVyeSBvciB1dGls aXR5IHN0YXRlbWVudC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMKICAgICAgICAgPGxpdGVyYWw+ bm9uZTwvbGl0ZXJhbD4gd2hpY2ggZGlzYWJsZXMgbG9nZ2luZy4gPGxpdGVyYWw+YWxsPC9s aXRlcmFsPiBkaXNwbGF5cwogICAgICAgICBpbmZvcm1hdGlvbiBmb3IgYWxsIHBhcmFsbGVs IHF1ZXJpZXMsIHdoZXJlYXMgPGxpdGVyYWw+ZmFpbHVyZXM8L2xpdGVyYWw+IGRpc3BsYXlz CiAgICAgICAgIGluZm9ybWF0aW9uIG9ubHkgd2hlbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMg bGF1bmNoZWQgaXMgbG93ZXIgdGhhbiB0aGUgbnVtYmVyIG9mCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKaW5kZXggZmRmYmJjN2RjNDIuLjQwMmJlMjBlMjdjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jCkBAIC0yNTQ0LDEwICsyNTQ0LDkgQEAgX2JyaW5fZW5kX3BhcmFsbGVsKEJy aW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAkvKiBTaHV0 ZG93biB3b3JrZXIgcHJvY2Vzc2VzICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmlu aXNoKGJyaW5sZWFkZXItPnBjeHQpOwogCi0JaWYgKChsb2dfcGFyYWxsZWxfd29ya2VycyA9 PSBMT0dfUEFSQUxMRUxfV09SS0VSU19BTEwgJiYKLQkJIGJyaW5sZWFkZXItPnBjeHQtPm53 b3JrZXJzX3RvX2xhdW5jaCA+IDApIHx8Ci0JCShsb2dfcGFyYWxsZWxfd29ya2VycyA9PSBM T0dfUEFSQUxMRUxfV09SS0VSU19GQUlMVVJFICYmCi0JCSBicmlubGVhZGVyLT5wY3h0LT5u d29ya2Vyc190b19sYXVuY2ggPiBicmlubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hl ZCkpCisJaWYgKExvZ2dpbmdQYXJhbGxlbFdvcmtlcnMobG9nX3BhcmFsbGVsX3dvcmtlcnMs CisJCQkJCQkJICAgYnJpbmxlYWRlci0+cGN4dC0+bndvcmtlcnNfdG9fbGF1bmNoLAorCQkJ CQkJCSAgIGJyaW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkKSkKIAkJZWxvZyhM T0csICIlaSB3b3JrZXJzIHBsYW5uZWQgKCVpIHdvcmtlcnMgbGF1bmNoZWQpIiwKIAkJCWJy aW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX3RvX2xhdW5jaCwKIAkJCWJyaW5sZWFkZXItPnBj eHQtPm53b3JrZXJzX2xhdW5jaGVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKaW5kZXggZTMxYmQ4ZTIyM2UuLjFjYTAyN2QyNzI3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtMTYxNSwxMCArMTYxNSw5IEBAIF9idF9lbmRfcGFyYWxs ZWwoQlRMZWFkZXIgKmJ0bGVhZGVyKQogCS8qIFNodXRkb3duIHdvcmtlciBwcm9jZXNzZXMg Ki8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9GaW5pc2goYnRsZWFkZXItPnBjeHQpOwog Ci0JaWYgKChsb2dfcGFyYWxsZWxfd29ya2VycyA9PSBMT0dfUEFSQUxMRUxfV09SS0VSU19B TEwgJiYKLQkJIGJ0bGVhZGVyLT5wY3h0LT5ud29ya2Vyc190b19sYXVuY2ggPiAwKSB8fAot CQkobG9nX3BhcmFsbGVsX3dvcmtlcnMgPT0gTE9HX1BBUkFMTEVMX1dPUktFUlNfRkFJTFVS RSAmJgotCQkgYnRsZWFkZXItPnBjeHQtPm53b3JrZXJzX3RvX2xhdW5jaCA+IGJ0bGVhZGVy LT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCkpCisJaWYgKExvZ2dpbmdQYXJhbGxlbFdvcmtl cnMobG9nX3BhcmFsbGVsX3dvcmtlcnMsCisJCQkJCQkJICAgYnRsZWFkZXItPnBjeHQtPm53 b3JrZXJzX3RvX2xhdW5jaCwKKwkJCQkJCQkgICBidGxlYWRlci0+cGN4dC0+bndvcmtlcnNf bGF1bmNoZWQpKQogCQllbG9nKExPRywgIiVpIHdvcmtlcnMgcGxhbm5lZCAoJWkgd29ya2Vy cyBsYXVuY2hlZCkiLAogCQkJYnRsZWFkZXItPnBjeHQtPm53b3JrZXJzX3RvX2xhdW5jaCwK IAkJCWJ0bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCBkNGU4NGFhYmFjNy4uOGEwZDUwMjhiMWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtMTYyNywzICsx NjI3LDE4IEBAIExvb2t1cFBhcmFsbGVsV29ya2VyRnVuY3Rpb24oY29uc3QgY2hhciAqbGli cmFyeW5hbWUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQogCXJldHVybiAocGFyYWxsZWxfd29y a2VyX21haW5fdHlwZSkKIAkJbG9hZF9leHRlcm5hbF9mdW5jdGlvbihsaWJyYXJ5bmFtZSwg ZnVuY25hbWUsIHRydWUsIE5VTEwpOwogfQorCisvKgorICogVGhlIGZ1bmN0aW9uIGRldGVy bWluZXMgb2YgbG9nZ2luZyBpbmZvcm1hdGlvbgorICogYWJvdXQgd29ya2Vycy4KKyovCiti b29sCitMb2dnaW5nUGFyYWxsZWxXb3JrZXJzKGludCBsb2dfcGFyYWxsZWxfd29ya2VycywK KwkJCQkJICAgaW50IHBhcmFsbGVsX3dvcmtlcnNfdG9fbGF1bmNoLAorCQkJCQkgICBpbnQg cGFyYWxsZWxfd29ya2Vyc19sYXVuY2hlZCkKK3sKKwlyZXR1cm4gKChsb2dfcGFyYWxsZWxf d29ya2VycyA9PSBMT0dfUEFSQUxMRUxfV09SS0VSU19BTEwgJiYKKwkJIAlwYXJhbGxlbF93 b3JrZXJzX3RvX2xhdW5jaCA+IDApIHx8CisJCSAgIChsb2dfcGFyYWxsZWxfd29ya2VycyA9 PSBMT0dfUEFSQUxMRUxfV09SS0VSU19GQUlMVVJFICYmCisJCSAJcGFyYWxsZWxfd29ya2Vy c190b19sYXVuY2ggIT0gcGFyYWxsZWxfd29ya2Vyc19sYXVuY2hlZCkpOworfQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jCmluZGV4IGUyMDdhNmI3ZDkxLi44NGIwYTkwOTIxYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC00NDMsMTAgKzQ0Myw5IEBAIHBhcmFsbGVsX3Zh Y3V1bV9lbmQoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBJbmRleEJ1bGtEZWxldGVSZXN1 bHQgKippc3RhdHMpCiB7CiAJQXNzZXJ0KCFJc1BhcmFsbGVsV29ya2VyKCkpOwogCi0JaWYg KChsb2dfcGFyYWxsZWxfd29ya2VycyA9PSBMT0dfUEFSQUxMRUxfV09SS0VSU19BTEwgJiYK LQkJIHB2cy0+bndvcmtlcnNfdG9fbGF1bmNoID4gMCkgfHwKLQkJKGxvZ19wYXJhbGxlbF93 b3JrZXJzID09IExPR19QQVJBTExFTF9XT1JLRVJTX0ZBSUxVUkUgJiYKLQkJIHB2cy0+bndv cmtlcnNfdG9fbGF1bmNoID4gcHZzLT5ud29ya2Vyc19sYXVuY2hlZCkpCisJaWYgKExvZ2dp bmdQYXJhbGxlbFdvcmtlcnMobG9nX3BhcmFsbGVsX3dvcmtlcnMsCisJCQkJCQkJICAgcHZz LT5ud29ya2Vyc190b19sYXVuY2gsCisJCQkJCQkJICAgcHZzLT5ud29ya2Vyc19sYXVuY2hl ZCkpCiAJCWVsb2coTE9HLCAiJWkgd29ya2VycyBwbGFubmVkIHRvIGJlIGxhdW5jaGVkIGZv ciBpbmRleCBjbGVhbnVwIGFuZCBidWxrZGVsZXRlICglaSB3b3JrZXJzIGxhdW5jaGVkKSIs CiAJCQlwdnMtPm53b3JrZXJzX3RvX2xhdW5jaCwKIAkJCXB2cy0+bndvcmtlcnNfbGF1bmNo ZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNjY2M2ZlYTdiMTIuLmI4NWQ2 NzliN2ZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQ4MywxMCArNDgzLDkg QEAgc3RhbmRhcmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAKIAlBc3Nl cnQoZXN0YXRlICE9IE5VTEwpOwogCi0JaWYgKChsb2dfcGFyYWxsZWxfd29ya2VycyA9PSBM T0dfUEFSQUxMRUxfV09SS0VSU19BTEwgJiYKLQkJIGVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29y a2Vyc190b19sYXVuY2ggPiAwKSB8fAotCQkobG9nX3BhcmFsbGVsX3dvcmtlcnMgPT0gTE9H X1BBUkFMTEVMX1dPUktFUlNfRkFJTFVSRSAmJgotCQkgZXN0YXRlLT5lc19wYXJhbGxlbF93 b3JrZXJzX3RvX2xhdW5jaCAhPSBlc3RhdGUtPmVzX3BhcmFsbGVsX3dvcmtlcnNfbGF1bmNo ZWQpKQorCWlmIChMb2dnaW5nUGFyYWxsZWxXb3JrZXJzKGxvZ19wYXJhbGxlbF93b3JrZXJz LAorCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29ya2Vyc190b19sYXVuY2gsCisJ CQkJCQkJICAgZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX2xhdW5jaGVkKSkKIAkJZWxv ZyhMT0csICIlaSBwYXJhbGxlbCBub2RlcyBwbGFubmVkICglaSBvYnRhaW5lZCBhbGwgdGhl aXIgd29ya2VycywgJWkgb2J0YWluZWQgbm9uZSksICIKIAkJCQkgICIlaSB3b3JrZXJzIHBs YW5uZWQgdG8gYmUgbGF1bmNoZWQgKCVpIHdvcmtlcnMgbGF1bmNoZWQpIiwKIAkJCWVzdGF0 ZS0+ZXNfcGFyYWxsZWxfbm9kZXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv cGFyYWxsZWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCmluZGV4IGVkMzNl NTQ1ZDc2Li4wMGFhZDFlNzQyYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKQEAgLTkzLDQg KzkzLDggQEAgZXh0ZXJuIHZvaWQgUGFyYWxsZWxXb3JrZXJSZXBvcnRMYXN0UmVjRW5kKFhM b2dSZWNQdHIgbGFzdF94bG9nX2VuZCk7CiAKIGV4dGVybiB2b2lkIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZyk7CiAKK2V4dGVybiBib29sIExvZ2dpbmdQYXJhbGxlbFdv cmtlcnMoaW50IGxvZ19wYXJhbGxlbF93b3JrZXJzLAorCQkJCQkJCQkgICBpbnQgcGFyYWxs ZWxfd29ya2Vyc190b19sYXVuY2gsCisJCQkJCQkJCSAgIGludCBwYXJhbGxlbF93b3JrZXJz X2xhdW5jaGVkKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUkFMTEVMX0ggKi8K --------------GfSG3jOaZ1TVmKMXiKDKn2N5--