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 1w0hx2-0028p0-39 for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2026 15:27:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0hx1-00FZGC-1B for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2026 15:27:51 +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.96) (envelope-from ) id 1w0hx0-00FZG4-2y for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2026 15:27:51 +0000 Received: from mail-oo1-xc31.google.com ([2607:f8b0:4864:20::c31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w0hwz-00000002Jlq-0ksX for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2026 15:27:51 +0000 Received: by mail-oo1-xc31.google.com with SMTP id 006d021491bc7-67bb5c2e0fdso466526eaf.0 for ; Thu, 12 Mar 2026 08:27:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773329267; cv=none; d=google.com; s=arc-20240605; b=iLU5ClBWP3Js/W3vZ/IVXhgCkZGU3HvyIGS7X6mSx0sKbuSVMTb2+/OVEJ07am9yjX Z16koY4xMmkWRtd6q//pHVZqD0MXFd3LXx8jqm1rGXAo4gEKq/l2SQHbdNgiue7pm+FF dnyRdx4TkblLTWMaWeEpy7g9zRfSI/S+wLgdAmOMIj2rq+nf2jyhzgb1h/nA/w8pFCFc +UyVoW5+B93l7MWMiv5kWPcDInVKFbZJz5mGeRx2bZycSVvPU3o6RcGJIfdxB/RU6Nh6 GqGCr6Rq94kK656YnB0v2kEma/QBDWz5qGSGO9b/MfDSZOxCW0hAmbXvCVM0Fxag4rzM J9aw== 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=cK8OgWEGdSBMu17FxXMknKvweXXblEdJJaNcYXJW7RY=; fh=SprTjyyUNMFOaPK7zUpaC1EEovCYhXioP7Zs2WMpltw=; b=IB0znSfp+FhHw++Qxi1vmBSHDLxtdE1Nou7s1V/mfUZmusoIAJyahMZbM8nzdBmBIr 6uu9UZJJAarOKHUvqAJu8bwtiLXAtWNO7ODtyJjcTzKFXvrTtqXgMPFM5cJBHxQXnb15 8SPp6M5W3+edoaMJI4zrAXPmD4GBi1jZztIMfxdiMWTENR3UGLiYUF1eNj0g/Mm7E2ka XSZX/1ShM5ejFodHBp2DA+VNxUCp0ItHPojcpjkGrfoHVqtRyztd55LJ19konj76Gu4Z M/PXQ6VoGC6bZhlgl6qTODa7/eWS934/Ikcx69ffGcNCXZAiQMii5OElqUtmOAAS/u7+ C2mQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773329267; x=1773934067; darn=lists.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=cK8OgWEGdSBMu17FxXMknKvweXXblEdJJaNcYXJW7RY=; b=HGVfgkOSjROEbKhVCyZqSmHKk42NYGkwgs1s9y4Ec/YSbGrW6NWbh6ysqK83somVSb ZbcvSZ/ZXHqygE797ts35C2n28KDsYKebLquDVma0g/ZWKddCXLPvf89FM/DAdNLtkrg Gyoe3abp/RiqouOiXiA7ZwTm0zyLn5VZgQAAisT5eshiug2TDztx6WXKdyLw3D5xlPCv 4vN7rcTEpDcSZSLp8PFV6l91BHg/3noIij7k5v6aO6abcxepcxXdhwSU3+ioGDBL3n9Z R6EgWzdlk4ooTipQAVI4WrtfacKKXA6NtjPHMXQnK32sPDpVdY2F1yQ4ZtvlJQnWA4pk Y6VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773329267; x=1773934067; 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=cK8OgWEGdSBMu17FxXMknKvweXXblEdJJaNcYXJW7RY=; b=eliy6lCA8RqLWJYxUK3bv06+rexLwDmszPMPz53jOaMZ/VUkA5dEmS8nzHutrMvmRd mArByVTEy8OdbTllLFmySsdrb+f5FKEXgzzbULfmGMFLCYh7Q0GXbml33xRSVeYK/GI4 iT1d4CJKIlLaJH+J6xTKTdJWE2wBroxc9DRG6aUsbE24qLUY7QZ10srh0pBj1/oyip9U 5gJ/hSLSLbFZkYZpb8lfzvhTrwVk6GNz7oN1UTiyWTC2oj1cqVFp47/fm0Ba4CGN5h3n Q+syzX5B+ddMOzz+BjjUQlyX8T/tnUbEWIWbMtbzKTCfXoVJsiTF4okMibKSGkJw0Nt5 k6Yw== X-Gm-Message-State: AOJu0Yzx3hNJJtBiu11yEzdRQNhxPI2vwlyUNRSLMSB16ruH/k2Z9u+f jz8nbby5doH0Hqkd6NhuXbAZMxEfWwtDLF4CiV0oAYp8tLrIuf0pq/WgRZnPLqXpoDyYm9Hp6be Zb9SZxLQmu+MY5/AS4swS7UazC7sbURc= X-Gm-Gg: ATEYQzwGpxrWZ54HX7PDN2t7/QcqHuUwBgPq00EYwNVX++jVLimYZg/JP8Kd7QkR0wq SzQoA/Bp6/MX9ksy5/vnY2+CTe823iS+/DW1Lg9szR6YjaGGFK9RwtjbQCezMy5t/rR8qN/mRVp PrfsZlp6x7ZSVvwzl2h+cnHvxxYRBmAHFAbmD3TtaNgYHEPqyrCURYZMgsrDQwlFhUXZLdML27O UzGqZ5VyGTDjTUDw445UviLxwd34XacY9rxTbZ4vU8/vC1o/HM2kxKwE3iQawIUSIkiaUX7qU8I 1ZEQ3qXYO3zKU4JxGyUf0BKRpW/4I/SxwLxYWWw/UQ== X-Received: by 2002:a4a:ec44:0:b0:67b:af21:1385 with SMTP id 006d021491bc7-67bc8ad7eabmr3780234eaf.75.1773329266901; Thu, 12 Mar 2026 08:27:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Fujii Masao Date: Fri, 13 Mar 2026 00:27:32 +0900 X-Gm-Features: AaiRm51BI0CCyR5Da_-a3FuuLu9c_GSuzQjLLLJc4bMBsk5O3eG1dRqX52kAc3s Message-ID: Subject: Re: pg_stat_replication.*_lag sometimes shows NULL during active replication To: Shinya Kato Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000065eee064cd56552" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000065eee064cd56552 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 11, 2026 at 11:39=E2=80=AFAM Shinya Kato wrote: > > On Tue, Mar 10, 2026 at 10:54=E2=80=AFAM Fujii Masao wrote: > > Even with your latest patch, if we remove fullyAppliedLastTime, and set > > clearLagTimes to true when applyPtr =3D=3D sentPtr && noLagSamples && > > positionsUnchanged, > > wouldn't the time for the lag to become NULL be almost the same as > > wal_receiver_status_interval? > > > > The documentation doesn't clearly specify how long it should take for > > the lag to become NULL, so doubling that time might be acceptable. > > However, if we can keep it roughly the same without much complexity, > > I think that would be preferable. > > > > Thought? > > Thank you for the suggestion. I tested this by removing > fullyAppliedLastTime, but even with synchronous replication, NULL > still appears. Here is why: > > - Reply 1 (flush notification): positions =3D X. Lag samples are > consumed with real values, so noLagSamples =3D false. clearLagTimes is > not set, and prevPtrs =3D X is saved. > > - Reply 2 (force_reply): positions =3D X again. Here, noLagSamples =3D > true and positionsUnchanged =3D true. Since applyPtr =3D=3D sentPtr, > clearLagTimes is set to true, resulting in a NULL value. > > Therefore, I believe fullyAppliedLastTime is still necessary to ensure > that the previous reply also contained no lag samples. Thanks for testing and for the clarification! You're right. However, if we apply this change, the time required for the lag information= to be reset would effectively double. I start wondering if that's really acceptable, especially for back branches. Although the docs doesn't clearly specify this timing, doubling it could affect systems that monitor replication lag, for example. It might still be reasonable to apply such a change in master, though. On further thought, the root cause seems to be that walreceiver can send two consecutive status reply messages with identical WAL locations even when wal_receiver_status_interval has not yet elapsed. Addressing that behavior directly might resolve the issue you reported. I've attached a PoC patch that does this. Thought? Regards, --=20 Fujii Masao --000000000000065eee064cd56552 Content-Type: application/octet-stream; name="v4-0001-Avoid-sending-duplicate-WAL-locations-in-standby-.patch" Content-Disposition: attachment; filename="v4-0001-Avoid-sending-duplicate-WAL-locations-in-standby-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmnmg63l0 RnJvbSBjMjMxZDFiMTI5ZDFlOGE3NGJjNDdiYWRjYzllZTNlOGQ0ZTA0ZTE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFRodSwgMTIgTWFyIDIwMjYgMjA6MjY6MDEgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0XSBB dm9pZCBzZW5kaW5nIGR1cGxpY2F0ZSBXQUwgbG9jYXRpb25zIGluIHN0YW5kYnkgc3RhdHVzCiBy ZXBsaWVzLgoKUHJldmlvdXNseSwgd2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzIGFwcGxpZWQgV0FM IGFuZCByZXF1ZXN0ZWQgd2FscmVjZWl2ZXIKdG8gc2VuZCBhbiBhcHBseSBub3RpZmljYXRpb24g dG8gdGhlIHByaW1hcnksIHdhbHJlY2VpdmVyIHNlbnQgYSBzdGF0dXMgcmVwbHkKdW5jb25kaXRp b25hbGx5LCBldmVuIGlmIHRoZSBXQUwgbG9jYXRpb25zIGhhZCBub3QgYWR2YW5jZWQgc2luY2UK dGhlIHByZXZpb3VzIHVwZGF0ZS4KCkFzIGEgcmVzdWx0LCB0aGUgc3RhbmRieSBjb3VsZCBzZW5k IHR3byBjb25zZWN1dGl2ZSBzdGF0dXMgcmVwbHkgbWVzc2FnZXMKd2l0aCBpZGVudGljYWwgV0FM IGxvY2F0aW9ucyBldmVuIHRob3VnaCB3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsIGhhZApu b3QgeWV0IGVsYXBzZWQuIFRoaXMgY291bGQgdW5leHBlY3RlZGx5IHJlc2V0IHRoZSByZXBvcnRl ZCByZXBsaWNhdGlvbiBsYWcsCm1ha2luZyBpdCBkaWZmaWN1bHQgZm9yIHVzZXJzIHRvIG1vbml0 b3IgbGFnLiBUaGUgc2Vjb25kIG1lc3NhZ2Ugd2FzIGFsc28KdW5uZWNlc3NhcnkgYmVjYXVzZSBp dCByZXBvcnRlZCBubyBwcm9ncmVzcy4KClRoaXMgY29tbWl0IHVwZGF0ZXMgd2FscmVjZWl2ZXIg dG8gc2VuZCBhIHJlcGx5IG9ubHkgd2hlbiB0aGUgYXBwbHkgbG9jYXRpb24KaGFzIGFkdmFuY2Vk IHNpbmNlIHRoZSBsYXN0IHN0YXR1cyB1cGRhdGUsIGV2ZW4gd2hlbiB0aGUgc3RhcnR1cCBwcm9j ZXNzCnJlcXVlc3RzIGEgbm90aWZpY2F0aW9uLgotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmMgfCA3MCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgfCAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaCB8ICA0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5j CmluZGV4IGZhYmUzYzczMDM0Li5mNWQ1Mzc5ZWRjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5jCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHZvaWQgWExvZ1dhbFJjdldy aXRlKGNoYXIgKmJ1ZiwgU2l6ZSBuYnl0ZXMsIFhMb2dSZWNQdHIgcmVjcHRyLAogCQkJCQkJCVRp bWVMaW5lSUQgdGxpKTsKIHN0YXRpYyB2b2lkIFhMb2dXYWxSY3ZGbHVzaChib29sIGR5aW5nLCBU aW1lTGluZUlEIHRsaSk7CiBzdGF0aWMgdm9pZCBYTG9nV2FsUmN2Q2xvc2UoWExvZ1JlY1B0ciBy ZWNwdHIsIFRpbWVMaW5lSUQgdGxpKTsKLXN0YXRpYyB2b2lkIFhMb2dXYWxSY3ZTZW5kUmVwbHko Ym9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOworc3RhdGljIHZvaWQgWExvZ1dhbFJjdlNl bmRSZXBseShib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSwgYm9vbCByZXBseUFwcGx5KTsK IHN0YXRpYyB2b2lkIFhMb2dXYWxSY3ZTZW5kSFNGZWVkYmFjayhib29sIGltbWVkKTsKIHN0YXRp YyB2b2lkIFByb2Nlc3NXYWxTbmRyTWVzc2FnZShYTG9nUmVjUHRyIHdhbEVuZCwgVGltZXN0YW1w VHogc2VuZFRpbWUpOwogc3RhdGljIHZvaWQgV2FsUmN2Q29tcHV0ZU5leHRXYWtldXAoV2FsUmN2 V2FrZXVwUmVhc29uIHJlYXNvbiwgVGltZXN0YW1wVHogbm93KTsKQEAgLTQxNyw3ICs0MTcsNyBA QCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAkJCQlXYWxSY3ZDb21wdXRlTmV4dFdha2V1cChpLCBub3cpOwogCiAJCQkv KiBTZW5kIGluaXRpYWwgcmVwbHkvZmVlZGJhY2sgbWVzc2FnZXMuICovCi0JCQlYTG9nV2FsUmN2 U2VuZFJlcGx5KHRydWUsIGZhbHNlKTsKKwkJCVhMb2dXYWxSY3ZTZW5kUmVwbHkodHJ1ZSwgZmFs c2UsIGZhbHNlKTsKIAkJCVhMb2dXYWxSY3ZTZW5kSFNGZWVkYmFjayh0cnVlKTsKIAogCQkJLyog TG9vcCB1bnRpbCBlbmQtb2Ytc3RyZWFtaW5nIG9yIGVycm9yICovCkBAIC00OTMsNyArNDkzLDcg QEAgV2FsUmVjZWl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJCQkJCX0KIAogCQkJCQkvKiBMZXQgdGhlIHByaW1hcnkga25vdyB0aGF0 IHdlIHJlY2VpdmVkIHNvbWUgZGF0YS4gKi8KLQkJCQkJWExvZ1dhbFJjdlNlbmRSZXBseShmYWxz ZSwgZmFsc2UpOworCQkJCQlYTG9nV2FsUmN2U2VuZFJlcGx5KGZhbHNlLCBmYWxzZSwgZmFsc2Up OwogCiAJCQkJCS8qCiAJCQkJCSAqIElmIHdlJ3ZlIHdyaXR0ZW4gc29tZSByZWNvcmRzLCBmbHVz aCB0aGVtIHRvIGRpc2sgYW5kCkBAIC01MzksNyArNTM5LDcgQEAgV2FsUmVjZWl2ZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQkJCVJl c2V0TGF0Y2goTXlMYXRjaCk7CiAJCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJCQkJ aWYgKHdhbHJjdi0+Zm9yY2VfcmVwbHkpCisJCQkJCWlmICh3YWxyY3YtPnJlcGx5X2FwcGx5KQog CQkJCQl7CiAJCQkJCQkvKgogCQkJCQkJICogVGhlIHJlY292ZXJ5IHByb2Nlc3MgaGFzIGFza2Vk IHVzIHRvIHNlbmQgYXBwbHkKQEAgLTU0Nyw5ICs1NDcsOSBAQCBXYWxSZWNlaXZlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCQkJCSAq IGZhbHNlIGluIHNoYXJlZCBtZW1vcnkgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcGx5LCBzbwogCQkJ CQkJICogd2UgZG9uJ3QgbWlzcyBhIG5ldyByZXF1ZXN0IGZvciBhIHJlcGx5LgogCQkJCQkJICov Ci0JCQkJCQl3YWxyY3YtPmZvcmNlX3JlcGx5ID0gZmFsc2U7CisJCQkJCQl3YWxyY3YtPnJlcGx5 X2FwcGx5ID0gZmFsc2U7CiAJCQkJCQlwZ19tZW1vcnlfYmFycmllcigpOwotCQkJCQkJWExvZ1dh bFJjdlNlbmRSZXBseSh0cnVlLCBmYWxzZSk7CisJCQkJCQlYTG9nV2FsUmN2U2VuZFJlcGx5KGZh bHNlLCBmYWxzZSwgdHJ1ZSk7CiAJCQkJCX0KIAkJCQl9CiAJCQkJaWYgKHJjICYgV0xfVElNRU9V VCkKQEAgLTU5NSw3ICs1OTUsNyBAQCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCQkJCXdha2V1cFtXQUxSQ1ZfV0FL RVVQX1BJTkddID0gVElNRVNUQU1QX0lORklOSVRZOwogCQkJCQl9CiAKLQkJCQkJWExvZ1dhbFJj dlNlbmRSZXBseShyZXF1ZXN0UmVwbHksIHJlcXVlc3RSZXBseSk7CisJCQkJCVhMb2dXYWxSY3ZT ZW5kUmVwbHkocmVxdWVzdFJlcGx5LCByZXF1ZXN0UmVwbHksIGZhbHNlKTsKIAkJCQkJWExvZ1dh bFJjdlNlbmRIU0ZlZWRiYWNrKGZhbHNlKTsKIAkJCQl9CiAJCQl9CkBAIC04ODYsNyArODg2LDcg QEAgWExvZ1dhbFJjdlByb2Nlc3NNc2codW5zaWduZWQgY2hhciB0eXBlLCBjaGFyICpidWYsIFNp emUgbGVuLCBUaW1lTGluZUlEIHRsaSkKIAogCQkJCS8qIElmIHRoZSBwcmltYXJ5IHJlcXVlc3Rl ZCBhIHJlcGx5LCBzZW5kIG9uZSBpbW1lZGlhdGVseSAqLwogCQkJCWlmIChyZXBseVJlcXVlc3Rl ZCkKLQkJCQkJWExvZ1dhbFJjdlNlbmRSZXBseSh0cnVlLCBmYWxzZSk7CisJCQkJCVhMb2dXYWxS Y3ZTZW5kUmVwbHkodHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAkJCQlicmVhazsKIAkJCX0KIAkJZGVm YXVsdDoKQEAgLTEwNTMsNyArMTA1Myw3IEBAIFhMb2dXYWxSY3ZGbHVzaChib29sIGR5aW5nLCBU aW1lTGluZUlEIHRsaSkKIAkJLyogQWxzbyBsZXQgdGhlIHByaW1hcnkga25vdyB0aGF0IHdlIG1h ZGUgc29tZSBwcm9ncmVzcyAqLwogCQlpZiAoIWR5aW5nKQogCQl7Ci0JCQlYTG9nV2FsUmN2U2Vu ZFJlcGx5KGZhbHNlLCBmYWxzZSk7CisJCQlYTG9nV2FsUmN2U2VuZFJlcGx5KGZhbHNlLCBmYWxz ZSwgZmFsc2UpOwogCQkJWExvZ1dhbFJjdlNlbmRIU0ZlZWRiYWNrKGZhbHNlKTsKIAkJfQogCX0K QEAgLTExMDcsMjQgKzExMDcsMzMgQEAgWExvZ1dhbFJjdkNsb3NlKFhMb2dSZWNQdHIgcmVjcHRy LCBUaW1lTGluZUlEIHRsaSkKIH0KIAogLyoKLSAqIFNlbmQgcmVwbHkgbWVzc2FnZSB0byBwcmlt YXJ5LCBpbmRpY2F0aW5nIG91ciBjdXJyZW50IFdBTCBsb2NhdGlvbnMsIG9sZGVzdAotICogeG1p biBhbmQgdGhlIGN1cnJlbnQgdGltZS4KKyAqIFNlbmQgcmVwbHkgbWVzc2FnZSB0byBwcmltYXJ5 LCBpbmRpY2F0aW5nIG91ciBjdXJyZW50IFdBTCBsb2NhdGlvbnMgYW5kCisgKiB0aW1lLgogICoK LSAqIElmICdmb3JjZScgaXMgbm90IHNldCwgdGhlIG1lc3NhZ2UgaXMgb25seSBzZW50IGlmIGVu b3VnaCB0aW1lIGhhcwotICogcGFzc2VkIHNpbmNlIGxhc3Qgc3RhdHVzIHVwZGF0ZSB0byByZWFj aCB3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsLgotICogSWYgd2FsX3JlY2VpdmVyX3N0YXR1 c19pbnRlcnZhbCBpcyBkaXNhYmxlZCBhbHRvZ2V0aGVyIGFuZCAnZm9yY2UnIGlzCi0gKiBmYWxz ZSwgdGhpcyBpcyBhIG5vLW9wLgorICogVGhlIG1lc3NhZ2UgaXMgc2VudCBpZiAnZm9yY2UnIGlz IHNldCwgaWYgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUKKyAqIGxhc3QgdXBkYXRl IHRvIHJlYWNoIHdhbF9yZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWwsIG9yIGlmIFdBTCBsb2NhdGlv bnMgaGF2ZQorICogYWR2YW5jZWQgc2luY2UgdGhlIHByZXZpb3VzIHN0YXR1cyB1cGRhdGUuIElm IHdhbF9yZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWwKKyAqIGlzIGRpc2FibGVkIGFuZCAnZm9yY2Un IGlzIGZhbHNlLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4gU2V0ICdmb3JjZScgdG8KKyAq IHNlbmQgdGhlIG1lc3NhZ2UgdW5jb25kaXRpb25hbGx5LgorICoKKyAqIFNldCAncmVwbHlBcHBs eScgd2hlbiB0aGUgYXBwbHkgbG9jYXRpb24gaXMgZXhwZWN0ZWQgdG8gaGF2ZSBhZHZhbmNlZCBm cm9tIHRoZQorICogcHJldmlvdXMgdXBkYXRlIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgc3RhcnR1 cCBwcm9jZXNzIHJlcXVlc3RzIGFuIGFwcGx5CisgKiBub3RpZmljYXRpb24gdG8gYmUgc2VudCB0 byB0aGUgcHJpbWFyeSkuIEluIHRoYXQgY2FzZSwgdGhlIHdyaXRlLCBmbHVzaCwgYW5kCisgKiBh cHBseSBsb2NhdGlvbnMgYXJlIGNvbXBhcmVkIHRvIGRldGVybWluZSB3aGV0aGVyIFdBTCBoYXMg YWR2YW5jZWQuCisgKiBPdGhlcndpc2UgdGhlIGFwcGx5IGxvY2F0aW9uIGlzIGFzc3VtZWQgdW5j aGFuZ2VkIGFuZCBpcyBub3QgY2hlY2tlZCwKKyAqIHNvIG9ubHkgdGhlIHdyaXRlIGFuZCBmbHVz aCBsb2NhdGlvbnMgYXJlIGNvbnNpZGVyZWQuCiAgKgogICogSWYgJ3JlcXVlc3RSZXBseScgaXMg dHJ1ZSwgcmVxdWVzdHMgdGhlIHNlcnZlciB0byByZXBseSBpbW1lZGlhdGVseSB1cG9uCiAgKiBy ZWNlaXZpbmcgdGhpcyBtZXNzYWdlLiBUaGlzIGlzIHVzZWQgZm9yIGhlYXJ0YmVhdHMsIHdoZW4g YXBwcm9hY2hpbmcKICAqIHdhbF9yZWNlaXZlcl90aW1lb3V0LgogICovCiBzdGF0aWMgdm9pZAot WExvZ1dhbFJjdlNlbmRSZXBseShib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSkKK1hMb2dX YWxSY3ZTZW5kUmVwbHkoYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHksIGJvb2wgcmVwbHlB cHBseSkKIHsKIAlzdGF0aWMgWExvZ1JlY1B0ciB3cml0ZVB0ciA9IEludmFsaWRYTG9nUmVjUHRy OwogCXN0YXRpYyBYTG9nUmVjUHRyIGZsdXNoUHRyID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JWExv Z1JlY1B0cglhcHBseVB0cjsKKwlzdGF0aWMgWExvZ1JlY1B0ciBhcHBseVB0ciA9IEludmFsaWRY TG9nUmVjUHRyOworCVhMb2dSZWNQdHIJbGF0ZXN0QXBwbHlQdHIgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlUaW1lc3RhbXBUeiBub3c7CiAKIAkvKgpAQCAtMTE0MCwxNyArMTE0OSwxOSBAQCBYTG9n V2FsUmN2U2VuZFJlcGx5KGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KQogCS8qCiAJICog V2UgY2FuIGNvbXBhcmUgdGhlIHdyaXRlIGFuZCBmbHVzaCBwb3NpdGlvbnMgdG8gdGhlIGxhc3Qg bWVzc2FnZSB3ZQogCSAqIHNlbnQgd2l0aG91dCB0YWtpbmcgYW55IGxvY2ssIGJ1dCB0aGUgYXBw bHkgcG9zaXRpb24gcmVxdWlyZXMgYSBzcGluCi0JICogbG9jaywgc28gd2UgZG9uJ3QgY2hlY2sg dGhhdCB1bmxlc3Mgc29tZXRoaW5nIGVsc2UgaGFzIGNoYW5nZWQgb3IgMTAKLQkgKiBzZWNvbmRz IGhhdmUgcGFzc2VkLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBhcHBseSBXQUwgbG9jYXRpb24gd2ls bAotCSAqIGFwcGVhciwgZnJvbSB0aGUgcHJpbWFyeSdzIHBvaW50IG9mIHZpZXcsIHRvIGxhZyBz bGlnaHRseSwgYnV0IHNpbmNlCi0JICogdGhpcyBpcyBvbmx5IGZvciByZXBvcnRpbmcgcHVycG9z ZXMgYW5kIG9ubHkgb24gaWRsZSBzeXN0ZW1zLCB0aGF0J3MKLQkgKiBwcm9iYWJseSBPSy4KKwkg KiBsb2NrLCBzbyB3ZSBkb24ndCBjaGVjayB0aGF0IHVubGVzcyBpdCBpcyBleHBlY3RlZCB0byBh ZHZhbmNlIHNpbmNlIHRoZQorCSAqIHByZXZpc291IHVwZGF0ZSwgaS5lLiwgd2hlbiAncmVwbHlB cHBseScgaXMgdHJ1ZS4KIAkgKi8KLQlpZiAoIWZvcmNlCi0JCSYmIHdyaXRlUHRyID09IExvZ3N0 cmVhbVJlc3VsdC5Xcml0ZQotCQkmJiBmbHVzaFB0ciA9PSBMb2dzdHJlYW1SZXN1bHQuRmx1c2gK LQkJJiYgbm93IDwgd2FrZXVwW1dBTFJDVl9XQUtFVVBfUkVQTFldKQotCQlyZXR1cm47CisJaWYg KCFmb3JjZSAmJiBub3cgPCB3YWtldXBbV0FMUkNWX1dBS0VVUF9SRVBMWV0pCisJeworCQlpZiAo cmVwbHlBcHBseSkKKwkJCWxhdGVzdEFwcGx5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxM KTsKKworCQlpZiAod3JpdGVQdHIgPT0gTG9nc3RyZWFtUmVzdWx0LldyaXRlCisJCQkmJiBmbHVz aFB0ciA9PSBMb2dzdHJlYW1SZXN1bHQuRmx1c2gKKwkJCSYmICghcmVwbHlBcHBseSB8fCBhcHBs eVB0ciA9PSBsYXRlc3RBcHBseVB0cikpCisJCQlyZXR1cm47CisJfQogCiAJLyogTWFrZSBzdXJl IHdlIHdha2UgdXAgd2hlbiBpdCdzIHRpbWUgdG8gc2VuZCBhbm90aGVyIHJlcGx5LiAqLwogCVdh bFJjdkNvbXB1dGVOZXh0V2FrZXVwKFdBTFJDVl9XQUtFVVBfUkVQTFksIG5vdyk7CkBAIC0xMTU4 LDcgKzExNjksOCBAQCBYTG9nV2FsUmN2U2VuZFJlcGx5KGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVz dFJlcGx5KQogCS8qIENvbnN0cnVjdCBhIG5ldyBtZXNzYWdlICovCiAJd3JpdGVQdHIgPSBMb2dz dHJlYW1SZXN1bHQuV3JpdGU7CiAJZmx1c2hQdHIgPSBMb2dzdHJlYW1SZXN1bHQuRmx1c2g7Ci0J YXBwbHlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWFwcGx5UHRyID0gKGxhdGVz dEFwcGx5UHRyID09IEludmFsaWRYTG9nUmVjUHRyKSA/CisJCUdldFhMb2dSZXBsYXlSZWNQdHIo TlVMTCkgOiBsYXRlc3RBcHBseVB0cjsKIAogCXJlc2V0U3RyaW5nSW5mbygmcmVwbHlfbWVzc2Fn ZSk7CiAJcHFfc2VuZGJ5dGUoJnJlcGx5X21lc3NhZ2UsIFBxUmVwbE1zZ19TdGFuZGJ5U3RhdHVz VXBkYXRlKTsKQEAgLTEzODIsNyArMTM5NCw3IEBAIFdhbFJjdkZvcmNlUmVwbHkodm9pZCkKIHsK IAlQcm9jTnVtYmVyCXByb2NubzsKIAotCVdhbFJjdi0+Zm9yY2VfcmVwbHkgPSB0cnVlOworCVdh bFJjdi0+cmVwbHlfYXBwbHkgPSB0cnVlOwogCS8qIGZldGNoaW5nIHRoZSBwcm9jIG51bWJlciBp cyBwcm9iYWJseSBhdG9taWMsIGJ1dCBkb24ndCByZWx5IG9uIGl0ICovCiAJU3BpbkxvY2tBY3F1 aXJlKCZXYWxSY3YtPm11dGV4KTsKIAlwcm9jbm8gPSBXYWxSY3YtPnByb2NubzsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNzlmYzE5MmIxNzEuLmU2NzI3ODdlYzA0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMjUwMiw3ICsyNTAyLDcgQEAgUHJvY2Vz c1N0YW5kYnlSZXBseU1lc3NhZ2Uodm9pZCkKIAkgKiB1bnRpbCBtb3JlIFdBTCB0cmFmZmljIGFy cml2ZXMuCiAJICovCiAJY2xlYXJMYWdUaW1lcyA9IGZhbHNlOwotCWlmIChhcHBseVB0ciA9PSBz ZW50UHRyKQorCWlmIChhcHBseVB0ciA9PSBzZW50UHRyICYmIGZsdXNoUHRyID09IHNlbnRQdHIp CiAJewogCQlpZiAoZnVsbHlBcHBsaWVkTGFzdFRpbWUpCiAJCQljbGVhckxhZ1RpbWVzID0gdHJ1 ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDliOWJkOTE2MzE0Li4w MjRlYmNmNGYzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBAIC0xNTYs MTEgKzE1NiwxMSBAQCB0eXBlZGVmIHN0cnVjdAogCXBnX2F0b21pY191aW50NjQgd3JpdHRlblVw dG87CiAKIAkvKgotCSAqIGZvcmNlIHdhbHJlY2VpdmVyIHJlcGx5PyAgVGhpcyBkb2Vzbid0IG5l ZWQgdG8gYmUgbG9ja2VkOyBtZW1vcnkKKwkgKiByZXF1ZXN0IHdhbHJlY2VpdmVyIHJlcGx5PyAg VGhpcyBkb2Vzbid0IG5lZWQgdG8gYmUgbG9ja2VkOyBtZW1vcnkKIAkgKiBiYXJyaWVycyBmb3Ig b3JkZXJpbmcgYXJlIHN1ZmZpY2llbnQuICBCdXQgd2UgZG8gbmVlZCBhdG9taWMgZmV0Y2ggYW5k CiAJICogc3RvcmUgc2VtYW50aWNzLCBzbyB1c2Ugc2lnX2F0b21pY190LgogCSAqLwotCXNpZ19h dG9taWNfdCBmb3JjZV9yZXBseTsJLyogdXNlZCBhcyBhIGJvb2wgKi8KKwlzaWdfYXRvbWljX3Qg cmVwbHlfYXBwbHk7CS8qIHVzZWQgYXMgYSBib29sICovCiB9IFdhbFJjdkRhdGE7CiAKIGV4dGVy biBQR0RMTElNUE9SVCBXYWxSY3ZEYXRhICpXYWxSY3Y7Ci0tIAoyLjUxLjIKCg== --000000000000065eee064cd56552--