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.96) (envelope-from ) id 1vxTHD-00FuUs-1A for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 17:11:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxTHB-007x7y-1V for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 17:11:17 +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.96) (envelope-from ) id 1vxTHB-007x7Y-03 for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 17:11:17 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxTH9-00000000DBM-0KHD for pgsql-hackers@postgresql.org; Tue, 03 Mar 2026 17:11:16 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-798578e2918so54198477b3.2 for ; Tue, 03 Mar 2026 09:11:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772557874; cv=none; d=google.com; s=arc-20240605; b=JZCR9xffOJK/3Wc6R5GglgyB8RD/yQDT0ExYfaKcaYPRIRpqZG6eebvmwY5fGhezoF xZZdNbDmoEA6sXbqoivF5Fo94LPAiq+EKx22T9A+mAeMedNwHAcW3Ik2GR4s10CyBaNR zoRQ4pQc9De/xUy9HEhyivhW96IRo0Q8bVOzQmdeXdEBGkWL2kUX+tvFOldyX3pVCZSl 0msOFEdbFG5TMhFYRqXC0uNMIXo3ENEpDLNCWsWu72Y8T8vIECFHY/YzoFjOb0f/KNsi I/g2n5/kOfpAPstIat5a3VrB6BeSK88LCT9WaBpJ4r5+dwPOzGpHfUFrznPcBBYOmNzg Gqiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=5IAjar+Dh5daBqgeuj5BDu4BR+WPZzrT88xcV90s0Bk=; fh=pMq4UVusbwSCnJyXyh/ZAMXVj6SK5SGRaJXcOJ7I5rU=; b=Fs2mdatwudY1oaQ+GRCWea4toTnBllsZhZ+dsCTVyUWkwX8mPrlsQCQ7/iaI0XVVLw 6oPVUBBgnHtw5CicJFvbtmhX3NeDEwUNyX31Hy4+Y5Wbpk1T1FRD3dfMna0DCpvc9F9o q+VIplamuSQrY0Vra13TF4oys8qu1DGdkl51Cg1FvTTnhfVBgW8BbkTYBOoEnCoX9rC9 iwVUb7QtzydeCDi+gMQJYtGIYTJAGYE/d6p2uGizcVcoXnQ3I+Dbwu3Za7EII3U5qwg0 ZcNNZqCDMY8gzLiCq0CdSprk83uZKTqsCvRtB7P/FvLdDzeLLwyIUbKrb2mxWW41Wyfh t4Cg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1772557874; x=1773162674; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5IAjar+Dh5daBqgeuj5BDu4BR+WPZzrT88xcV90s0Bk=; b=FVZfym9amMwtD9d4KwXyk3NRt/g7g0LOZ0NV+ty0UgE9snHwR6h0BcTpnUYbSZpUJh qMQAKf6xPfcYugmeG8cW6vPJyLY6Nn4L1OipN0GeugaGsbd8eQGELbHf9QCy3nBa0qb+ hL4oGvhbAuZnwOvEghGiuWaEnSbmCJJShr9ck= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772557874; x=1773162674; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5IAjar+Dh5daBqgeuj5BDu4BR+WPZzrT88xcV90s0Bk=; b=Gd8u8awmDmj7WqC66xTDYbo+ymQMZvvRlBhriDjRSU+INB+ergFxWxcBuzAa0BT1PD 8Lfk1sD+bi1HDSw1XIBY/Ih3/FE94otPjIzflL0Uf7xJSincJREsyvJRqGaEqnzPcQJh 1u1TSIreEUMs9zsws7BBBjJLJb4XD+5eOugzy+6X37H3+6bqraft+JX66uPFVzQzvg6Q 6BdLmfNg3hSUrArtQeWMOHlbdp8fnqySxHtr5rcG9ADaY+GKypaSiFqvFStKsyJNYXep N0LgdekV+yqI+gwkZFntrZlDoviXVifILjk7FEcmnuyziVMab5w4r/ieZb8d//MWz7RG aCLg== X-Gm-Message-State: AOJu0YzJVfGKR+I74otcPPMojXf3y9sElM6rOALe61ZFMxh69hY7VbQr 4y/O/c9ZxKd+R1osG6LOf+Husep2oPlIpWPNPGdWhNbhVSnXAwQ9TeEnPqDWwU76gOn3xjZ5ZZU 06EL1FWNPmkCYDU5QEivgBwXIW7evNz/CAhfkT5VY5w== X-Gm-Gg: ATEYQzwcpRLMle2f5dkvtVbzsBs3EkoX4Y9/VnmmWSm25+nYpsMLludBSEgGzPj5mGc utz700EwpvJSrQspxpnlOJEAQtD4qte3LmV5j/uI6pFcjpVJ7uuh2asvf2ZDWrNm4QNy39A3srh TWKv5x+czCII7TFrHzaYPM2/1JChjBGBRZrbxl7zGC58V/7Wt6j3BTcQ28o6Rcs8r/KdcozFdcC BZOnH+I5D0W7iyu4QcZl1MFgqXRHJZmafJlbC/PLtROwVf+34LAoGhUYFgpbZzyNXkDmXAtYDT2 iSc0wsbjwRp/sszPbTUzbOe5Io/HddnE1rdnvK3C X-Received: by 2002:a05:690c:a:b0:798:13ff:1250 with SMTP id 00721157ae682-7988561e6e6mr153200107b3.51.1772557873673; Tue, 03 Mar 2026 09:11:13 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Anthonin Bonnefoy Date: Tue, 3 Mar 2026 18:11:02 +0100 X-Gm-Features: AaiRm51YEb3q0KLknYNgrfMBn_y9LHE_1R8IQ1QBUSpy5TtfvzPNrIvJsMw7o7s Message-ID: Subject: Re: Shutdown indefinitely stuck due to unflushed FPI_FOR_HINT record To: Fujii Masao Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000683c9a064c21ca1c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000683c9a064c21ca1c Content-Type: text/plain; charset="UTF-8" Here's a small updated version of the patch, with the 2 different approaches. - 0001: This is the XLogSetAsyncXactLSN call in RecordTransactionAbort approach. The small difference with v3 is that the 'XactLastRecEnd != 0' condition is now merged with !isSubXact: +if (!isSubXact && XactLastRecEnd != 0) +{ + XLogSetAsyncXactLSN(XactLastRecEnd); XactLastRecEnd = 0; +} - 0002: This is the ShutdownXLOG approach. I've used XLogFlush(WriteRqstPtr) instead of updating the async LSN. It feels like if we're going to stop the walsenders, we may as well flush everything and get the WAL in a good state. The spinlock to access XLogCtl->LogwrtRqst.Write is probably unnecessary since we're at a point where no additional WAL records should be written, but it doesn't hurt to keep consistency. Regards, Anthonin Bonnefoy --000000000000683c9a064c21ca1c Content-Type: application/octet-stream; name="v4-0002-Fix-stuck-shutdown-due-to-unflushed-records.patch" Content-Disposition: attachment; filename="v4-0002-Fix-stuck-shutdown-due-to-unflushed-records.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmaul4jb1 RnJvbSAwZGIyMTNjMDVjMWZiNWRmODQ5NTAxNTlhZDk5MTA1OWE0MGMzZDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogVHVlLCAzIE1hciAyMDI2IDE3OjQyOjQwICswMTAwClN1Ympl Y3Q6IEZpeCBzdHVjayBzaHV0ZG93biBkdWUgdG8gdW5mbHVzaGVkIHJlY29yZHMKClNodXRkb3du IHNlcXVlbmNlIG1heSBiZSBzdHVjayBpbmRlZmluaXRlbHkgdW5kZXIgdGhlIGZvbGxvd2luZwpj aXJjdW1zdGFuY2VzOgotIERhdGEgY2hlY2tzdW1zIGlzIGVuYWJsZWQKLSBBIGxvZ2ljYWwgcmVw bGljYXRpb24gd2Fsc2VuZGVyIGlzIHJ1bm5pbmcKLSBBIHNlbGVjdCBpbiBhbiBleHBsaWNpdCB0 cmFuc2FjdGlvbiB0cmllcyB0byBwcnVuZSBhIGZ1bGwgaGVhcCBwYWdlLAogIHdyb3RlIGEgRlBJ X0ZPUl9ISU5UIHJlY29yZCB3aGljaCBjcm9zc2VzIHRoZSBwYWdlIGJvdW5kYXJ5Ci0gVGhlIHNl bGVjdCBpcyByb2xsYmFja2VkIChvciBraWxsZWQpCi0gJ3BnX2N0bCBzdG9wJyBpcyBzZW50CgpU aGUgRlBJX0ZPUl9ISU5UIHJlY29yZCBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgYSBjb250cmVjb3Jk IGFuZCBzdGFydHMgYQpuZXcgcGFnZS4gSG93ZXZlciwgYXMgdGhlIHNlbGVjdCBpcyByb2xsYmFj a2VkLCBYTG9nU2V0QXN5bmNYYWN0TFNOCmlzbid0IGNhbGxlZCB0byBhZHZhbmNlIHRoZSBMU04g dG8gaW5jbHVkZSB0aGlzIHJlY29yZC4KCldoZW4gdGhlIGNoZWNrcG9pbnRlciBzdGFydHMgU2h1 dGRvd25YTE9HKCksIGFsbCB3YWxzZW5kZXJzIHdpbGwgYmUKbm90aWZpZWQgdG8gc3RvcC4gSG93 ZXZlciwgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd2Fsc2VuZGVyIHdpbGwgYmUKc3R1Y2sgaW4g dGhlIGZvbGxvd2luZyBpbmZpbml0ZSBsb29wOgotIFRyaWVzIHRvIHJlYWQgdGhlIGxhc3QgRlBJ X0ZPUl9ISU5UIHJlY29yZAotIFRoZSBwYWdlIHdpdGggdGhlIHJlY29yZCBoZWFkZXIgaXMgcmVh ZAotIHRvdF9sZW4gPiBsZW4sIHRoZSByZWNvcmQgbmVlZHMgdG8gYmUgcmVhc3NlbWJsZWQKLSBU cmllcyB0byByZWFkIHRoZSBuZXh0IHBhZ2UgY29udGFpbmluZyB0aGUgcmVzdCBvZiB0aGUgcmVj b3JkLiBJdCBmYWlscyBzaW5jZSB0aGlzIHBhZ2Ugd2FzIG5ldmVyIHdyaXR0ZW4uCi0geGxvZyBy ZWFkZXIgc3RhdGUgaXMgcmVzZXQgd2l0aCBYTG9nUmVhZGVySW52YWxSZWFkU3RhdGUKLSBJdCBn b2VzIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIFdhbFNuZExvb3AncyBsb29wCgpUaGVyZSBhcmUgc29t ZSBhdHRlbXB0cyBkb25lIGJ5IHRoZSB3YWxzZW5kZXIgdG8gZmx1c2ggdGhlIFdBTCB1c2luZwpY TG9nQmFja2dyb3VuZEZsdXNoLiBIb3dldmVyLCBYTG9nQmFja2dyb3VuZEZsdXNoIG9ubHkgd3Jp dGVzIGNvbXBsZXRlZApibG9ja3MsIG9yIHVwIHRvIHRoZSBsYXRlc3Qga25vd24gYXN5bmMgbHNu LgoKU2luY2UgdGhlIHNlbGVjdCB3YXMgcm9sbGJhY2tlZCwgWExvZ0JhY2tncm91bmRGbHVzaCBk b2Vzbid0IGZsdXNoIHRoZQpuZXh0IHBhcnRpYWwgcGFnZS4KClRoaXMgcGF0Y2ggZml4ZXMgdGhl IGlzc3VlIGJ5IGFkdmFuY2luZyBmbHVzaGluZyBhbGwgcmVjb3JkcyBiZWZvcmUKc2lnbmFsaW5n IHRoZSB3YWxzZW5kZXJzIHRvIHN0b3AsIGF2b2lkaW5nIHRoZSBjYXNlIHdoZXJlIHRoZSB3YWxz ZW5kZXJzCnJlYWQgYSBwYXJ0aWFsbHkgd3JpdHRlbiByZWNvcmQuCi0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jIHwgMTEgKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAx MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDM1NGFjNjQ1 YmRjLi4zMWFmYjI0OWQ1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNjcxMCw2 ICs2NzEwLDggQEAgR2V0TGFzdFNlZ1N3aXRjaERhdGEoWExvZ1JlY1B0ciAqbGFzdFN3aXRjaExT TikKIHZvaWQKIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0dW0gYXJnKQogeworCVhMb2dSZWNQ dHIJV3JpdGVScXN0UHRyOworCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSBhbiBhdXggcHJvY2Vz cyByZXNvdXJjZSBvd25lciB0byB1c2UsIGFuZCB3ZSBzaG91bGQgbm90CiAJICogYmUgaW4gYSB0 cmFuc2FjdGlvbiB0aGF0J3MgaW5zdGFsbGVkIHNvbWUgb3RoZXIgcmVzb3duZXIuCkBAIC02NzIz LDYgKzY3MjUsMTUgQEAgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJZXJlcG9y dChJc1Bvc3RtYXN0ZXJFbnZpcm9ubWVudCA/IExPRyA6IE5PVElDRSwKIAkJCShlcnJtc2coInNo dXR0aW5nIGRvd24iKSkpOwogCisJLyoKKwkgKiBXZSBtYXkgaGF2ZSB1bmZsdXNoZWQgcmVjb3Jk cywgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZmx1c2hlZCBiZWZvcmUKKwkgKiBzdG9wcGluZyB0 aGUgd2Fsc2VuZGVycy4KKwkgKi8KKwlTcGluTG9ja0FjcXVpcmUoJlhMb2dDdGwtPmluZm9fbGNr KTsKKwlXcml0ZVJxc3RQdHIgPSBYTG9nQ3RsLT5Mb2d3cnRScXN0LldyaXRlOworCVNwaW5Mb2Nr UmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOworCVhMb2dGbHVzaChXcml0ZVJxc3RQdHIpOwor CiAJLyoKIAkgKiBTaWduYWwgd2Fsc2VuZGVycyB0byBtb3ZlIHRvIHN0b3BwaW5nIHN0YXRlLgog CSAqLwotLSAKMi41Mi4wCgo= --000000000000683c9a064c21ca1c Content-Type: application/octet-stream; name="v4-0001-Fix-stuck-shutdown-due-to-unflushed-records.patch" Content-Disposition: attachment; filename="v4-0001-Fix-stuck-shutdown-due-to-unflushed-records.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmaul4j60 RnJvbSBhMjMxMGY2NTY5NWQ5NDgxMzU0MTAwYTUwM2M5MmI3Y2Q4MjU1YTJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogVHVlLCAyNCBGZWIgMjAyNiAwOToyNDo0OCArMDEwMApTdWJq ZWN0OiBGaXggc3R1Y2sgc2h1dGRvd24gZHVlIHRvIHVuZmx1c2hlZCByZWNvcmRzCgpTaHV0ZG93 biBzZXF1ZW5jZSBtYXkgYmUgc3R1Y2sgaW5kZWZpbml0ZWx5IHVuZGVyIHRoZSBmb2xsb3dpbmcK Y2lyY3Vtc3RhbmNlczoKLSBEYXRhIGNoZWNrc3VtcyBpcyBlbmFibGVkCi0gQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHdhbHNlbmRlciBpcyBydW5uaW5nCi0gQSBzZWxlY3QgaW4gYW4gZXhwbGljaXQg dHJhbnNhY3Rpb24gdHJpZXMgdG8gcHJ1bmUgYSBmdWxsIGhlYXAgcGFnZSwKICB3cm90ZSBhIEZQ SV9GT1JfSElOVCByZWNvcmQgd2hpY2ggY3Jvc3NlcyB0aGUgcGFnZSBib3VuZGFyeQotIFRoZSBz ZWxlY3QgaXMgcm9sbGJhY2tlZCAob3Iga2lsbGVkKQotICdwZ19jdGwgc3RvcCcgaXMgc2VudAoK VGhlIEZQSV9GT1JfSElOVCByZWNvcmQgaXMgbGlrZWx5IGdvaW5nIHRvIGJlIGEgY29udHJlY29y ZCBhbmQgc3RhcnRzIGEKbmV3IHBhZ2UuIEhvd2V2ZXIsIGFzIHRoZSBzZWxlY3QgaXMgcm9sbGJh Y2tlZCwgWExvZ1NldEFzeW5jWGFjdExTTgppc24ndCBjYWxsZWQgdG8gYWR2YW5jZSB0aGUgTFNO IHRvIGluY2x1ZGUgdGhpcyByZWNvcmQuCgpXaGVuIHRoZSBjaGVja3BvaW50ZXIgc3RhcnRzIFNo dXRkb3duWExPRygpLCBhbGwgd2Fsc2VuZGVycyB3aWxsIGJlCm5vdGlmaWVkIHRvIHN0b3AuIEhv d2V2ZXIsIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdhbHNlbmRlciB3aWxsIGJlCnN0dWNrIGlu IHRoZSBmb2xsb3dpbmcgaW5maW5pdGUgbG9vcDoKLSBUcmllcyB0byByZWFkIHRoZSBsYXN0IEZQ SV9GT1JfSElOVCByZWNvcmQKLSBUaGUgcGFnZSB3aXRoIHRoZSByZWNvcmQgaGVhZGVyIGlzIHJl YWQKLSB0b3RfbGVuID4gbGVuLCB0aGUgcmVjb3JkIG5lZWRzIHRvIGJlIHJlYXNzZW1ibGVkCi0g VHJpZXMgdG8gcmVhZCB0aGUgbmV4dCBwYWdlIGNvbnRhaW5pbmcgdGhlIHJlc3Qgb2YgdGhlIHJl Y29yZC4gSXQgZmFpbHMgc2luY2UgdGhpcyBwYWdlIHdhcyBuZXZlciB3cml0dGVuLgotIHhsb2cg cmVhZGVyIHN0YXRlIGlzIHJlc2V0IHdpdGggWExvZ1JlYWRlckludmFsUmVhZFN0YXRlCi0gSXQg Z29lcyBiYWNrIHRvIHRoZSBzdGFydCBvZiBXYWxTbmRMb29wJ3MgbG9vcAoKVGhlcmUgYXJlIHNv bWUgYXR0ZW1wdHMgZG9uZSBieSB0aGUgd2Fsc2VuZGVyIHRvIGZsdXNoIHRoZSBXQUwgdXNpbmcK WExvZ0JhY2tncm91bmRGbHVzaC4gSG93ZXZlciwgWExvZ0JhY2tncm91bmRGbHVzaCBvbmx5IHdy aXRlcyBjb21wbGV0ZWQKYmxvY2tzLCBvciB1cCB0byB0aGUgbGF0ZXN0IGtub3duIGFzeW5jIGxz bi4KClNpbmNlIHRoZSBzZWxlY3Qgd2FzIHJvbGxiYWNrZWQsIFhMb2dCYWNrZ3JvdW5kRmx1c2gg ZG9lc24ndCBmbHVzaCB0aGUKbmV4dCBwYXJ0aWFsIHBhZ2UuCgpUaGlzIHBhdGNoIGZpeGVzIHRo ZSBpc3N1ZSBieSBhZHZhbmNpbmcgdGhlIGFzeW5jIExTTiwgZXZlbiB3aGVuIHRoZQp0cmFuc2Fj dGlvbiBkb2Vzbid0IGhhdmUgYW4gYXNzaWduZWQgeGlkLiBUaGlzIGFsbG93cwpYTG9nQmFja2dy b3VuZEZsdXNoIHRvIHdyaXRlIHRoZSBuZWNlc3NhcnkgcGFydGlhbCBwYWdlIHdoZW4gY2FsbGVk IGJ5CnRoZSB3YWxzZW5kZXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j IHwgMTMgKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggZWJhNGYwNjMxNjgu LjE3ODZiMzk3NzY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzg2LDggKzE3 ODYsMTkgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlpZiAoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCiAJewogCQkvKiBSZXNldCBYYWN0TGFzdFJlY0VuZCB1 bnRpbCB0aGUgbmV4dCB0cmFuc2FjdGlvbiB3cml0ZXMgc29tZXRoaW5nICovCi0JCWlmICghaXNT dWJYYWN0KQorCQlpZiAoIWlzU3ViWGFjdCAmJiBYYWN0TGFzdFJlY0VuZCAhPSAwKQorCQl7CisJ CQkvKgorCQkJICogRXZlbiBpZiBubyB4aWQgd2FzIGFzc2lnbmVkLCBzb21lIHJlY29yZHMgbWF5 IGhhdmUgYmVlbiB3cml0dGVuCisJCQkgKiBpbiB0aGUgV0FMLiBSZXBvcnQgdGhlIGxhdGVzdCBh c3luYyBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIKKwkJCSAqIGtub3dzIHRvIGZsdXNoIHRo b3NlIHJlY29yZHMuIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gc2h1dHRpbmcKKwkJCSAqIGRvd24s IHdhbHNlbmRlciBtYXkgdXNlIFhMb2dCYWNrZ3JvdW5kRmx1c2ggdG8gdHJpZ2dlciBwZW5kaW5n CisJCQkgKiBXQUwgdG8gYmUgd3JpdHRlbiBvdXQuIElmIHRoZXkncmUgbm90IHRyYWNrZWQgYnkg YXN5bmMgeGFjdAorCQkJICogbHNuLCB0aGV5IHdvbid0IGJlIHdyaXR0ZW4gYnkgWExvZ0JhY2tn cm91bmRGbHVzaC4KKwkJCSAqLworCQkJWExvZ1NldEFzeW5jWGFjdExTTihYYWN0TGFzdFJlY0Vu ZCk7CiAJCQlYYWN0TGFzdFJlY0VuZCA9IDA7CisJCX0KIAkJcmV0dXJuIEludmFsaWRUcmFuc2Fj dGlvbklkOwogCX0KIAotLSAKMi41Mi4wCgo= --000000000000683c9a064c21ca1c--