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 1nEjOM-00019n-JC for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Feb 2022 02:59:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nEjOL-0003wd-FU for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Feb 2022 02:59:37 +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 1nEjOL-0003wU-4o for pgsql-hackers@lists.postgresql.org; Tue, 01 Feb 2022 02:59:37 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nEjOI-0003Mt-OR for pgsql-hackers@postgresql.org; Tue, 01 Feb 2022 02:59:36 +0000 Received: by mail-pj1-x102a.google.com with SMTP id h12so15786937pjq.3 for ; Mon, 31 Jan 2022 18:59:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=s1C+8XcU8Th84JufllmKNNkw+56MIgY7Eza3jqSLp1E=; b=cZxCTyEbw3f+AYq7Igl05Tx6l2Jp4IzqfiGMnM2NFrNXS0BgFH/Vq6TbWhuHB1OPM8 R4H7wGOhGILLSy+lhB6Kp8qhc1kJYn8S5g0I+Ty169rkB9Jczjj3FZhEiEdjcQD7ZBpV vB0DzGPWLhkQpZohsSfLG25eyIeKrPw6smMvWKGN0FiMwAyuPCK98S9GkDOT2ELWafIz xosJX6XegE9lOqheXRotgAnU3mjIY4wLqo9l6QKdlIVWmfFv8l+IAAaKkNyq83c0dLcS 6vtDqW1RP54sFvSeLSJfqPzlq6wA1ZhA635J+F4DONvNeeUuRWSgMqYQat0BXy9cilkf HtJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=s1C+8XcU8Th84JufllmKNNkw+56MIgY7Eza3jqSLp1E=; b=1y14eB38iSEzJVLLgXz4+OBfJRul/G9ePZChmw1B55kyXU/jru1lrfLskJD49hNCyt yzkL5PKV7UdhaoZdVv8CeJuX1rQemmepbJtSzzrdrnA3bqoIYU9ujSPjjDZgCxmN/YWY SGW9MJ5nijrsqu0E+sF+qZftTjTrfgbJiLFqqk3883qYSsxd/h/B9VL/MVvyYCT/OVsw x7deLX+O7T/B0jYYxyXVY2hYA32fp+C4DrfgdKV5YgCbQ1UHKCJ2CCvw/05buNiDKUCF 61np/Z2A7D8kSSnpILC6d32HCpXLzHWBtHguEHkdlw4vSZAyfRjU+QxnRsOY4ZtBGmtY NNWQ== X-Gm-Message-State: AOAM5334T8lW11cv3hXYlKdfFj2uNqJTLw7hJzOQOyICZSRXZVHx4z3Q /VNVVrVZVuCuTsGdn473OwvritDnNfEV86dsNU8= X-Google-Smtp-Source: ABdhPJyIoqMSbys81p+bhQTezfyNiQV9ledho81z6F0oGjCa5VR/FwSWx2yIFQvGclcQpP2wbQb5Cm84h5WcdjoqYbk= X-Received: by 2002:a17:90a:fd8c:: with SMTP id cx12mr27869417pjb.78.1643684372493; Mon, 31 Jan 2022 18:59:32 -0800 (PST) MIME-Version: 1.0 References: <20210423204306.5osfpkt2ggaedyvy@alap3.anarazel.de> <20210611011850.detxnd7bnffg3daz@alap3.anarazel.de> In-Reply-To: <20210611011850.detxnd7bnffg3daz@alap3.anarazel.de> From: Masahiko Sawada Date: Tue, 1 Feb 2022 11:58:55 +0900 Message-ID: Subject: Re: Testing autovacuum wraparound (including failsafe) To: Andres Freund Cc: Anastasia Lubennikova , pgsql-hackers , Peter Geoghegan Content-Type: multipart/mixed; boundary="0000000000002749cb05d6ec1766" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002749cb05d6ec1766 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jun 11, 2021 at 10:19 AM Andres Freund wrote: > > Hi, > > On 2021-06-10 16:42:01 +0300, Anastasia Lubennikova wrote: > > Cool. Thank you for working on that! > > Could you please share a WIP patch for the $subj? I'd be happy to help = with > > it. > > I've attached the current WIP state, which hasn't evolved much since > this message... I put the test in src/backend/access/heap/t/001_emergency= _vacuum.pl > but I'm not sure that's the best place. But I didn't think > src/test/recovery is great either. > Thank you for sharing the WIP patch. Regarding point (1) you mentioned (StartupSUBTRANS() takes a long time for zeroing out all pages), how about using single-user mode instead of preparing the transaction? That is, after pg_resetwal we check the ages of datfrozenxid by executing a query in single-user mode. That way, we don=E2=80=99t need to worry about autovacuum concurrently running while checking the ages of frozenxids. I=E2=80=99ve attached a PoC patch th= at does the scenario like: 1. start cluster with autovacuum=3Doff and create tables with a few data and make garbage on them 2. stop cluster and do pg_resetwal 3. start cluster in single-user mode 4. check age(datfrozenxid) 5. stop cluster 6. start cluster and wait for autovacuums to increase template0, template1, and postgres datfrozenxids I put new tests in src/test/module/heap since we already have tests for brin in src/test/module/brin. I think that tap test facility to run queries in single-user mode will also be helpful for testing a new vacuum option/command that is intended to use in emergency cases and proposed here[1]. Regards, [1] https://www.postgresql.org/message-id/flat/20220128012842.GZ23027%40te= lsasoft.com#b76c13554f90d1c8bb5532d6f3e5cbf8 -- Masahiko Sawada EDB: https://www.enterprisedb.com/ --0000000000002749cb05d6ec1766 Content-Type: application/x-patch; name="tap_tests_for_wraparound_emregency.patch" Content-Disposition: attachment; filename="tap_tests_for_wraparound_emregency.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kz3iysoy0 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaGVhcC8uZ2l0aWdub3JlIGIvc3JjL3Rlc3Qv bW9kdWxlcy9oZWFwLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNzE2ZTE3ZjVhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaGVh cC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorIyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMK Ky90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2hlYXAvTWFrZWZpbGUg Yi9zcmMvdGVzdC9tb2R1bGVzL2hlYXAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uZDNjMDhhMDRiNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvaGVhcC9NYWtlZmlsZQpAQCAtMCwwICsxLDE0IEBACisjIHNyYy90ZXN0L21vZHVsZXMv aGVhcC9NYWtlZmlsZQorCitUQVBfVEVTVFMgPSAxCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05G SUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5j bHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL2hlYXAKK3RvcF9i dWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5t aworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaGVhcC90LzAwMV9lbWVyZ2Vu Y3lfdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy9oZWFwL3QvMDAxX2VtZXJnZW5jeV92YWN1 dW0ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzIyOWY5OTkyMQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaGVhcC90LzAwMV9lbWVyZ2VuY3lf dmFjdXVtLnBsCkBAIC0wLDAgKzEsMTMxIEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGZvciB3cmFwYXJvdW5kIGVt ZXJnZW5jeSBzaXR1YXRpb24KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNl IFRlc3Q6Ok1vcmUgdGVzdHMgPT4gODsKK3VzZSBJUEM6OlJ1biBxdyhwdW1wIGZpbmlzaCB0aW1l cik7CisKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKworJG5vZGVfcHJpbWFyeS0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsIHFxLworYXV0b3ZhY3V1bSA9IG9mZiAjIHJ1biBhdXRvdmFjdXVt IG9ubHkgd2hlbiB0byBhbnRpIHdyYXBhcm91bmQKK21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnM9 MTAKK2F1dG92YWN1dW1fbmFwdGltZSA9IDFzCisjIFNvIGl0J3MgZWFzaWVyIHRvIHZlcmlmeSB0 aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucworYXV0b3ZhY3V1bV9tYXhfd29ya2Vycz0xCithdXRvdmFj dXVtX3ZhY3V1bV9jb3N0X2RlbGF5PTAKK2xvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbj0wCisv KTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisjCisjIENyZWF0ZSB0YWJsZXMgZm9yIGEgZmV3 IGRpZmZlcmVudCB0ZXN0IHNjZW5hcmlvcworIworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXEvCitDUkVBVEUgVEFCTEUgbGFyZ2UoaWQgc2VyaWFsIHByaW1hcnkga2V5 LCBkYXRhIHRleHQsIGZpbGxlciB0ZXh0IGRlZmF1bHQgcmVwZWF0KHJhbmRvbSgpOjp0ZXh0LCAx MCkpOworSU5TRVJUIElOVE8gbGFyZ2UoZGF0YSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDMw MDAwKTsKKworQ1JFQVRFIFRBQkxFIGxhcmdlX3RydW5jKGlkIHNlcmlhbCBwcmltYXJ5IGtleSwg ZGF0YSB0ZXh0LCBmaWxsZXIgdGV4dCBkZWZhdWx0IHJlcGVhdChyYW5kb20oKTo6dGV4dCwgMTAp KTsKK0lOU0VSVCBJTlRPIGxhcmdlX3RydW5jKGRhdGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwzMDAwMCk7CisKK0NSRUFURSBUQUJMRSBzbWFsbChpZCBzZXJpYWwgcHJpbWFyeSBrZXksIGRh dGEgdGV4dCwgZmlsbGVyIHRleHQgZGVmYXVsdCByZXBlYXQocmFuZG9tKCk6OnRleHQsIDEwKSk7 CitJTlNFUlQgSU5UTyBzbWFsbChkYXRhKSBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTUwMDAp OworCitDUkVBVEUgVEFCTEUgc21hbGxfdHJ1bmMoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBkYXRh IHRleHQsIGZpbGxlciB0ZXh0IGRlZmF1bHQgcmVwZWF0KHJhbmRvbSgpOjp0ZXh0LCAxMCkpOwor SU5TRVJUIElOVE8gc21hbGxfdHJ1bmMoZGF0YSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDE1 MDAwKTsKKworQ1JFQVRFIFRBQkxFIGF1dG92YWN1dW1fZGlzYWJsZWQoaWQgc2VyaWFsIHByaW1h cnkga2V5LCBkYXRhIHRleHQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxzZSk7CitJTlNF UlQgSU5UTyBhdXRvdmFjdXVtX2Rpc2FibGVkKGRhdGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwxMDAwKTsKKy8pOworCisjIERlbGV0ZSBhIGZldyByb3dzIHRvIGVuc3VyZSB0aGF0IHZhY3V1 bSBoYXMgd29yayB0byBkby4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cS8KK0RFTEVURSBGUk9NIGxhcmdlIFdIRVJFIGlkICUgMiA9IDA7CitERUxFVEUgRlJPTSBsYXJn ZV90cnVuYyBXSEVSRSBpZCA+IDEwMDAwOworREVMRVRFIEZST00gc21hbGwgV0hFUkUgaWQgJSAy ID0gMDsKK0RFTEVURSBGUk9NIHNtYWxsX3RydW5jIFdIRVJFIGlkID4gMTAwMDsKK0RFTEVURSBG Uk9NIGF1dG92YWN1dW1fZGlzYWJsZWQgV0hFUkUgaWQgJSAyID0gMDsKKy8pOworCisKKyMgU3Rv cCB0aGUgc2VydmVyIGFuZCB0ZW1wb3JhcmlseSBkaXNhYmxlIGxvZ19zdGF0ZW1lbnQgd2hpbGUg cnVubmluZyBpbiBzaW5nbGUtdXNlciBtb2RlCiskbm9kZV9wcmltYXJ5LT5zdG9wOworJG5vZGVf cHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxLworbG9nX3N0YXRlbWVu dCA9ICdub25lJworLyk7CisKKyMgTmVlZCB0byByZXNldCB0byBhIGNsb2cgcGFnZSBib3VuZGFy eSwgb3RoZXJ3aXNlIHdlJ2xsIGdldCBlcnJvcnMKKyMgYWJvdXQgdGhlIGZpbGUgbm90IGV4aXN0 aW5nLiBXaXRoIGRlZmF1bHQgY29tcGlsYXRpb24gc2V0dGluZ3MKKyMgQ0xPR19YQUNUU19QRVJf UEFHRSBpcyAzMjc2OC4gVGhlIHZhbHVlIGJlbG93IGlzIDMyNzY4ICoKKyMgKDIwMDAwMDAwMDAv MzI3NjggKyAxKSwgd2l0aCAyMDAwMDAwMDAwIGJlaW5nIHRoZSBtYXggdmFsdWUgZm9yCisjIGF1 dG92YWN1dW1fZnJlZXplX21heF9hZ2UuCisKK2NvbW1hbmRfbGlrZShbICdwZ19yZXNldHdhbCcs ICcteDIwMDAwMjc2NDgnLCAkbm9kZV9wcmltYXJ5LT5kYXRhX2RpciBdLAorCSAgICAgcXIvV3Jp dGUtYWhlYWQgbG9nIHJlc2V0LywgJ3BnX3Jlc2V0d2FsIC14IHRvJyk7CisKK215ICRpbiAgPSAn JzsKK215ICRvdXQgPSAnJzsKK215ICR0aW1lciA9IHRpbWVyKDUpOworCisjIFN0YXJ0IHRoZSBz ZXJ2ZXIgaW4gc2luZ2xlLXVzZXIgbW9kZS4gIFRoYXQgYWxsb3dzIHVzIHRvIHRlc3QgaW50ZXJh Y3Rpb25zCisjIHdpdGhvdXQgYXV0b3ZhY3V1bXMuCitteSAkaCA9ICRub2RlX3ByaW1hcnktPnN0 YXJ0X3NpbmdsZV91c2VyX21vZGUoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lcik7CisK KyRvdXQgPSAiIjsKKyMgTXVzdCBiZSBhIHNpbmdsZSBsaW5lIHdpdGggYSBuZXcgbGluZSBhdCB0 aGUgZW5kLgorJGluIC49CisgICAgIlNFTEVDVCBkYXRuYW1lLCAiIC4KKyAgICAiYWdlKGRhdGZy b3plbnhpZCkgPiBjdXJyZW50X3NldHRpbmcoJ2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2UnKTo6 aW50IGFzIG9sZCAiLgorICAgICJGUk9NIHBnX2RhdGFiYXNlIE9SREVSIEJZIDE7XG4iOworCisj IFB1bXAgdW50aWwgd2UgZ290IHRoZSByZXN1bHQuCitwdW1wICRoIHVudGlsICgkb3V0ICE9ICIi IHx8ICR0aW1lci0+aXNfZXhwaXJlZCk7CisKKyMgQ2hlY2sgYWxsIGRhdGFiYXNlIGFyZSBvbGQg ZW5vdWdoLgorbGlrZSgkb3V0LCBxci8xOiBkYXRuYW1lID0gInBvc3RncmVzIlteXHJcbl0rXHJc blx0IDI6IG9sZCA9ICJ0Ii8sCisgICAgICJwb3N0Z3JlcyBkYXRhYmFzZSBpcyBvbGQgZW5vdWdo Iik7CitsaWtlKCRvdXQsIHFyLzE6IGRhdG5hbWUgPSAidGVtcGxhdGUwIlteXHJcbl0rXHJcblx0 IDI6IG9sZCA9ICJ0Ii8sCisgICAgICJ0ZW1wbGF0ZTAgZGF0YWJhc2UgaXMgb2xkIGVub3VnaCIp OworbGlrZSgkb3V0LCBxci8xOiBkYXRuYW1lID0gInRlbXBsYXRlMSJbXlxyXG5dK1xyXG5cdCAy OiBvbGQgPSAidCIvLAorICAgICAidGVtcGxhdGUxIGRhdGFiYXNlIGlzIG9sZCBlbm91Z2giKTsK KworIyBUZXJtaW5hdGUgc2luZ2xlIHVzZXIgbW9kZS4KKyRpbiAuPSAiXGNEIjsKK2ZpbmlzaCAk aCBvciBkaWUgInBvc3RncmVzIC0tc2luZ2xlIHJldHVybmVkICQ/IjsKKworIyBSZXZlcnQgYmFj ayB0aGUgbG9nZ2luZyBzZXR0aW5nLgorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsIHFxLworbG9nX3N0YXRlbWVudCA9ICdhbGwnCisvKTsKKworIyBOb3cgdGVz dCBhdXRvdmFjdXVtIGJlaGF2aW91ci4KKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCitvaygkbm9k ZV9wcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHFxLworICAgIFNFTEVDVCBO T1QgRVhJU1RTICgKKyAgICAgICAgU0VMRUNUICoKKyAgICAgICAgRlJPTSBwZ19kYXRhYmFzZQor ICAgICAgICBXSEVSRSBhZ2UoZGF0ZnJvemVueGlkKSA+IGN1cnJlbnRfc2V0dGluZygnYXV0b3Zh Y3V1bV9mcmVlemVfbWF4X2FnZScpOjppbnQpCisvKSwKKyAgICJ4aWQgaG9yaXpvbiBpbmNyZWFz ZWQiKTsKKworbXkgJHJldCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cS8KK1NFTEVDVCByZWxuYW1lLCBhZ2UocmVsZnJvemVueGlkKSA+IGN1cnJlbnRfc2V0dGluZygn YXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZScpOjppbnQKK0ZST00gcGdfY2xhc3MKK1dIRVJFIG9p ZCA9IEFOWShBUlJBWVsnbGFyZ2UnOjpyZWdjbGFzcywgJ2xhcmdlX3RydW5jJywgJ3NtYWxsJywg J3NtYWxsX3RydW5jJywgJ2F1dG92YWN1dW1fZGlzYWJsZWQnXSkKK09SREVSIEJZIDEKKy8pOwor aXMoJHJldCwgImF1dG92YWN1dW1fZGlzYWJsZWR8ZgorbGFyZ2V8ZgorbGFyZ2VfdHJ1bmN8Zgor c21hbGx8Zgorc21hbGxfdHJ1bmN8ZiIsICJhbGwgdGFibGVzIGFyZSB2YWN1dW1lZCIpOworCisk bm9kZV9wcmltYXJ5LT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FM L1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIu cG0KaW5kZXggMjY1ZjNhZTY1Ny4uMmQzNTk3OGJhYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVy bC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtCkBAIC04NTgsNiArODU4LDQwIEBAIHN1YiBzdGFydAogCXJldHVy biAxOwogfQogCitzdWIgc3RhcnRfc2luZ2xlX3VzZXJfbW9kZQoreworICAgIG15ICgkc2VsZiwg JGRibmFtZSwgJHN0ZGluLCAkc3Rkb3V0LCAkdGltZXIpID0gQF87CisgICAgbXkgJG5hbWUgPSAk c2VsZi0+bmFtZTsKKworICAgIEJBSUxfT1VUKCJub2RlIFwiJG5hbWVcIiBpcyBhbHJlYWR5IHJ1 bm5pbmciKSBpZiBkZWZpbmVkICRzZWxmLT57X3BpZH07CisKKyAgICBwcmludCgiIyMjIFN0YXJ0 aW5nIG5vZGUgXCIkbmFtZVwiIGluIHNpbmdsZS11c2VyIG1vZGVcbiIpOworCisgICAgbG9jYWwg JUVOViA9ICRzZWxmLT5fZ2V0X2VudigpOworCisgICAgbXkgQHBvc3RncmVzX3BhcmFtcyA9ICgK Kwkkc2VsZi0+aW5zdGFsbGVkX2NvbW1hbmQoJ3Bvc3RncmVzJyksCisJJy0tc2luZ2xlJywgJy1E JywgJHNlbGYtPmRhdGFfZGlyLCAncG9zdGdyZXMnKTsKKworICAgICMgRW5zdXJlIHRoZXJlIGlz IG5vIGRhdGEgd2FpdGluZyB0byBiZSBzZW50OgorICAgICQkc3RkaW4gPSAiIiBpZiByZWYoJHN0 ZGluKTsKKyAgICAjIElQQzo6UnVuIHdvdWxkIG90aGVyd2lzZSBhcHBlbmQgdG8gZXhpc3Rpbmcg Y29udGVudHM6CisgICAgJCRzdGRvdXQgPSAiIiBpZiByZWYoJHN0ZG91dCk7CisKKyAgICBteSAk aGFybmVzcyA9IElQQzo6UnVuOjpzdGFydCBcQHBvc3RncmVzX3BhcmFtcywKKwknPHB0eTwnLCAk c3RkaW4sICc+cHR5PicsICRzdGRvdXQsICR0aW1lcjsKKworICAgICMgUHVtcCB1bnRpbCB3ZSBz ZWUgdGhlIHN0YXJ0dXAgYmFubmVyLiAgVGhpcyBlbnN1cmVzIHRoYXQgY2FsbGVycyB3b24ndAor ICAgICMgd3JpdGUgd3JpdGUgYW55dGhpbmcgdG8gdGhlIHB0ciBiZWZvcmUgaXQncyByZWFkeSwg YXZvaWRpbmcgYW4KKyAgICAjIGltcGxlbWVudGF0aW9uIGlzc3VlIGluIElQQzo6UlVOLgorICAg IHB1bXAgJGhhcm5lc3MKKwl1bnRpbCAkJHN0ZG91dCA9fiAvUG9zdGdyZVNRTCBzdGFuZC1hbG9u ZSBiYWNrZW5kLyB8fCAkdGltZXItPmlzX2V4cGlyZWQ7CisKKyAgICBkaWUgInBvc3RncmVzIC0t c2luZ2xlIHN0YXJ0dXAgdGltZWQgb3V0IiBpZiAkdGltZXItPmlzX2V4cGlyZWQ7CisKKyAgICBy ZXR1cm4gJGhhcm5lc3M7Cit9CisKID1wb2QKIAogPWl0ZW0gJG5vZGUtPmtpbGw5KCkKZGlmZiAt LWdpdCBhL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbSBiL3NyYy90b29scy9tc3ZjL01rdmNi dWlsZC5wbQppbmRleCBhMzEwYmNiMjhjLi5mOTRjNWVhOGNiIDEwMDY0NAotLS0gYS9zcmMvdG9v bHMvbXN2Yy9Na3ZjYnVpbGQucG0KKysrIGIvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCkBA IC01MCw3ICs1MCw4IEBAIG15IEBjb250cmliX2V4Y2x1ZGVzID0gKAogCSdzZXBnc3FsJywKIAkn YnJpbicsICAgICAgICAgICAgICd0ZXN0X2V4dGVuc2lvbnMnLAogCSd0ZXN0X21pc2MnLCAgICAg ICAgJ3Rlc3RfcGdfZHVtcCcsCi0JJ3NuYXBzaG90X3Rvb19vbGQnLCAndW5zYWZlX3Rlc3RzJyk7 CisJJ3NuYXBzaG90X3Rvb19vbGQnLCAndW5zYWZlX3Rlc3RzJywKKwknaGVhcCcpOwogCiAjIFNl dCBvZiB2YXJpYWJsZXMgZm9yIGZyb250ZW5kIG1vZHVsZXMKIG15ICRmcm9udGVuZF9kZWZpbmVz ID0geyAnaW5pdGRiJyA9PiAnRlJPTlRFTkQnIH07Cg== --0000000000002749cb05d6ec1766--