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 1kxjFJ-00006D-0g for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Jan 2021 04:19:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kxjFH-0007DG-Uz for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Jan 2021 04:19:27 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kxjFH-0007D9-JX for pgsql-hackers@lists.postgresql.org; Fri, 08 Jan 2021 04:19:27 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kxjFC-0000gN-Te for pgsql-hackers@postgresql.org; Fri, 08 Jan 2021 04:19:26 +0000 Received: from hnk.local (p2390043-ipbf1028funabasi.chiba.ocn.ne.jp [118.7.248.43]) by oss.nttdata.com (Postfix) with ESMTPSA id E4E1E625C4; Fri, 8 Jan 2021 13:19:18 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com Subject: Re: Add Information during standby recovery conflicts To: Kyotaro Horiguchi Cc: bdrouvot@amazon.com, sawada.mshk@gmail.com, alvherre@alvh.no-ip.org, masahiko.sawada@2ndquadrant.com, pgsql-hackers@postgresql.org References: <8c1fca5b-6c5c-df6f-0b6d-4702eeb11c5c@amazon.com> <02295c62-e90f-9bf7-63ba-1ccda204aa71@oss.nttdata.com> <20210108.111712.1465719681094712823.horikyota.ntt@gmail.com> From: Fujii Masao Message-ID: <665ebdf3-d517-18c6-6b32-06fcdd9d6f83@oss.nttdata.com> Date: Fri, 8 Jan 2021 13:19:18 +0900 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20210108.111712.1465719681094712823.horikyota.ntt@gmail.com> Content-Type: multipart/mixed; boundary="------------00C45F4B3573FF890250434A" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------00C45F4B3573FF890250434A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 2021/01/08 11:17, Kyotaro Horiguchi wrote: > At Fri, 8 Jan 2021 01:32:11 +0900, Fujii Masao wrote in >> >> Attached is the updated version of the patch. This can be applied to >> current master. >> >> With the patch, for example, if the startup process waited longer than >> deadlock_timeout for the recovery conflict on the lock, the latter log >> message in the followings would be additionally output. >> >> LOG: recovery still waiting after 1001.223 ms: recovery conflict on >> lock >> LOG: recovery finished waiting after 19004.694 ms: recovery conflict >> on lock > > + /* > + * Emit the log message if recovery conflict on buffer pin was resolved but > + * the startup process waited longer than deadlock_timeout for it. > > The first line is beyond the 80th column. Thanks for pointing out this! This happened because I forgot to run pgindent for bufmgr.c. Attached is the updated version of the patch. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION --------------00C45F4B3573FF890250434A Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="log_recovery_conflict_waits_after_resolve_v3.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="log_recovery_conflict_waits_after_resolve_v3.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAppbmRleCA3YzBhNjczYThkLi44Mjg2NGJiYjI0IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CkBAIC02OTYxLDcgKzY5NjEsNyBAQCBsb2dfbGluZV9wcmVmaXggPSAnJW0gWyVwXSAlcSV1 QCVkLyVhICcKICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgQ29u dHJvbHMgd2hldGhlciBhIGxvZyBtZXNzYWdlIGlzIHByb2R1Y2VkIHdoZW4gdGhlIHN0YXJ0 dXAgcHJvY2VzcwotICAgICAgICBpcyB3YWl0aW5nIGxvbmdlciB0aGFuIDx2YXJuYW1lPmRl YWRsb2NrX3RpbWVvdXQ8L3Zhcm5hbWU+CisgICAgICAgIHdhaXRzIGxvbmdlciB0aGFuIDx2 YXJuYW1lPmRlYWRsb2NrX3RpbWVvdXQ8L3Zhcm5hbWU+CiAgICAgICAgIGZvciByZWNvdmVy eSBjb25mbGljdHMuICBUaGlzIGlzIHVzZWZ1bCBpbiBkZXRlcm1pbmluZyBpZiByZWNvdmVy eQogICAgICAgICBjb25mbGljdHMgcHJldmVudCB0aGUgcmVjb3ZlcnkgZnJvbSBhcHBseWlu ZyBXQUwuCiAgICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YwppbmRleCA3MWI1ODUyMjI0Li5jMTE2ZTc1Y2ExIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYwpAQCAtMzg0Niw2ICszODQ2LDE2IEBAIExvY2tCdWZmZXJGb3JDbGVh bnVwKEJ1ZmZlciBidWZmZXIpCiAJCQkvKiBTdWNjZXNzZnVsbHkgYWNxdWlyZWQgZXhjbHVz aXZlIGxvY2sgd2l0aCBwaW5jb3VudCAxICovCiAJCQlVbmxvY2tCdWZIZHIoYnVmSGRyLCBi dWZfc3RhdGUpOwogCisJCQkvKgorCQkJICogRW1pdCB0aGUgbG9nIG1lc3NhZ2UgaWYgcmVj b3ZlcnkgY29uZmxpY3Qgb24gYnVmZmVyIHBpbiB3YXMKKwkJCSAqIHJlc29sdmVkIGJ1dCB0 aGUgc3RhcnR1cCBwcm9jZXNzIHdhaXRlZCBsb25nZXIgdGhhbgorCQkJICogZGVhZGxvY2tf dGltZW91dCBmb3IgaXQuCisJCQkgKi8KKwkJCWlmIChsb2dnZWRfcmVjb3ZlcnlfY29uZmxp Y3QpCisJCQkJTG9nUmVjb3ZlcnlDb25mbGljdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0JVRkZFUlBJTiwKKwkJCQkJCQkJCXdhaXRTdGFydCwgR2V0Q3VycmVudFRpbWVzdGFtcCgp LAorCQkJCQkJCQkJTlVMTCwgZmFsc2UpOworCiAJCQkvKiBSZXBvcnQgY2hhbmdlIHRvIG5v bi13YWl0aW5nIHN0YXR1cyAqLwogCQkJaWYgKG5ld19zdGF0dXMpCiAJCQl7CkBAIC0zOTAw LDcgKzM5MTAsNyBAQCBMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogCQkJ CQkJCQkJCQkgICBEZWFkbG9ja1RpbWVvdXQpKQogCQkJCXsKIAkJCQkJTG9nUmVjb3ZlcnlD b25mbGljdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiwKLQkJCQkJCQkJ CQl3YWl0U3RhcnQsIG5vdywgTlVMTCk7CisJCQkJCQkJCQkJd2FpdFN0YXJ0LCBub3csIE5V TEwsIHRydWUpOwogCQkJCQlsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QgPSB0cnVlOwogCQkJ CX0KIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBkNGIwZjY1YmEy Li4zOWEzMGMwMGY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0yMjYs MTEgKzIyNiwxNCBAQCBXYWl0RXhjZWVkc01heFN0YW5kYnlEZWxheSh1aW50MzIgd2FpdF9l dmVudF9pbmZvKQogICogd2FpdF9zdGFydCBpcyB0aGUgdGltZXN0YW1wIHdoZW4gdGhlIGNh bGxlciBzdGFydGVkIHRvIHdhaXQuCiAgKiBub3cgaXMgdGhlIHRpbWVzdGFtcCB3aGVuIHRo aXMgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLgogICogd2FpdF9saXN0IGlzIHRoZSBsaXN0 IG9mIHZpcnR1YWwgdHJhbnNhY3Rpb24gaWRzIGFzc2lnbmVkIHRvCi0gKiBjb25mbGljdGlu ZyBwcm9jZXNzZXMuCisgKiBjb25mbGljdGluZyBwcm9jZXNzZXMuIHN0aWxsX3dhaXRpbmcg aW5kaWNhdGVzIHdoZXRoZXIKKyAqIHRoZSBzdGFydHVwIHByb2Nlc3MgaXMgc3RpbGwgd2Fp dGluZyBmb3IgdGhlIHJlY292ZXJ5IGNvbmZsaWN0CisgKiB0byBiZSByZXNvbHZlZCBvciBu b3QuCiAgKi8KIHZvaWQKIExvZ1JlY292ZXJ5Q29uZmxpY3QoUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24sIFRpbWVzdGFtcFR6IHdhaXRfc3RhcnQsCi0JCQkJCVRpbWVzdGFtcFR6IG5vdywg VmlydHVhbFRyYW5zYWN0aW9uSWQgKndhaXRfbGlzdCkKKwkJCQkJVGltZXN0YW1wVHogbm93 LCBWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdF9saXN0LAorCQkJCQlib29sIHN0aWxsX3dh aXRpbmcpCiB7CiAJbG9uZwkJc2VjczsKIAlpbnQJCQl1c2VjczsKQEAgLTIzOCw2ICsyNDEs MTIgQEAgTG9nUmVjb3ZlcnlDb25mbGljdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwgVGlt ZXN0YW1wVHogd2FpdF9zdGFydCwKIAlTdHJpbmdJbmZvRGF0YSBidWY7CiAJaW50CQkJbnBy b2NzID0gMDsKIAorCS8qCisJICogVGhlcmUgbXVzdCBiZSBubyBjb25mbGljdGluZyBwcm9j ZXNzZXMgd2hlbiB0aGUgcmVjb3ZlcnkgY29uZmxpY3QgaGFzCisJICogYWxyZWFkeSBiZWVu IHJlc29sdmVkLgorCSAqLworCUFzc2VydChzdGlsbF93YWl0aW5nIHx8IHdhaXRfbGlzdCA9 PSBOVUxMKTsKKwogCVRpbWVzdGFtcERpZmZlcmVuY2Uod2FpdF9zdGFydCwgbm93LCAmc2Vj cywgJnVzZWNzKTsKIAltc2VjcyA9IHNlY3MgKiAxMDAwICsgdXNlY3MgLyAxMDAwOwogCXVz ZWNzID0gdXNlY3MgJSAxMDAwOwpAQCAtMjc1LDEyICsyODQsMjEgQEAgTG9nUmVjb3ZlcnlD b25mbGljdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwgVGltZXN0YW1wVHogd2FpdF9zdGFy dCwKIAkgKiBjb25mbGljdGluZyBiYWNrZW5kcyBpbiBhIGRldGFpbCBtZXNzYWdlLiBOb3Rl IHRoYXQgaWYgYWxsIHRoZSBiYWNrZW5kcwogCSAqIGluIHRoZSBsaXN0IGFyZSBub3QgYWN0 aXZlLCBubyBkZXRhaWwgbWVzc2FnZSBpcyBsb2dnZWQuCiAJICovCi0JZXJlcG9ydChMT0cs Ci0JCQllcnJtc2coInJlY292ZXJ5IHN0aWxsIHdhaXRpbmcgYWZ0ZXIgJWxkLiUwM2QgbXM6 ICVzIiwKLQkJCQkgICBtc2VjcywgdXNlY3MsIF8oZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rl c2MocmVhc29uKSkpLAotCQkJbnByb2NzID4gMCA/IGVycmRldGFpbF9sb2dfcGx1cmFsKCJD b25mbGljdGluZyBwcm9jZXNzOiAlcy4iLAotCQkJCQkJCQkJCQkgICJDb25mbGljdGluZyBw cm9jZXNzZXM6ICVzLiIsCi0JCQkJCQkJCQkJCSAgbnByb2NzLCBidWYuZGF0YSkgOiAwKTsK KwlpZiAoc3RpbGxfd2FpdGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCWVycm1zZygi cmVjb3Zlcnkgc3RpbGwgd2FpdGluZyBhZnRlciAlbGQuJTAzZCBtczogJXMiLAorCQkJCQkg ICBtc2VjcywgdXNlY3MsIF8oZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MocmVhc29uKSkp LAorCQkJCW5wcm9jcyA+IDAgPyBlcnJkZXRhaWxfbG9nX3BsdXJhbCgiQ29uZmxpY3Rpbmcg cHJvY2VzczogJXMuIiwKKwkJCQkJCQkJCQkJCSAgIkNvbmZsaWN0aW5nIHByb2Nlc3Nlczog JXMuIiwKKwkJCQkJCQkJCQkJCSAgbnByb2NzLCBidWYuZGF0YSkgOiAwKTsKKwl9CisJZWxz ZQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJZXJybXNnKCJyZWNvdmVyeSBmaW5pc2hlZCB3 YWl0aW5nIGFmdGVyICVsZC4lMDNkIG1zOiAlcyIsCisJCQkJCSAgIG1zZWNzLCB1c2Vjcywg XyhnZXRfcmVjb3ZlcnlfY29uZmxpY3RfZGVzYyhyZWFzb24pKSkpOworCX0KIAogCWlmIChu cHJvY3MgPiAwKQogCQlwZnJlZShidWYuZGF0YSk7CkBAIC0zNzUsMTMgKzM5MywxMiBAQCBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEcyhWaXJ0dWFsVHJhbnNhY3Rp b25JZCAqd2FpdGxpc3QsCiAKIAkJCQkvKgogCQkJCSAqIEVtaXQgdGhlIGxvZyBtZXNzYWdl IGlmIHRoZSBzdGFydHVwIHByb2Nlc3MgaXMgd2FpdGluZwotCQkJCSAqIGxvbmdlciB0aGFu IGRlYWRsb2NrX3RpbWVvdXQgZm9yIHJlY292ZXJ5IGNvbmZsaWN0IG9uCi0JCQkJICogYnVm ZmVyIHBpbi4KKwkJCQkgKiBsb25nZXIgdGhhbiBkZWFkbG9ja190aW1lb3V0IGZvciByZWNv dmVyeSBjb25mbGljdC4KIAkJCQkgKi8KIAkJCQlpZiAobWF5YmVfbG9nX2NvbmZsaWN0ICYm CiAJCQkJCVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHdhaXRTdGFydCwgbm93LCBEZWFk bG9ja1RpbWVvdXQpKQogCQkJCXsKLQkJCQkJTG9nUmVjb3ZlcnlDb25mbGljdChyZWFzb24s IHdhaXRTdGFydCwgbm93LCB3YWl0bGlzdCk7CisJCQkJCUxvZ1JlY292ZXJ5Q29uZmxpY3Qo cmVhc29uLCB3YWl0U3RhcnQsIG5vdywgd2FpdGxpc3QsIHRydWUpOwogCQkJCQlsb2dnZWRf cmVjb3ZlcnlfY29uZmxpY3QgPSB0cnVlOwogCQkJCX0KIAkJCX0KQEAgLTM5MSw2ICs0MDgs MTQgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRy YW5zYWN0aW9uSWQgKndhaXRsaXN0LAogCQl3YWl0bGlzdCsrOwogCX0KIAorCS8qCisJICog RW1pdCB0aGUgbG9nIG1lc3NhZ2UgaWYgcmVjb3ZlcnkgY29uZmxpY3Qgd2FzIHJlc29sdmVk IGJ1dCB0aGUgc3RhcnR1cAorCSAqIHByb2Nlc3Mgd2FpdGVkIGxvbmdlciB0aGFuIGRlYWRs b2NrX3RpbWVvdXQgZm9yIGl0LgorCSAqLworCWlmIChsb2dnZWRfcmVjb3ZlcnlfY29uZmxp Y3QpCisJCUxvZ1JlY292ZXJ5Q29uZmxpY3QocmVhc29uLCB3YWl0U3RhcnQsIEdldEN1cnJl bnRUaW1lc3RhbXAoKSwKKwkJCQkJCQlOVUxMLCBmYWxzZSk7CisKIAkvKiBSZXNldCBwcyBk aXNwbGF5IGlmIHdlIGNoYW5nZWQgaXQgKi8KIAlpZiAobmV3X3N0YXR1cykKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBkYjBjZmFhMzYwLi5jODdmZmM2NTQ5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTEzMjIsNyArMTMyMiw4IEBAIFByb2NTbGVl cChMT0NBTExPQ0sgKmxvY2FsbG9jaywgTG9ja01ldGhvZCBsb2NrTWV0aG9kVGFibGUpCiAJ CQkJCSAqIGxvbmdlciB0aGFuIGRlYWRsb2NrX3RpbWVvdXQuCiAJCQkJCSAqLwogCQkJCQlM b2dSZWNvdmVyeUNvbmZsaWN0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKLQkJ CQkJCQkJCQlzdGFuZGJ5V2FpdFN0YXJ0LCBub3csIGNudCA+IDAgPyB2eGlkcyA6IE5VTEwp OworCQkJCQkJCQkJCXN0YW5kYnlXYWl0U3RhcnQsIG5vdywKKwkJCQkJCQkJCQljbnQgPiAw ID8gdnhpZHMgOiBOVUxMLCB0cnVlKTsKIAkJCQkJbG9nZ2VkX3JlY292ZXJ5X2NvbmZsaWN0 ID0gdHJ1ZTsKIAkJCQl9CiAJCQl9CkBAIC0xNjA3LDYgKzE2MDgsMTUgQEAgUHJvY1NsZWVw KExPQ0FMTE9DSyAqbG9jYWxsb2NrLCBMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSkKIAkJ CWRpc2FibGVfdGltZW91dChERUFETE9DS19USU1FT1VULCBmYWxzZSk7CiAJfQogCisJLyoK KwkgKiBFbWl0IHRoZSBsb2cgbWVzc2FnZSBpZiByZWNvdmVyeSBjb25mbGljdCBvbiBsb2Nr IHdhcyByZXNvbHZlZCBidXQgdGhlCisJICogc3RhcnR1cCBwcm9jZXNzIHdhaXRlZCBsb25n ZXIgdGhhbiBkZWFkbG9ja190aW1lb3V0IGZvciBpdC4KKwkgKi8KKwlpZiAoSW5Ib3RTdGFu ZGJ5ICYmIGxvZ2dlZF9yZWNvdmVyeV9jb25mbGljdCkKKwkJTG9nUmVjb3ZlcnlDb25mbGlj dChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0ssCisJCQkJCQkJc3RhbmRieVdhaXRT dGFydCwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJCU5VTEwsIGZhbHNlKTsKKwog CS8qCiAJICogUmUtYWNxdWlyZSB0aGUgbG9jayB0YWJsZSdzIHBhcnRpdGlvbiBsb2NrLiAg V2UgaGF2ZSB0byBkbyB0aGlzIHRvIGhvbGQKIAkgKiBvZmYgY2FuY2VsL2RpZSBpbnRlcnJ1 cHRzIGJlZm9yZSB3ZSBjYW4gbWVzcyB3aXRoIGxvY2tBd2FpdGVkIChlbHNlIHdlCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3RhbmRieS5oCmluZGV4IGEwZjNlMGJkZjAuLjJiMWYzNDBiODIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3RhbmRieS5oCkBAIC00MCw3ICs0MCw4IEBAIGV4dGVybiB2b2lkIFN0YW5kYnlE ZWFkTG9ja0hhbmRsZXIodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFuZGJ5VGltZW91dEhhbmRs ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQp OwogZXh0ZXJuIHZvaWQgTG9nUmVjb3ZlcnlDb25mbGljdChQcm9jU2lnbmFsUmVhc29uIHJl YXNvbiwgVGltZXN0YW1wVHogd2FpdF9zdGFydCwKLQkJCQkJCQkJVGltZXN0YW1wVHogY3Vy X3RzLCBWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdF9saXN0KTsKKwkJCQkJCQkJVGltZXN0 YW1wVHogY3VyX3RzLCBWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdF9saXN0LAorCQkJCQkJ CQlib29sIHN0aWxsX3dhaXRpbmcpOwogCiAvKgogICogU3RhbmRieSBSbWdyIChSTV9TVEFO REJZX0lEKQo= --------------00C45F4B3573FF890250434A--