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 1vfXu7-002gTI-2j for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 06:29:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfXu6-003D3A-38 for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 06:29:23 +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 1vfXu6-003D32-23 for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 06:29:22 +0000 Received: from mail-dl1-x122e.google.com ([2607:f8b0:4864:20::122e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfXu4-000AHd-2V for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 06:29:22 +0000 Received: by mail-dl1-x122e.google.com with SMTP id a92af1059eb24-1220154725fso2964474c88.0 for ; Mon, 12 Jan 2026 22:29:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768285758; x=1768890558; 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=GSZUpoE/WjgDePw8PupNa1E03YcssKBUz0ZHT5zPZtM=; b=NEaFuv25NUmWYQdlo6F6JEyv9oTguM4wyTz5rbwViNbFpEuDodFLCk+1VCCQyvuKtg D5Bf0qh0p1/7tYhkEukfVlBihsq+Tie/VbvYWAvhCkNFlT8eg9ecsVeDRbeBFubQctAz 7T/dAsMjzljjP4f8XvkPZdgWurW9wg5kwDjo9AjSU10YnVv/pV5IIHZhbTVatiVN3TFF UxASJA217NamRv4VLly4Z0v7LOMH0AuMHq+eqkrUiNASQnmXU3ro9pB7JlM9Mkt/CS86 XfkaVHUl/GPZkJfj9M10AN3/8w2wLdEoln0ohAWYfSiLVTglMj6dFk/vQ9QyhTbrGmno H74Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768285758; x=1768890558; 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=GSZUpoE/WjgDePw8PupNa1E03YcssKBUz0ZHT5zPZtM=; b=uWcG/WuNciUqPtqrWBiAfd69IcO502BwRgP0dq03VUMyPT9iJI/avhUIIuNroTg8C4 5Gruh0lWiLBVeaRp2vEjCQmgCJJ8jD8AufQEZ8+xqCtgkHGq31ZqvQhY2WgslH/R3+IK CynbL+Mk22jIsUQCfumVQKN6uNVQ+9z0gjIKwhMfeoc0gw2OFOvt5JUhEzzRWmFjIV7d IultAttgGFY4O5GItug8Ml81D0VFcZ0uPoteg43CPvftr9OSzfdHZr5Mifc/KU3v/shS beqe+wh/wjPd7SWlt9a/QJK37jyYtAKK0/DiOKFA1JoDvsafymJYfkalwnTbNjGyCOq1 cfIg== X-Forwarded-Encrypted: i=1; AJvYcCWkICoeoSl7bBbKOzAIPGjK6eAcY1AXZ/Y4rvHtQWeLuRdYdQG7UJZNq7hqz852glo7eq9E2x1u9srSCZnd@lists.postgresql.org X-Gm-Message-State: AOJu0Yy2UOYfpLoVXj92+RUEqrDn0IimerrV5T2c+hmD/Y91Cz9FfyUE 1xm4ErmiTYJh10zStHjmPLTVZcJEtHEnMvp+j+Gn4AODQ9ZUSBU1jW8xOKtC3Q2NKE/h69YPcLL LNrXkLG8y61RzBDv7mJEShwkjewTcucA= X-Gm-Gg: AY/fxX6R6S7vVJA9C91sC4V3JoX/671w8DknHM7x/EZLGL284moJo3b062AYrHQ1v/r HwD8crNK/6VtVAM572PxhK3TAlxdGDvsGhoO+yi5JFl9sKhVEHRlz5T5AfNfbhTT/CxolM1iS/l fQEzL3ngkrSBhwklt7FwCi6Pd4YiyePGoNEJtsCetHIIRqo4UHqjMjJugWeND7pt6OP4+KGhyoY svayClVE3swRvVvXCym/4hW/k/QDAEhyK6XRflMCE4eI+e8QaoxpDkgDplW5uemvC76Wzs= X-Received: by 2002:a05:7022:307:b0:11d:fc25:af63 with SMTP id a92af1059eb24-1232b5b936bmr2049510c88.11.1768285758361; Mon, 12 Jan 2026 22:29:18 -0800 (PST) MIME-Version: 1.0 References: <695cea55.050a0220.253a0.ed88SMTPIN_ADDED_BROKEN@mx.google.com> <695e1440.170a0220.1f9596.3d45SMTPIN_ADDED_BROKEN@mx.google.com> <695feb17.170a0220.1fcace.843fSMTPIN_ADDED_BROKEN@mx.google.com> <6964cc77.170a0220.18c2b8.6cd8SMTPIN_ADDED_BROKEN@mx.google.com> In-Reply-To: <6964cc77.170a0220.18c2b8.6cd8SMTPIN_ADDED_BROKEN@mx.google.com> From: Soumya S Murali Date: Tue, 13 Jan 2026 11:59:43 +0530 X-Gm-Features: AZwV_QgNQCSmE78WSyPisOJs-O5LBWpehZktAL2Lm9JIq-it7OrKmIfZEG9BTM0 Message-ID: Subject: Re: [PATCH] Expose checkpoint reason to completion log messages. To: Michael Banck Cc: Fujii Masao , VASUKI M , Andres Freund , PostgreSQL Hackers , =?UTF-8?Q?=C3=81lvaro_Herrera?= , melanieplageman@gmail.com, juanjo.santamaria@gmail.com Content-Type: multipart/mixed; boundary="0000000000007d8e3506483f1c66" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007d8e3506483f1c66 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi all, On Mon, Jan 12, 2026 at 3:57=E2=80=AFPM Michael Banck wrot= e: > > Hi, > > On Mon, Jan 12, 2026 at 12:53:54PM +0530, Soumya S Murali wrote: > > Based on the feedback received, I have reworked and implemented a > > helper function so that both checkpoint start and completion messages > > use the same wording and would remain in sync, extending the same > > reason reporting to restart points for completeness and better > > observability, ensuring consistent terminology with existing log > > output, had removed the previous use of global state and instead > > passed checkpoint flags explicitly and have fixed formatting and > > whitespace issues noted during review. > > Also, I have tested and validated the logic successfully. I have > > attached the updated patch for further review. > > Kindly review the patch and let me know the feedback. > > > > Regards, > > Soumya > > > From 30e3c62695a643daf96ffca3b504a79d2a761f77 Mon Sep 17 00:00:00 2001 > > From: Soumya > > Date: Mon, 12 Jan 2026 12:36:29 +0530 > > Subject: [PATCH] Expose checkpoint reason in completion log messages > > > > --- > > src/backend/access/transam/xlog.c | 78 ++++++++++++++++------- > > src/test/recovery/t/019_replslot_limit.pl | 2 +- > > 2 files changed, 55 insertions(+), 25 deletions(-) > > > > diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/tra= nsam/xlog.c > > index 22d0a2e8c3..63d1e56ca1 100644 > > --- a/src/backend/access/transam/xlog.c > > +++ b/src/backend/access/transam/xlog.c > > @@ -6714,6 +6714,49 @@ ShutdownXLOG(int code, Datum arg) > > } > > } > > > > +/* > > +* Format checkpoint reason flags consistently for log messages. > > +* The returned string is suitable for inclusion after > > +* "checkpoint starting:" or inside "checkpoint complete (...)". > > +*/ > > Indentation of the comment is wrong here, the asterisks should be all on > the same column. > > +static const char * > > +CheckpointReasonString(int flags) > > +{ > > + static char buf[128]; > > + bool first =3D true; > > pgindent complains about the above line as well: > > | { > | static char buf[128]; > |- bool first =3D true; > |+ bool first =3D true; > | > | buf[0] =3D '\0'; > > > + buf[0] =3D '\0'; > > + > > +#define APPEND_REASON(str) \ > > + do { \ > > + if (!first) \ > > + strcat(buf, " "); \ > > + strcat(buf, (str)); \ > > + first =3D false; \ > > + } while (0) > > Those ending backslashes also don't seem to line up when 4-space tabs > are set. But pgindent doesn't change them so maybe it is correct as-is? > > I am also not sure whether the above is current best-practise for > Postgres code, I'd have to look deeper (or maybe somebody else can > review this). > > > + if (flags & CHECKPOINT_IS_SHUTDOWN) > > + APPEND_REASON("shutdown"); > > + if (flags & CHECKPOINT_END_OF_RECOVERY) > > + APPEND_REASON("end-of-recovery"); > > + if (flags & CHECKPOINT_FAST) > > + APPEND_REASON("fast"); > > + if (flags & CHECKPOINT_FORCE) > > + APPEND_REASON("force"); > > + if (flags & CHECKPOINT_WAIT) > > + APPEND_REASON("wait"); > > + if (flags & CHECKPOINT_CAUSE_XLOG) > > + APPEND_REASON("wal"); > > + if (flags & CHECKPOINT_CAUSE_TIME) > > + APPEND_REASON("time"); > > + if (flags & CHECKPOINT_FLUSH_UNLOGGED) > > + APPEND_REASON("flush-unlogged"); > > + > > +#undef APPEND_REASON > > + > > + return buf; > > I am still not sure whether this will be a regression for translation of > those strings. > > Otherwise, the patch looks sane to me. Thank you for the detailed review and suggestions. I have reworked the patch on a fresh tree, addressed the formatting and indentation issues, and aligned the helper implementation with PostgreSQL coding conventions. The updated patch has been pgindented and validated with make check and the full recovery TAP test suite. I am attaching the revised patch for further review. Regards, Soumya --0000000000007d8e3506483f1c66 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Expose-checkpoint-reason-in-completion-log-messages.patch" Content-Disposition: attachment; filename="0001-Expose-checkpoint-reason-in-completion-log-messages.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkc7hmgb0 RnJvbSBjMmVkMWViODFiMzhjMzYzOTliOGZiZWM1YmYwOTMyNmIwNmZlZmEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTb3VteWEgPHNvdW15YW11cmFsaS53b3JrQGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMyBKYW4gMjAyNiAxMTo1MDo1MyArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEV4 cG9zZSBjaGVja3BvaW50IHJlYXNvbiBpbiBjb21wbGV0aW9uIGxvZyBtZXNzYWdlcwoKU2lnbmVk LW9mZi1ieTogU291bXlhIDxzb3VteWFtdXJhbGkud29ya0BnbWFpbC5jb20+Ci0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgfCA3OSArKysrKysrKysrKysrKysr LS0tLS0tLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwgfCAgMiAr LQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggMjJkMGEyZThjMy4uOGNkZjJiMjNjMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNjcxNCw2ICs2NzE0LDUwIEBAIFNodXRkb3du WExPRyhpbnQgY29kZSwgRGF0dW0gYXJnKQogCX0KIH0KIAorLyoKKyAqIEZvcm1hdCBjaGVja3Bv aW50IHJlYXNvbiBmbGFncyBjb25zaXN0ZW50bHkgZm9yIGxvZyBtZXNzYWdlcy4KKyAqIFRoZSBy ZXR1cm5lZCBzdHJpbmcgaXMgc3VpdGFibGUgZm9yIGluY2x1c2lvbiBhZnRlcgorICogImNoZWNr cG9pbnQgc3RhcnRpbmc6IiBvciBpbnNpZGUgImNoZWNrcG9pbnQgY29tcGxldGUgKC4uLikiLgor ICovCitzdGF0aWMgY29uc3QgY2hhciAqCitDaGVja3BvaW50UmVhc29uU3RyaW5nKGludCBmbGFn cykKK3sKKwlzdGF0aWMgY2hhciBidWZbMTI4XTsKKwlib29sCQlmaXJzdCA9IHRydWU7CisKKwli dWZbMF0gPSAnXDAnOworCisjZGVmaW5lIEFQUEVORF9SRUFTT04oc3RyKSAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorCWRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKwl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisJCWlmICghZmlyc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQkJ c3RyY2F0KGJ1ZiwgIiAiKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJc3RyY2F0KGJ1Ziwg KHN0cikpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCWZpcnN0ID0gZmFsc2U7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorCX0gd2hpbGUgKDApCisKKwlpZiAoZmxhZ3MgJiBD SEVDS1BPSU5UX0lTX1NIVVRET1dOKQorCQlBUFBFTkRfUkVBU09OKCJzaHV0ZG93biIpOworCWlm IChmbGFncyAmIENIRUNLUE9JTlRfRU5EX09GX1JFQ09WRVJZKQorCQlBUFBFTkRfUkVBU09OKCJl bmQtb2YtcmVjb3ZlcnkiKTsKKwlpZiAoZmxhZ3MgJiBDSEVDS1BPSU5UX0ZBU1QpCisJCUFQUEVO RF9SRUFTT04oImZhc3QiKTsKKwlpZiAoZmxhZ3MgJiBDSEVDS1BPSU5UX0ZPUkNFKQorCQlBUFBF TkRfUkVBU09OKCJmb3JjZSIpOworCWlmIChmbGFncyAmIENIRUNLUE9JTlRfV0FJVCkKKwkJQVBQ RU5EX1JFQVNPTigid2FpdCIpOworCWlmIChmbGFncyAmIENIRUNLUE9JTlRfQ0FVU0VfWExPRykK KwkJQVBQRU5EX1JFQVNPTigid2FsIik7CisJaWYgKGZsYWdzICYgQ0hFQ0tQT0lOVF9DQVVTRV9U SU1FKQorCQlBUFBFTkRfUkVBU09OKCJ0aW1lIik7CisJaWYgKGZsYWdzICYgQ0hFQ0tQT0lOVF9G TFVTSF9VTkxPR0dFRCkKKwkJQVBQRU5EX1JFQVNPTigiZmx1c2gtdW5sb2dnZWQiKTsKKworI3Vu ZGVmIEFQUEVORF9SRUFTT04KKworCXJldHVybiBidWY7Cit9CisKIC8qCiAgKiBMb2cgc3RhcnQg b2YgYSBjaGVja3BvaW50LgogICovCkBAIC02NzIzLDM0ICs2NzY3LDE5IEBAIExvZ0NoZWNrcG9p bnRTdGFydChpbnQgZmxhZ3MsIGJvb2wgcmVzdGFydHBvaW50KQogCWlmIChyZXN0YXJ0cG9pbnQp CiAJCWVyZXBvcnQoTE9HLAogCQkvKiB0cmFuc2xhdG9yOiB0aGUgcGxhY2Vob2xkZXJzIHNob3cg Y2hlY2twb2ludCBvcHRpb25zICovCi0JCQkJKGVycm1zZygicmVzdGFydHBvaW50IHN0YXJ0aW5n OiVzJXMlcyVzJXMlcyVzJXMiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9JU19TSFVURE9X TikgPyAiIHNodXRkb3duIiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9FTkRfT0Zf UkVDT1ZFUlkpID8gIiBlbmQtb2YtcmVjb3ZlcnkiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVD S1BPSU5UX0ZBU1QpID8gIiBmYXN0IiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9G T1JDRSkgPyAiIGZvcmNlIiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9XQUlUKSA/ ICIgd2FpdCIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfQ0FVU0VfWExPRykgPyAi IHdhbCIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfQ0FVU0VfVElNRSkgPyAiIHRp bWUiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVDS1BPSU5UX0ZMVVNIX1VOTE9HR0VEKSA/ICIg Zmx1c2gtdW5sb2dnZWQiIDogIiIpKSk7CisJCQkJKGVycm1zZygicmVzdGFydHBvaW50IHN0YXJ0 aW5nOiAlcyIsCisJCQkJCQlDaGVja3BvaW50UmVhc29uU3RyaW5nKGZsYWdzKSkpKTsKIAllbHNl CiAJCWVyZXBvcnQoTE9HLAotCQkvKiB0cmFuc2xhdG9yOiB0aGUgcGxhY2Vob2xkZXJzIHNob3cg Y2hlY2twb2ludCBvcHRpb25zICovCi0JCQkJKGVycm1zZygiY2hlY2twb2ludCBzdGFydGluZzol cyVzJXMlcyVzJXMlcyVzIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfSVNfU0hVVERPV04p ID8gIiBzaHV0ZG93biIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfRU5EX09GX1JF Q09WRVJZKSA/ICIgZW5kLW9mLXJlY292ZXJ5IiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQ T0lOVF9GQVNUKSA/ICIgZmFzdCIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfRk9S Q0UpID8gIiBmb3JjZSIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfV0FJVCkgPyAi IHdhaXQiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVDS1BPSU5UX0NBVVNFX1hMT0cpID8gIiB3 YWwiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVDS1BPSU5UX0NBVVNFX1RJTUUpID8gIiB0aW1l IiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9GTFVTSF9VTkxPR0dFRCkgPyAiIGZs dXNoLXVubG9nZ2VkIiA6ICIiKSkpOworCQkJCShlcnJtc2coImNoZWNrcG9pbnQgc3RhcnRpbmc6 ICVzIiwKKwkJCQkJCUNoZWNrcG9pbnRSZWFzb25TdHJpbmcoZmxhZ3MpKSkpOwogfQogCiAvKgog ICogTG9nIGVuZCBvZiBhIGNoZWNrcG9pbnQuCiAgKi8KIHN0YXRpYyB2b2lkCi1Mb2dDaGVja3Bv aW50RW5kKGJvb2wgcmVzdGFydHBvaW50KQorTG9nQ2hlY2twb2ludEVuZChib29sIHJlc3RhcnRw b2ludCwgaW50IGZsYWdzKQogewogCWxvbmcJCXdyaXRlX21zZWNzLAogCQkJCXN5bmNfbXNlY3Ms CkBAIC02ODAwLDEyICs2ODI5LDEzIEBAIExvZ0NoZWNrcG9pbnRFbmQoYm9vbCByZXN0YXJ0cG9p bnQpCiAJICovCiAJaWYgKHJlc3RhcnRwb2ludCkKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1z ZygicmVzdGFydHBvaW50IGNvbXBsZXRlOiB3cm90ZSAlZCBidWZmZXJzICglLjFmJSUpLCAiCisJ CQkJKGVycm1zZygicmVzdGFydHBvaW50IGNvbXBsZXRlICglcyk6IHdyb3RlICVkIGJ1ZmZlcnMg KCUuMWYlJSksICIKIAkJCQkJCSJ3cm90ZSAlZCBTTFJVIGJ1ZmZlcnM7ICVkIFdBTCBmaWxlKHMp IGFkZGVkLCAiCiAJCQkJCQkiJWQgcmVtb3ZlZCwgJWQgcmVjeWNsZWQ7IHdyaXRlPSVsZC4lMDNk IHMsICIKIAkJCQkJCSJzeW5jPSVsZC4lMDNkIHMsIHRvdGFsPSVsZC4lMDNkIHM7IHN5bmMgZmls ZXM9JWQsICIKIAkJCQkJCSJsb25nZXN0PSVsZC4lMDNkIHMsIGF2ZXJhZ2U9JWxkLiUwM2Qgczsg ZGlzdGFuY2U9JWQga0IsICIKIAkJCQkJCSJlc3RpbWF0ZT0lZCBrQjsgbHNuPSVYLyUwOFgsIHJl ZG8gbHNuPSVYLyUwOFgiLAorCQkJCQkJQ2hlY2twb2ludFJlYXNvblN0cmluZyhmbGFncyksCiAJ CQkJCQlDaGVja3BvaW50U3RhdHMuY2twdF9idWZzX3dyaXR0ZW4sCiAJCQkJCQkoZG91YmxlKSBD aGVja3BvaW50U3RhdHMuY2twdF9idWZzX3dyaXR0ZW4gKiAxMDAgLyBOQnVmZmVycywKIAkJCQkJ CUNoZWNrcG9pbnRTdGF0cy5ja3B0X3NscnVfd3JpdHRlbiwKQEAgLTY4MjQsMTIgKzY4NTQsMTMg QEAgTG9nQ2hlY2twb2ludEVuZChib29sIHJlc3RhcnRwb2ludCkKIAkJCQkJCUxTTl9GT1JNQVRf QVJHUyhDb250cm9sRmlsZS0+Y2hlY2tQb2ludENvcHkucmVkbykpKSk7CiAJZWxzZQogCQllcmVw b3J0KExPRywKLQkJCQkoZXJybXNnKCJjaGVja3BvaW50IGNvbXBsZXRlOiB3cm90ZSAlZCBidWZm ZXJzICglLjFmJSUpLCAiCisJCQkJKGVycm1zZygiY2hlY2twb2ludCBjb21wbGV0ZSAoJXMpOiB3 cm90ZSAlZCBidWZmZXJzICglLjFmJSUpLCAiCiAJCQkJCQkid3JvdGUgJWQgU0xSVSBidWZmZXJz OyAlZCBXQUwgZmlsZShzKSBhZGRlZCwgIgogCQkJCQkJIiVkIHJlbW92ZWQsICVkIHJlY3ljbGVk OyB3cml0ZT0lbGQuJTAzZCBzLCAiCiAJCQkJCQkic3luYz0lbGQuJTAzZCBzLCB0b3RhbD0lbGQu JTAzZCBzOyBzeW5jIGZpbGVzPSVkLCAiCiAJCQkJCQkibG9uZ2VzdD0lbGQuJTAzZCBzLCBhdmVy YWdlPSVsZC4lMDNkIHM7IGRpc3RhbmNlPSVkIGtCLCAiCiAJCQkJCQkiZXN0aW1hdGU9JWQga0I7 IGxzbj0lWC8lMDhYLCByZWRvIGxzbj0lWC8lMDhYIiwKKwkJCQkJCUNoZWNrcG9pbnRSZWFzb25T dHJpbmcoZmxhZ3MpLAogCQkJCQkJQ2hlY2twb2ludFN0YXRzLmNrcHRfYnVmc193cml0dGVuLAog CQkJCQkJKGRvdWJsZSkgQ2hlY2twb2ludFN0YXRzLmNrcHRfYnVmc193cml0dGVuICogMTAwIC8g TkJ1ZmZlcnMsCiAJCQkJCQlDaGVja3BvaW50U3RhdHMuY2twdF9zbHJ1X3dyaXR0ZW4sCkBAIC03 NDE4LDcgKzc0NDksNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkJVHJ1bmNhdGVT VUJUUkFOUyhHZXRPbGRlc3RUcmFuc2FjdGlvbklkQ29uc2lkZXJlZFJ1bm5pbmcoKSk7CiAKIAkv KiBSZWFsIHdvcmsgaXMgZG9uZTsgbG9nIGFuZCB1cGRhdGUgc3RhdHMuICovCi0JTG9nQ2hlY2tw b2ludEVuZChmYWxzZSk7CisJTG9nQ2hlY2twb2ludEVuZChmYWxzZSwgZmxhZ3MpOwogCiAJLyog UmVzZXQgdGhlIHByb2Nlc3MgdGl0bGUgKi8KIAl1cGRhdGVfY2hlY2twb2ludF9kaXNwbGF5KGZs YWdzLCBmYWxzZSwgdHJ1ZSk7CkBAIC03ODg2LDcgKzc5MTcsNyBAQCBDcmVhdGVSZXN0YXJ0UG9p bnQoaW50IGZsYWdzKQogCQlUcnVuY2F0ZVNVQlRSQU5TKEdldE9sZGVzdFRyYW5zYWN0aW9uSWRD b25zaWRlcmVkUnVubmluZygpKTsKIAogCS8qIFJlYWwgd29yayBpcyBkb25lOyBsb2cgYW5kIHVw ZGF0ZSBzdGF0cy4gKi8KLQlMb2dDaGVja3BvaW50RW5kKHRydWUpOworCUxvZ0NoZWNrcG9pbnRF bmQodHJ1ZSwgZmxhZ3MpOwogCiAJLyogUmVzZXQgdGhlIHByb2Nlc3MgdGl0bGUgKi8KIAl1cGRh dGVfY2hlY2twb2ludF9kaXNwbGF5KGZsYWdzLCB0cnVlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKaW5kZXggNjQ2ODc4NGI4My4uY2NjMzYzMTU3ZSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKKysr IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKQEAgLTIwMyw3ICsy MDMsNyBAQCBpcygkcmVzdWx0LCAicmVwMXxmfHR8bG9zdHwiLAogbXkgJGNoZWNrcG9pbnRfZW5k ZWQgPSAwOwogZm9yIChteSAkaSA9IDA7ICRpIDwgMTAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM6OnRpbWVvdXRfZGVmYXVsdDsgJGkrKykKIHsKLQlpZiAoJG5vZGVfcHJpbWFyeS0+bG9nX2Nv bnRhaW5zKCJjaGVja3BvaW50IGNvbXBsZXRlOiAiLCAkbG9nc3RhcnQpKQorCWlmICgkbm9kZV9w cmltYXJ5LT5sb2dfY29udGFpbnMocXIvY2hlY2twb2ludCBjb21wbGV0ZSg/OiBcKFteKV0qXCkp PzovLCAkbG9nc3RhcnQpKQogCXsKIAkJJGNoZWNrcG9pbnRfZW5kZWQgPSAxOwogCQlsYXN0Owot LSAKMi4zNC4xCgo= --0000000000007d8e3506483f1c66--