Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q4Ir8-0007on-7k for pgsql-hackers@arkaria.postgresql.org; Wed, 31 May 2023 10:15:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q4Ir7-0006vY-5X for pgsql-hackers@arkaria.postgresql.org; Wed, 31 May 2023 10:15:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q4Ir6-0006vO-Q4 for pgsql-hackers@lists.postgresql.org; Wed, 31 May 2023 10:15:00 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q4Ir2-003Fjt-L3 for pgsql-hackers@lists.postgresql.org; Wed, 31 May 2023 10:15:00 +0000 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-3f6e13940daso58977165e9.0 for ; Wed, 31 May 2023 03:14:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685528095; x=1688120095; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=FxkdQ7WdMJA7CgRktteHAVBSNzmo/EtwpzkTghs4rJY=; b=XjuYUI8wUl/+1iIEpPayhetjOsQ80APt5E2uEbddTM3i/utppgFIFwis3jRJDPtG16 41p5hmzgTg7zm/kLGMVDbFCQTO2jpjjv4ZX1y6uJJSZG7hdcIprhqGUrQo8ESKcHcWFn LvRkxc49i9Tz5zCThoYLAyOn+gcR5IubvZtB7gTPN3c7gk2o6K7kRQgTcCiby1dU3KSa 8px9RTJ8gB+UzuAwglmtNTLavQs0l1VS+sBt3a8ojTddg9y0apWcvJ0EZ/fKfKIzdBwU tPwwy7Ox2Li/7H3OzgfP9Ri/NCpJKvV1Qr0uyvLSaDwdXaTqQ1kp5BJxAv9SdO8dWpZm A1qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685528095; x=1688120095; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FxkdQ7WdMJA7CgRktteHAVBSNzmo/EtwpzkTghs4rJY=; b=aOrD/Bp/NlToBoiSzQmUcwLAEjLEyOrtvlqdgddkF0M+PA1hLX1o7l9sJ5MzN+cNX1 E+Rw+Ig8AbTGkrutuqcr2JgZjv1z763Cu7Yhnce7AsYFyZY6AaMYrwGIxrgz9CHaZfSI b5Luzm46I2TN7KQP6+HoIETNDvySO/wwHMLPEdpeT2yKADfqgiRbG1fNbwLiPVoeAY7q 5GaI1XxrWexw1oDaHcrqpesrfjhE8xhXpdLGT6QPE7rAIuDV3F0Dy8aDMush4aSYdzcT mJCdGlhKmjxg63Q9kfyEHsemeNEfNdb6ySj5H0uDgxoKFkmeTkBiC5btbSx1zBKiDLTE tQQg== X-Gm-Message-State: AC+VfDyJWFBBeEfzgBqBY1dLLNwTRgoTEJhE7e+Ch/yY5grBdbzYKfnQ DthFFwTJVzCTwmRtBk7oI+e8tJlO+wIkLg== X-Google-Smtp-Source: ACHHUZ5oOW8FK3VYme+oQJYhSsgIuvp8qpCJjSe1D1VErYFSG7lEa3pdiJbCOGaBdCUSiT0j+z6A4w== X-Received: by 2002:adf:e591:0:b0:2f9:61b5:7796 with SMTP id l17-20020adfe591000000b002f961b57796mr3741381wrm.29.1685528095431; Wed, 31 May 2023 03:14:55 -0700 (PDT) Received: from [192.168.15.34] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id h14-20020a5d6e0e000000b002ff2c39d072sm6254918wrz.104.2023.05.31.03.14.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 31 May 2023 03:14:54 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------El7Gv0XrE8Ivjrfi4jhdGKsR" Message-ID: Date: Wed, 31 May 2023 12:14:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: Test slots invalidations in 035_standby_logical_decoding.pl only if dead rows are removed Content-Language: en-US From: "Drouvot, Bertrand" To: PostgreSQL Hackers Cc: "Yu Shi (Fujitsu)" , Tom Lane , Robert Haas , Andres Freund References: In-Reply-To: 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. --------------El7Gv0XrE8Ivjrfi4jhdGKsR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 5/30/23 12:34 PM, Drouvot, Bertrand wrote: > Hi hackers, > > Please find attached a patch proposal to $SUBJECT. > > Indeed, we have seen occurrences in [1] that some slots were > not invalidated (while we expected vacuum to remove dead rows > leading to slots invalidation on the standby). > > Though we don't have strong evidences that this > was due to transactions holding back global xmin (as vacuum did > not run in verbose mode), suspicion is high enough (as Tom pointed > out that the test is broken on its face (see [1])). > > The proposed patch: > > - set autovacuum = off on the primary (as autovacuum is the usual suspect > for holding global xmin). > - Ensure that vacuum is able to remove dead rows before launching > the slots invalidation tests. > - If after 10 attempts the vacuum is still not able to remove the dead > rows then the slots invalidation tests are skipped: that should be pretty > rare, as currently the majority of the tests are green (with only one attempt). > > While at it, the patch also addresses the nitpicks mentioned by Robert in [2]. > > [1]: https://www.postgresql.org/message-id/flat/OSZPR01MB6310CFFD7D0DCD60A05DB1C3FD4A9%40OSZPR01MB6310.jpnprd01.prod.outlook.com#71898e088d2a57564a1bd9c41f3e6f36 > [2]: https://www.postgresql.org/message-id/CA%2BTgmobHGpU2ZkChgKifGDLaf_%2BmFA7njEpeTjfyNf_msCZYew%40mail.gmail.com > Please find attached V2 that, instead of the above proposal, waits for a new snapshot that has a newer horizon before doing the vacuum (as proposed by Andres in [1]). So, V2: - set autovacuum = off on the primary (as autovacuum is the usual suspect for holding global xmin). - waits for a new snapshot that has a newer horizon before doing the vacuum(s). - addresses the nitpicks mentioned by Robert in [2]. V2 also keeps the verbose mode for the vacuum(s) (as done in V1), as it may help for further analysis if needed. [1]: https://www.postgresql.org/message-id/20230530152426.ensapay7pozh7ozn%40alap3.anarazel.de [2]: https://www.postgresql.org/message-id/CA%2BTgmobHGpU2ZkChgKifGDLaf_%2BmFA7njEpeTjfyNf_msCZYew%40mail.gmail.com Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------El7Gv0XrE8Ivjrfi4jhdGKsR Content-Type: text/plain; charset=UTF-8; name="v2-0001-Ensure-vacuum-is-able-to-remove-dead-rows-in-035_.patch" Content-Disposition: attachment; filename*0="v2-0001-Ensure-vacuum-is-able-to-remove-dead-rows-in-035_.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzODNiZmNmMzkyNTdkNDU0MmIzNWZmZTJhYjU2YjQzMTgyY2EyZGVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBUdWUsIDMwIE1heSAyMDIzIDA3OjU0OjAyICswMDAw ClN1YmplY3Q6IFtQQVRDSCB2Ml0gRW5zdXJlIHZhY3V1bSBpcyBhYmxlIHRvIHJlbW92ZSBk ZWFkIHJvd3MgaW4KIDAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcKCldlIHdhbnQgdG8g ZW5zdXJlIHRoYXQgdmFjdXVtIHdhcyBhYmxlIHRvIHJlbW92ZSBkZWFkIHJvd3MgKGFrYSBu byBvdGhlcgp0cmFuc2FjdGlvbnMgaG9sZGluZyBiYWNrIGdsb2JhbCB4bWluKSBiZWZvcmUg dGVzdGluZyBmb3Igc2xvdHMgaW52YWxpZGF0aW9uCm9uIHRoZSBzdGFuZGJ5LgotLS0KIC4u Li90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8IDc2ICsrKysr KysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAzOSBk ZWxldGlvbnMoLSkKIDEwMC4wJSBzcmMvdGVzdC9yZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApp bmRleCA2NGJlZWM0YmQzLi5iZDQyNmYzMDY4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNv dmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCkBAIC0xODUsNyAr MTg1LDcgQEAgc3ViIGNoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3Jf eG1pbnMKICMgQ2hlY2sgY29uZmxpY3Rpbmcgc3RhdHVzIGluIHBnX3JlcGxpY2F0aW9uX3Ns b3RzLgogc3ViIGNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cwogewotCW15ICgkY29u ZmxpY3RpbmcpID0gQF87CisJbXkgKCRjb25mbGljdGluZywgJGRldGFpbHMpID0gQF87CiAK IAlpZiAoJGNvbmZsaWN0aW5nKQogCXsKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdWIgY2hlY2tf c2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzCiAJCQkncG9zdGdyZXMnLCBxcSgKIAkJCQkgc2Vs ZWN0IGJvb2xfYW5kKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3RzOykp OwogCi0JCWlzKCRyZXMsICd0JywgIkxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNv bmZsaWN0aW5nIik7CisJCWlzKCRyZXMsICd0JywgImxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9y dGVkIGFzIGNvbmZsaWN0aW5nICRkZXRhaWxzIik7CiAJfQogCWVsc2UKIAl7CkBAIC0yMDEs NyArMjAxLDcgQEAgc3ViIGNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cwogCQkJJ3Bv c3RncmVzJywgcXEoCiAJCQkJc2VsZWN0IGJvb2xfb3IoY29uZmxpY3RpbmcpIGZyb20gcGdf cmVwbGljYXRpb25fc2xvdHM7KSk7CiAKLQkJaXMoJHJlcywgJ2YnLCAiTG9naWNhbCBzbG90 cyBhcmUgcmVwb3J0ZWQgYXMgbm9uIGNvbmZsaWN0aW5nIik7CisJCWlzKCRyZXMsICdmJywg ImxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIG5vbiBjb25mbGljdGluZyAkZGV0YWls cyIpOwogCX0KIH0KIApAQCAtMjU2LDYgKzI1NiwyMiBAQCBzdWIgY2hlY2tfZm9yX2ludmFs aWRhdGlvbgogCSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CiB9CiAKKyMgTGF1bmNoICRzcWwgYW5kIHdhaXQg Zm9yIGEgbmV3IHNuYXBzaG90IHRoYXQgaGFzIGEgbmV3ZXIgaG9yaXpvbiBiZWZvcmUKKyMg ZG9pbmcgdGhlIHZhY3V1bSB3aXRoICR2YWNfb3B0aW9uIG9uICR0b192YWMuCitzdWIgd2Fp dF91bnRpbF92YWN1dW1fY2FuX3JlbW92ZQoreworCW15ICgkdmFjX29wdGlvbiwgJHNxbCwg JHRvX3ZhYykgPSBAXzsKKworCW15ICR4aWQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsIHFxWyRzcWwKKwkJCQkJCQkJCQkJCQlzZWxlY3QgdHhpZF9jdXJyZW50KCk7 XSk7CisKKwkkbm9kZV9wcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCd0ZXN0ZGInLAorCQki U0VMRUNUIChzZWxlY3QgdHhpZF9zbmFwc2hvdF94bWluKHR4aWRfY3VycmVudF9zbmFwc2hv dCgpKSAtICR4aWQpID4gMCIpCisJICBvciBkaWUgIm5ldyBzbmFwc2hvdCBkb2VzIG5vdCBo YXZlIGEgbmV3ZXIgaG9yaXpvbiI7CisKKwkkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rl c3RkYicsIHFxW1ZBQ1VVTSAkdmFjX29wdGlvbiB2ZXJib3NlICR0b192YWM7CisJCQkJCQkJ CQkJICBJTlNFUlQgSU5UTyBmbHVzaF93YWwgREVGQVVMVCBWQUxVRVM7IC0tIHNlZSBjcmVh dGUgdGFibGUgZmx1c2hfd2FsO10pOworfQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj IEluaXRpYWxpemUgcHJpbWFyeSBub2RlCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAg LTI2Niw2ICsyODIsNyBAQCAkbm9kZV9wcmltYXJ5LT5hcHBlbmRfY29uZigKIHdhbF9sZXZl bCA9ICdsb2dpY2FsJwogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gNAogbWF4X3dhbF9zZW5k ZXJzID0gNAorYXV0b3ZhY3V1bSA9IG9mZgogfSk7CiAkbm9kZV9wcmltYXJ5LT5kdW1wX2lu Zm87CiAkbm9kZV9wcmltYXJ5LT5zdGFydDsKQEAgLTQ4NiwxMyArNTAzLDggQEAgcmVhY3Rp dmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9mb3JfeG1pbnMoJ2JlaGF2ZXNfb2tfJywg J3ZhY3V1bV9mdWxsXycsCiAJMCwgMSk7CiAKICMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUg Y29uZmxpY3QKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKLQkndGVzdGRiJywgcXFbCi0g IENSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTsKLSAgRFJP UCBUQUJMRSBjb25mbGljdF90ZXN0OwotICBWQUNVVU0gZnVsbCBwZ19jbGFzczsKLSAgSU5T RVJUIElOVE8gZmx1c2hfd2FsIERFRkFVTFQgVkFMVUVTOyAtLSBzZWUgY3JlYXRlIHRhYmxl IGZsdXNoX3dhbAotXSk7Cit3YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKCdmdWxsJywg J0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTsKKwkJCQkJ CQkJIERST1AgVEFCTEUgY29uZmxpY3RfdGVzdDsnLCAncGdfY2xhc3MnKTsKIAogJG5vZGVf cHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKQEAg LTUwMCw3ICs1MTIsNyBAQCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1 cCgkbm9kZV9zdGFuZGJ5KTsKIGNoZWNrX2Zvcl9pbnZhbGlkYXRpb24oJ3ZhY3V1bV9mdWxs XycsIDEsICd3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CiAKICMgVmVyaWZ5IHNs b3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90 cwotY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworY2hlY2tfc2xvdHNfY29u ZmxpY3Rpbmdfc3RhdHVzKDEsICdhZnRlciB2YWN1dW0gRlVMTCBvbiBwZ19jbGFzcycpOwog CiAkaGFuZGxlID0KICAgbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAndmFjdXVt X2Z1bGxfJywgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKQEAgLTUxOSw3ICs1MzEsNyBAQCBj aGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsIDEpOwog JG5vZGVfc3RhbmRieS0+cmVzdGFydDsKIAogIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVk IGFzIGNvbmZsaWN0aW5nIGluIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCi1jaGVja19zbG90c19j b25mbGljdGluZ19zdGF0dXMoMSk7CitjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMo MSwgJ2FmdGVyIGEgcmVzdGFydCcpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBWZXJpZnkgdGhhdCBpbnZhbGlkYXRlZCBsb2dp Y2FsIHNsb3RzIGRvIG5vdCBsZWFkIHRvIHJldGFpbmluZyBXQUwuCkBAIC01NzEsMTMgKzU4 Myw4IEBAIHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5kX3dhaXRfZm9yX3htaW5zKCd2 YWN1dW1fZnVsbF8nLCAncm93X3JlbW92YWxfJywKIAkwLCAxKTsKIAogIyBUaGlzIHNob3Vs ZCB0cmlnZ2VyIHRoZSBjb25mbGljdAotJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAotCSd0 ZXN0ZGInLCBxcVsKLSAgQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpOwotICBEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7Ci0gIFZBQ1VVTSBwZ19jbGFz czsKLSAgSU5TRVJUIElOVE8gZmx1c2hfd2FsIERFRkFVTFQgVkFMVUVTOyAtLSBzZWUgY3Jl YXRlIHRhYmxlIGZsdXNoX3dhbAotXSk7Cit3YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3Zl KCcnLCAnQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpOwor CQkJCQkJCSBEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7JywgJ3BnX2NsYXNzJyk7CiAKICRu b2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwog CkBAIC01ODUsNyArNTkyLDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJG5vZGVfc3RhbmRieSk7CiBjaGVja19mb3JfaW52YWxpZGF0aW9uKCdyb3dfcmVt b3ZhbF8nLCAkbG9nc3RhcnQsICd3aXRoIHZhY3V1bSBvbiBwZ19jbGFzcycpOwogCiAjIFZl cmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRp b25fc2xvdHMKLWNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKK2NoZWNrX3Ns b3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxLCAnYWZ0ZXIgdmFjdXVtIG9uIHBnX2NsYXNzJyk7 CiAKICRoYW5kbGUgPQogICBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksICdyb3df cmVtb3ZhbF8nLCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOwpAQCAtNjA5LDEzICs2MTYsOCBA QCByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygncm93X3Jl bW92YWxfJywKIAknc2hhcmVkX3Jvd19yZW1vdmFsXycsIDAsIDEpOwogCiAjIFRyaWdnZXIg dGhlIGNvbmZsaWN0Ci0kbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoCi0JJ3Rlc3RkYicsIHFx WwotICBDUkVBVEUgUk9MRSBjcmVhdGVfdHJhc2g7Ci0gIERST1AgUk9MRSBjcmVhdGVfdHJh c2g7Ci0gIFZBQ1VVTSBwZ19hdXRoaWQ7Ci0gIElOU0VSVCBJTlRPIGZsdXNoX3dhbCBERUZB VUxUIFZBTFVFUzsgLS0gc2VlIGNyZWF0ZSB0YWJsZSBmbHVzaF93YWwKLV0pOword2FpdF91 bnRpbF92YWN1dW1fY2FuX3JlbW92ZSgnJywgJ0NSRUFURSBST0xFIGNyZWF0ZV90cmFzaDsK KwkJCQkJCQkgRFJPUCBST0xFIGNyZWF0ZV90cmFzaDsnLCAncGdfYXV0aGlkJyk7CiAKICRu b2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwog CkBAIC02MjQsNyArNjI2LDcgQEAgY2hlY2tfZm9yX2ludmFsaWRhdGlvbignc2hhcmVkX3Jv d19yZW1vdmFsXycsICRsb2dzdGFydCwKIAknd2l0aCB2YWN1dW0gb24gcGdfYXV0aGlkJyk7 CiAKICMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19y ZXBsaWNhdGlvbl9zbG90cwotY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOwor Y2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEsICdhZnRlciB2YWN1dW0gb24gcGdf YXV0aGlkJyk7CiAKICRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnks ICdzaGFyZWRfcm93X3JlbW92YWxfJywgMCwgXCRzdGRvdXQsCiAJXCRzdGRlcnIpOwpAQCAt NjQ2LDE0ICs2NDgsMTAgQEAgcmVhY3RpdmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9m b3JfeG1pbnMoJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLAogCSdub19jb25mbGljdF8nLCAwLCAx KTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0Ci0kbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoCi0JJ3Rlc3RkYicsIHFxWwotICBDUkVBVEUgVEFCTEUgY29uZmxp Y3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7Ci0gIElOU0VSVCBJTlRPIGNvbmZsaWN0X3Rl c3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7 Ci0gIFVQREFURSBjb25mbGljdF90ZXN0IHNldCB4PTEsIHk9MTsKLSAgVkFDVVVNIGNvbmZs aWN0X3Rlc3Q7Ci0gIElOU0VSVCBJTlRPIGZsdXNoX3dhbCBERUZBVUxUIFZBTFVFUzsgLS0g c2VlIGNyZWF0ZSB0YWJsZSBmbHVzaF93YWwKLV0pOword2FpdF91bnRpbF92YWN1dW1fY2Fu X3JlbW92ZSgnJywgJ0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0 ZXh0KTsKKwkJCQkJCQkgSU5TRVJUIElOVE8gY29uZmxpY3RfdGVzdCh4LHkpIFNFTEVDVCBz LCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgczsKKwkJCQkJCQkgVVBEQVRF IGNvbmZsaWN0X3Rlc3Qgc2V0IHg9MSwgeT0xOycsICdjb25mbGljdF90ZXN0Jyk7CisKICRu b2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwog CiAjIG1lc3NhZ2Ugc2hvdWxkIG5vdCBiZSBpc3N1ZWQKQEAgLTY3OCw3ICs2NzYsNyBAQCBv ayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKICkgb3IgZGllICJUaW1lZCBv dXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CiAK ICMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBub24gY29uZmxpY3RpbmcgaW4gcGdf cmVwbGljYXRpb25fc2xvdHMKLWNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygwKTsK K2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygwLCAnYWZ0ZXIgdmFjdXVtIG9uIGEg bm9uIGNhdGFsb2cgdGFibGUnKTsKIAogIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJh Y2sgb24KIGNoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMo MSwgMCk7CkBAIC03MTUsNyArNzEzLDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVw bGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiBjaGVja19mb3JfaW52YWxpZGF0aW9uKCdw cnVuaW5nXycsICRsb2dzdGFydCwgJ3dpdGggb24tYWNjZXNzIHBydW5pbmcnKTsKIAogIyBW ZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzCi1jaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7CitjaGVja19z bG90c19jb25mbGljdGluZ19zdGF0dXMoMSwgJ2FmdGVyIG9uLWFjY2VzcyBwcnVuaW5nJyk7 CiAKICRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksICdwcnVuaW5n XycsIDAsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CiAKQEAgLTc1OSw3ICs3NTcsNyBAQCAkbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIGNo ZWNrX2Zvcl9pbnZhbGlkYXRpb24oJ3dhbF9sZXZlbF8nLCAkbG9nc3RhcnQsICdkdWUgdG8g d2FsX2xldmVsJyk7CiAKICMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGlj dGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cwotY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdf c3RhdHVzKDEpOworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEsICdkdWUgdG8g d2FsX2xldmVsJyk7CiAKICRoYW5kbGUgPQogICBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0 YW5kYnksICd3YWxfbGV2ZWxfJywgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKLS0gCjIuMzQu MQoK --------------El7Gv0XrE8Ivjrfi4jhdGKsR--