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 1vfCH2-0059bF-09 for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Jan 2026 07:23:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfCH0-00DacF-1F for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Jan 2026 07:23:35 +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 1vfCGz-00Dac4-33 for pgsql-hackers@lists.postgresql.org; Mon, 12 Jan 2026 07:23:34 +0000 Received: from mail-dl1-x1231.google.com ([2607:f8b0:4864:20::1231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfCGy-005gPl-39 for pgsql-hackers@lists.postgresql.org; Mon, 12 Jan 2026 07:23:33 +0000 Received: by mail-dl1-x1231.google.com with SMTP id a92af1059eb24-11f42e971d6so36997c88.0 for ; Sun, 11 Jan 2026 23:23:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768202611; x=1768807411; 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=DFJUZq4iRO5uSFZkXckFlFqMhucI3/2W1yZGQqr3/Gs=; b=IQ4pIkyF20C3P+ZquRE+5TRBuBR/LRDe+rvJQNAHwdCf4JygCTInHeNeUWGLO05iBY 3lbbO8/VHNa2BtUHiSK6B5OJ740m47BgsrqkI70G8EzE88aFV5m/iRFF59KrR+m1srKF zQ0koluYMJIdcTmwB5cgfN7VOucrYsaE3RsPdcopBSDbLCp23leJZ7ZsZi2wTgRg0Bes Z+4GZ+brP+oVzXgmyx9C6lQ99IiVjDm3aGBBN/Zx/YLoxjNFIjssB6YJF7hf/d5B/Llb ZW8ajC9kVvwAJb2dPKhChtb+84HhKnGps3vW2AseuHgxzqdZ58Jv07ieciGRYbTCEmCu JooQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768202611; x=1768807411; 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=DFJUZq4iRO5uSFZkXckFlFqMhucI3/2W1yZGQqr3/Gs=; b=pnuucxvHkLmZhJHMLUVC1QOZ5LP2zYX/IX6XMGt5wDCvYweJxOqCzyhfMWF6qzJKFq DA+G7fWNFdjQQOS5ynNbZSlpEPtUNR6tFmzaThZqMCBYMEVTQ/LYpxbjOPHSNuvzsQZd XhcDkb4Fzs0MbwMaJcDx//ojNq1Z18z28QLE7fZoEEBfgN35FRowuo1JcRB/15kB9mmC o/w7k/VJ3V4CivzCDtC5oK3lDR5Bwl4KX4HIeQwb+NaN2HgXkSXcazaIDZpms9TSED8i kSFyAzjJ8WpyDKOBC2Z5W+biz6LEYE7uJN0yDXXqtEdUV98lz7CP6RdOopqTBl46XRLu dWBg== X-Forwarded-Encrypted: i=1; AJvYcCUtXffTIKevrrskztzjZOTGENfqkkXAc8KJMlMIgM20zRMeEF8ffYEWND/Q99KgulScJruFPdtffVJDJa3E@lists.postgresql.org X-Gm-Message-State: AOJu0YwutqId9aTtPXoEdzIBHwfX62ZB5AYsxixCExt8XjDhtdtKksAY zrLH4TDAckRpmI//LQvlIOOWmJw4PyCEMqpIe5AULhDnPeCGCDN8IcnzKMutawD3Iz0k+w4SZmJ FbbzeSVJQOlgvc9dLDXli8GupMW/bb8w= X-Gm-Gg: AY/fxX5dCwESSucBHBJnB/RUS2ULEKX603V2bQNzlGR8b22mwkzAFX38N8ITyANe+6G FgEO/Cof/cKGhbe9fPSPkl+JMjEZmkyC/c02Z+Ssnx83yqPpw6VmmLTiFS0TbjS7glM7lICnd45 FTYSujCwB5dycSZq/VygZUKmVB/sD4QDsDNQVRl8bqx+95aDXigBxh7VMv+inHmJJh5Lsh3zdyV jt8hQqZrYo8FI/u/y6ethdGaWXhRYimyz1yMoYO6qDki6YPjyWc4diuei5fi9IZAk7HK7A= X-Google-Smtp-Source: AGHT+IH18Te494/PEcNrajRwL7Rw6jHvgm8Begy61la7dlxxPyL/yOFThwy7gmQvT8h6vs9q3HeAD7lwolsgStrE+TE= X-Received: by 2002:a05:7022:69a0:b0:11e:70d8:5dbb with SMTP id a92af1059eb24-121f8ab6692mr15800132c88.7.1768202611335; Sun, 11 Jan 2026 23:23:31 -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> In-Reply-To: <695feb17.170a0220.1fcace.843fSMTPIN_ADDED_BROKEN@mx.google.com> From: Soumya S Murali Date: Mon, 12 Jan 2026 12:53:54 +0530 X-Gm-Features: AZwV_QheqbOL9iUqf5IBPzwVAIMBR9cbk0l24nx4aoLZfOK43VGt5OjSjjtd2as 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="0000000000008a9d9c06482bc005" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008a9d9c06482bc005 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi all, On Thu, Jan 8, 2026 at 11:06=E2=80=AFPM Michael Banck wrot= e: > > Hi, > > On Thu, Jan 08, 2026 at 11:58:43AM +0530, Soumya S Murali wrote: > > On Wed, Jan 7, 2026 at 1:37=E2=80=AFPM Michael Banck w= rote: > > > On Wed, Jan 07, 2026 at 12:35:08PM +0530, Soumya S Murali wrote: > > I have reworked the patch to factor out the checkpoint reason logic to > > use the same wording for both checkpoint start and completion log > > (including wal, time, fast, force, and wait). The format has been > > aligned with existing conventions and has been verified by running > > make check and recovery TAP tests including t/019_replslot_limit.pl > > successfully. > > Kindly review my patch and let me know the feedback. > > Thanks for the new patch. > > > index 22d0a2e8c3..9f7439f9a2 100644 > > --- a/src/backend/access/transam/xlog.c > > +++ b/src/backend/access/transam/xlog.c > [...] > > +static const char * > > +CheckpointReasonString(int flags) > > +{ > > + static char buf[128]; > > + > > + buf[0] =3D '\0'; > > + > > + if (flags & CHECKPOINT_IS_SHUTDOWN) > > + strcat(buf, " shutdown"); > > + if (flags & CHECKPOINT_END_OF_RECOVERY) > > + strcat(buf, " end-of-recovery"); > > + if (flags & CHECKPOINT_FAST) > > + strcat(buf, " fast"); > > + if (flags & CHECKPOINT_FORCE) > > + strcat(buf, " force"); > > + if (flags & CHECKPOINT_WAIT) > > + strcat(buf, " wait"); > > + if (flags & CHECKPOINT_CAUSE_XLOG) > > + strcat(buf, " wal"); > > + if (flags & CHECKPOINT_CAUSE_TIME) > > + strcat(buf, " time"); > > + if (flags & CHECKPOINT_FLUSH_UNLOGGED) > > + strcat(buf, " flush-unlogged"); > > + > > + return buf; > > +} > > The way this is coded now prepends the final string with a space > character. This is fine for the checkpoint starting message, but makes > the checkpoint finished message look slightly weird (not the "( wal)"): > > |2026-01-08 18:30:33.691 CET [1666416] LOG: checkpoint complete ( wal): > |wrote 20 buffers (0.1%), wrote 0 SLRU buffers; 0 WAL file(s) added, 4 > |removed, 33 recycled; write=3D2.221 s, sync=3D0.019 s, total=3D2.701 s; = sync > |files=3D3, longest=3D0.018 s, average=3D0.007 s; distance=3D601885 kB, > |estimate=3D601885 kB; lsn=3D0/D2D59FC8, redo lsn=3D0/B492B500 > > Also I think the translators might now complain, but I am not sure how > to best approach this. 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 --0000000000008a9d9c06482bc005 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_mkatsg000 RnJvbSAzMGUzYzYyNjk1YTY0M2RhZjk2ZmZjYTNiNTA0YTc5ZDJhNzYxZjc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTb3VteWEgPHNvdW15YW11cmFsaS53b3JrQGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxMiBKYW4gMjAyNiAxMjozNjoyOSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEV4 cG9zZSBjaGVja3BvaW50IHJlYXNvbiBpbiBjb21wbGV0aW9uIGxvZyBtZXNzYWdlcwoKLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICB8IDc4ICsrKysrKysrKysr KysrKystLS0tLS0tCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCB8 ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCAyMmQwYTJlOGMzLi42M2QxZTU2Y2Ex IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02NzE0LDYgKzY3MTQsNDkgQEAgU2h1 dGRvd25YTE9HKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJfQogfQogCisvKgorKiBGb3JtYXQgY2hl Y2twb2ludCByZWFzb24gZmxhZ3MgY29uc2lzdGVudGx5IGZvciBsb2cgbWVzc2FnZXMuCisqIFRo ZSByZXR1cm5lZCBzdHJpbmcgaXMgc3VpdGFibGUgZm9yIGluY2x1c2lvbiBhZnRlcgorKiAiY2hl Y2twb2ludCBzdGFydGluZzoiIG9yIGluc2lkZSAiY2hlY2twb2ludCBjb21wbGV0ZSAoLi4uKSIu CisqLworc3RhdGljIGNvbnN0IGNoYXIgKgorQ2hlY2twb2ludFJlYXNvblN0cmluZyhpbnQgZmxh Z3MpCit7CisJc3RhdGljIGNoYXIgYnVmWzEyOF07CisJYm9vbCBmaXJzdCA9IHRydWU7CisKKwli dWZbMF0gPSAnXDAnOworCisjZGVmaW5lIEFQUEVORF9SRUFTT04oc3RyKQkJCVwKKwlkbyB7CQkJ CQkJCVwKKwkJaWYgKCFmaXJzdCkJCQkJXAorCQkJc3RyY2F0KGJ1ZiwgIiAiKTsJCVwKKwkJc3Ry Y2F0KGJ1ZiwgKHN0cikpOwkJXAorCQlmaXJzdCA9IGZhbHNlOwkJCVwKKwl9IHdoaWxlICgwKQor CisJaWYgKGZsYWdzICYgQ0hFQ0tQT0lOVF9JU19TSFVURE9XTikKKwkJQVBQRU5EX1JFQVNPTigi c2h1dGRvd24iKTsKKwlpZiAoZmxhZ3MgJiBDSEVDS1BPSU5UX0VORF9PRl9SRUNPVkVSWSkKKwkJ QVBQRU5EX1JFQVNPTigiZW5kLW9mLXJlY292ZXJ5Iik7CisJaWYgKGZsYWdzICYgQ0hFQ0tQT0lO VF9GQVNUKQorCQlBUFBFTkRfUkVBU09OKCJmYXN0Iik7CisJaWYgKGZsYWdzICYgQ0hFQ0tQT0lO VF9GT1JDRSkKKwkJQVBQRU5EX1JFQVNPTigiZm9yY2UiKTsKKwlpZiAoZmxhZ3MgJiBDSEVDS1BP SU5UX1dBSVQpCisJCUFQUEVORF9SRUFTT04oIndhaXQiKTsKKwlpZiAoZmxhZ3MgJiBDSEVDS1BP SU5UX0NBVVNFX1hMT0cpCisJCUFQUEVORF9SRUFTT04oIndhbCIpOworCWlmIChmbGFncyAmIENI RUNLUE9JTlRfQ0FVU0VfVElNRSkKKwkJQVBQRU5EX1JFQVNPTigidGltZSIpOworCWlmIChmbGFn cyAmIENIRUNLUE9JTlRfRkxVU0hfVU5MT0dHRUQpCisJCUFQUEVORF9SRUFTT04oImZsdXNoLXVu bG9nZ2VkIik7CisKKyN1bmRlZiBBUFBFTkRfUkVBU09OCisKKwlyZXR1cm4gYnVmOworfQorCiAv KgogICogTG9nIHN0YXJ0IG9mIGEgY2hlY2twb2ludC4KICAqLwpAQCAtNjcyMywzNCArNjc2Niwx OSBAQCBMb2dDaGVja3BvaW50U3RhcnQoaW50IGZsYWdzLCBib29sIHJlc3RhcnRwb2ludCkKIAlp ZiAocmVzdGFydHBvaW50KQogCQllcmVwb3J0KExPRywKIAkJLyogdHJhbnNsYXRvcjogdGhlIHBs YWNlaG9sZGVycyBzaG93IGNoZWNrcG9pbnQgb3B0aW9ucyAqLwotCQkJCShlcnJtc2coInJlc3Rh cnRwb2ludCBzdGFydGluZzolcyVzJXMlcyVzJXMlcyVzIiwKLQkJCQkJCShmbGFncyAmIENIRUNL UE9JTlRfSVNfU0hVVERPV04pID8gIiBzaHV0ZG93biIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENI RUNLUE9JTlRfRU5EX09GX1JFQ09WRVJZKSA/ICIgZW5kLW9mLXJlY292ZXJ5IiA6ICIiLAotCQkJ CQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9GQVNUKSA/ICIgZmFzdCIgOiAiIiwKLQkJCQkJCShmbGFn cyAmIENIRUNLUE9JTlRfRk9SQ0UpID8gIiBmb3JjZSIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENI RUNLUE9JTlRfV0FJVCkgPyAiIHdhaXQiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVDS1BPSU5U X0NBVVNFX1hMT0cpID8gIiB3YWwiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVDS1BPSU5UX0NB VVNFX1RJTUUpID8gIiB0aW1lIiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9GTFVT SF9VTkxPR0dFRCkgPyAiIGZsdXNoLXVubG9nZ2VkIiA6ICIiKSkpOworCQkJCShlcnJtc2coInJl c3RhcnRwb2ludCBzdGFydGluZzogJXMiLAorCQkJCQkJQ2hlY2twb2ludFJlYXNvblN0cmluZyhm bGFncykpKSk7CiAJZWxzZQogCQllcmVwb3J0KExPRywKLQkJLyogdHJhbnNsYXRvcjogdGhlIHBs YWNlaG9sZGVycyBzaG93IGNoZWNrcG9pbnQgb3B0aW9ucyAqLwotCQkJCShlcnJtc2coImNoZWNr cG9pbnQgc3RhcnRpbmc6JXMlcyVzJXMlcyVzJXMlcyIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVDS1BP SU5UX0lTX1NIVVRET1dOKSA/ICIgc2h1dGRvd24iIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVD S1BPSU5UX0VORF9PRl9SRUNPVkVSWSkgPyAiIGVuZC1vZi1yZWNvdmVyeSIgOiAiIiwKLQkJCQkJ CShmbGFncyAmIENIRUNLUE9JTlRfRkFTVCkgPyAiIGZhc3QiIDogIiIsCi0JCQkJCQkoZmxhZ3Mg JiBDSEVDS1BPSU5UX0ZPUkNFKSA/ICIgZm9yY2UiIDogIiIsCi0JCQkJCQkoZmxhZ3MgJiBDSEVD S1BPSU5UX1dBSVQpID8gIiB3YWl0IiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9D QVVTRV9YTE9HKSA/ICIgd2FsIiA6ICIiLAotCQkJCQkJKGZsYWdzICYgQ0hFQ0tQT0lOVF9DQVVT RV9USU1FKSA/ICIgdGltZSIgOiAiIiwKLQkJCQkJCShmbGFncyAmIENIRUNLUE9JTlRfRkxVU0hf VU5MT0dHRUQpID8gIiBmbHVzaC11bmxvZ2dlZCIgOiAiIikpKTsKKwkJCQkoZXJybXNnKCJjaGVj a3BvaW50IHN0YXJ0aW5nOiAlcyIsCisJCQkJCQlDaGVja3BvaW50UmVhc29uU3RyaW5nKGZsYWdz KSkpKTsKIH0KIAogLyoKICAqIExvZyBlbmQgb2YgYSBjaGVja3BvaW50LgogICovCiBzdGF0aWMg dm9pZAotTG9nQ2hlY2twb2ludEVuZChib29sIHJlc3RhcnRwb2ludCkKK0xvZ0NoZWNrcG9pbnRF bmQoYm9vbCByZXN0YXJ0cG9pbnQsIGludCBmbGFncykKIHsKIAlsb25nCQl3cml0ZV9tc2VjcywK IAkJCQlzeW5jX21zZWNzLApAQCAtNjgwMCwxMiArNjgyOCwxMyBAQCBMb2dDaGVja3BvaW50RW5k KGJvb2wgcmVzdGFydHBvaW50KQogCSAqLwogCWlmIChyZXN0YXJ0cG9pbnQpCiAJCWVyZXBvcnQo TE9HLAotCQkJCShlcnJtc2coInJlc3RhcnRwb2ludCBjb21wbGV0ZTogd3JvdGUgJWQgYnVmZmVy cyAoJS4xZiUlKSwgIgorCQkJCShlcnJtc2coInJlc3RhcnRwb2ludCBjb21wbGV0ZSAoJXMpOiB3 cm90ZSAlZCBidWZmZXJzICglLjFmJSUpLCAiCiAJCQkJCQkid3JvdGUgJWQgU0xSVSBidWZmZXJz OyAlZCBXQUwgZmlsZShzKSBhZGRlZCwgIgogCQkJCQkJIiVkIHJlbW92ZWQsICVkIHJlY3ljbGVk OyB3cml0ZT0lbGQuJTAzZCBzLCAiCiAJCQkJCQkic3luYz0lbGQuJTAzZCBzLCB0b3RhbD0lbGQu JTAzZCBzOyBzeW5jIGZpbGVzPSVkLCAiCiAJCQkJCQkibG9uZ2VzdD0lbGQuJTAzZCBzLCBhdmVy YWdlPSVsZC4lMDNkIHM7IGRpc3RhbmNlPSVkIGtCLCAiCiAJCQkJCQkiZXN0aW1hdGU9JWQga0I7 IGxzbj0lWC8lMDhYLCByZWRvIGxzbj0lWC8lMDhYIiwKKwkJCQkJCUNoZWNrcG9pbnRSZWFzb25T dHJpbmcoZmxhZ3MpLAogCQkJCQkJQ2hlY2twb2ludFN0YXRzLmNrcHRfYnVmc193cml0dGVuLAog CQkJCQkJKGRvdWJsZSkgQ2hlY2twb2ludFN0YXRzLmNrcHRfYnVmc193cml0dGVuICogMTAwIC8g TkJ1ZmZlcnMsCiAJCQkJCQlDaGVja3BvaW50U3RhdHMuY2twdF9zbHJ1X3dyaXR0ZW4sCkBAIC02 ODI0LDEyICs2ODUzLDEzIEBAIExvZ0NoZWNrcG9pbnRFbmQoYm9vbCByZXN0YXJ0cG9pbnQpCiAJ CQkJCQlMU05fRk9STUFUX0FSR1MoQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5LnJlZG8pKSkp OwogCWVsc2UKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygiY2hlY2twb2ludCBjb21wbGV0 ZTogd3JvdGUgJWQgYnVmZmVycyAoJS4xZiUlKSwgIgorCQkJCShlcnJtc2coImNoZWNrcG9pbnQg Y29tcGxldGUgKCVzKTogd3JvdGUgJWQgYnVmZmVycyAoJS4xZiUlKSwgIgogCQkJCQkJIndyb3Rl ICVkIFNMUlUgYnVmZmVyczsgJWQgV0FMIGZpbGUocykgYWRkZWQsICIKIAkJCQkJCSIlZCByZW1v dmVkLCAlZCByZWN5Y2xlZDsgd3JpdGU9JWxkLiUwM2QgcywgIgogCQkJCQkJInN5bmM9JWxkLiUw M2QgcywgdG90YWw9JWxkLiUwM2Qgczsgc3luYyBmaWxlcz0lZCwgIgogCQkJCQkJImxvbmdlc3Q9 JWxkLiUwM2QgcywgYXZlcmFnZT0lbGQuJTAzZCBzOyBkaXN0YW5jZT0lZCBrQiwgIgogCQkJCQkJ ImVzdGltYXRlPSVkIGtCOyBsc249JVgvJTA4WCwgcmVkbyBsc249JVgvJTA4WCIsCisJCQkJCQlD aGVja3BvaW50UmVhc29uU3RyaW5nKGZsYWdzKSwKIAkJCQkJCUNoZWNrcG9pbnRTdGF0cy5ja3B0 X2J1ZnNfd3JpdHRlbiwKIAkJCQkJCShkb3VibGUpIENoZWNrcG9pbnRTdGF0cy5ja3B0X2J1ZnNf d3JpdHRlbiAqIDEwMCAvIE5CdWZmZXJzLAogCQkJCQkJQ2hlY2twb2ludFN0YXRzLmNrcHRfc2xy dV93cml0dGVuLApAQCAtNzQxOCw3ICs3NDQ4LDcgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxh Z3MpCiAJCVRydW5jYXRlU1VCVFJBTlMoR2V0T2xkZXN0VHJhbnNhY3Rpb25JZENvbnNpZGVyZWRS dW5uaW5nKCkpOwogCiAJLyogUmVhbCB3b3JrIGlzIGRvbmU7IGxvZyBhbmQgdXBkYXRlIHN0YXRz LiAqLwotCUxvZ0NoZWNrcG9pbnRFbmQoZmFsc2UpOworCUxvZ0NoZWNrcG9pbnRFbmQoZmFsc2Us IGZsYWdzKTsKIAogCS8qIFJlc2V0IHRoZSBwcm9jZXNzIHRpdGxlICovCiAJdXBkYXRlX2NoZWNr cG9pbnRfZGlzcGxheShmbGFncywgZmFsc2UsIHRydWUpOwpAQCAtNzg4Niw3ICs3OTE2LDcgQEAg Q3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAkJVHJ1bmNhdGVTVUJUUkFOUyhHZXRPbGRl c3RUcmFuc2FjdGlvbklkQ29uc2lkZXJlZFJ1bm5pbmcoKSk7CiAKIAkvKiBSZWFsIHdvcmsgaXMg ZG9uZTsgbG9nIGFuZCB1cGRhdGUgc3RhdHMuICovCi0JTG9nQ2hlY2twb2ludEVuZCh0cnVlKTsK KwlMb2dDaGVja3BvaW50RW5kKHRydWUsIGZsYWdzKTsKIAogCS8qIFJlc2V0IHRoZSBwcm9jZXNz IHRpdGxlICovCiAJdXBkYXRlX2NoZWNrcG9pbnRfZGlzcGxheShmbGFncywgdHJ1ZSwgdHJ1ZSk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCmluZGV4IDY0Njg3ODRi ODMuLmNjYzM2MzE1N2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxz bG90X2xpbWl0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0 LnBsCkBAIC0yMDMsNyArMjAzLDcgQEAgaXMoJHJlc3VsdCwgInJlcDF8Znx0fGxvc3R8IiwKIG15 ICRjaGVja3BvaW50X2VuZGVkID0gMDsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDEwICogJFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7ICRpKyspCiB7Ci0JaWYgKCRub2Rl X3ByaW1hcnktPmxvZ19jb250YWlucygiY2hlY2twb2ludCBjb21wbGV0ZTogIiwgJGxvZ3N0YXJ0 KSkKKwlpZiAoJG5vZGVfcHJpbWFyeS0+bG9nX2NvbnRhaW5zKHFyL2NoZWNrcG9pbnQgY29tcGxl dGUoPzogXChbXildKlwpKT86LywgJGxvZ3N0YXJ0KSkKIAl7CiAJCSRjaGVja3BvaW50X2VuZGVk ID0gMTsKIAkJbGFzdDsKLS0gCjIuMzQuMQoK --0000000000008a9d9c06482bc005--