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.94.2) (envelope-from ) id 1vCiay-00HNCt-40 for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Oct 2025 18:02:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vCiav-003s0d-4o for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Oct 2025 18:02:24 +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.94.2) (envelope-from ) id 1vCiau-003s0U-9Z for pgsql-hackers@lists.postgresql.org; Sat, 25 Oct 2025 18:02:23 +0000 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vCiap-004CQ2-2d for pgsql-hackers@postgresql.org; Sat, 25 Oct 2025 18:02:22 +0000 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfout.stl.internal (Postfix) with ESMTP id 357C91D0019C; Sat, 25 Oct 2025 14:02:17 -0400 (EDT) Received: from phl-imap-03 ([10.202.2.93]) by phl-compute-04.internal (MEProxy); Sat, 25 Oct 2025 14:02:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=compiler.org; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1761415337; x=1761501737; bh=t0FFznWeN5 xp6ytkr4QGOP1Jobx/3r2WgbtZYX5Q81E=; b=kEPLzwu2b8p8bHmQ1EuEZI6In5 hgzSMqoBAXsnAgtZFJ15RMju3V6M1eATtxnkX723DPnnhlMtxsJfIyooB80PDRho /3OU9luh/qXwtKn12sDrcucx60s2y+pelG0Y6rI0XZZSNi+4s7m35rW+EFT421mr w9RnsqAh5yzheJpGBSU6D+EAQI6NB0LvElY0y4D7L00Fq8lVIq82zJOxgHaypPzG Z3iaQf5ujuj/4oZ+dafrB5jJMLQerTTLxGkuAAqWd8ZoKwWDRIJmkuc+L3VpEQZ7 qMo+sliIVOlQM7rk7Q9/SWQxy331P1Ltxi93Fm4LkumbDH+WvcD+d4tJdX7A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1761415337; x=1761501737; bh=t0FFznWeN5xp6ytkr4QGOP1Jobx/3r2Wgbt ZYX5Q81E=; b=d6XTM+9maHULT2rmNY/XfLGMrMww5Olhh2aDL2Y44BlluQ2tyun RRbcdKRhlEBvPn9hWPT5m5pCeg1MezFvtCqsC3zX1BwoBql2Vt71OPU7lP0SB1ls yvuF220N6UE3tT6q5NwYk87hTCd8+d3oZFW6apKsmxM+V+nn+Wh+nQLLoWfFxgN0 zoHEL19jd2N3IirylRK3RKd0WUs6p/itVFSxrkATYx79SvhiGlSvnRf8/Cjue6xg AK/VZzW0RzG1hKHXOeEmKuBwm4dQFV7VId4HZHhMkUHZxZ/iCRms212D2Acz3aXU D6RJkE67KguljPPa4QbRiAIhika7Fzs5Puw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdduhedvkeekucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepofggfffhvfevkfgjfhfutgesmhdtreerredttdenucfhrhhomhepfdflohgvlhcu lfgrtghosghsohhnfdcuoehjohgvlhestghomhhpihhlvghrrdhorhhgqeenucggtffrrg htthgvrhhnpeffgfelffffvdehhfeigeefieejudejvdeiueevueeggfevueekveeiteeh hfetieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hjohgvlhestghomhhpihhlvghrrdhorhhgpdhnsggprhgtphhtthhopedvpdhmohguvgep shhmthhpohhuthdprhgtphhtthhopehhlhhinhhnrghkrgesihhkihdrfhhipdhrtghpth htohepphhgshhqlhdqhhgrtghkvghrshesphhoshhtghhrvghsqhhlrdhorhhg X-ME-Proxy: Feedback-ID: ic6394509:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 7585E18E006C; Sat, 25 Oct 2025 14:02:16 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AYKEI1WM5q2o Date: Sat, 25 Oct 2025 20:01:56 +0200 From: "Joel Jacobson" To: pgsql-hackers Cc: "Heikki Linnakangas" Message-Id: <149c402d-54c9-48dd-a730-2f5b958f2129@app.fastmail.com> In-Reply-To: References: <202510221548.tgggefdrlpo3@alvherre.pgsql> Subject: Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue Content-Type: multipart/mixed; boundary=29147705fb20430989acf5eea4135e28 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --29147705fb20430989acf5eea4135e28 Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, Oct 25, 2025, at 15:08, Arseniy Mukhin wrote: > I reimplemented the test in 0002 as an isolation test and added the > commit message. PFA the new version. I've rebased the patches so they can be applied on top of v12: - v12-vacuum_notify_queue_cleanup-without-code-dup.txt - v12-vacuum_notify_queue_cleanup-with-code-dup.txt I also want to share a new idea that Heikki Linnakangas came up with during PgConf25 in Riga. The idea is basically to scan the notification queue from tail to head, and update xids that precedes newFrozenXid, to either FrozenTransactionId if committed, or InvalidTransactionId if not. I've implemented this by adding a new extern function AsyncNotifyFreezeXids to async.h, called from vac_update_datfrozenxid. This way, we don't need to hold back the advancement of newFrozenXid in vac_update_datfrozenxid. Attempt of implementing Heikki's idea: - async_notify_freeze_xids.txt This idea has the benefit of never holding back newFrozenXid, however, I see some problems with it: - If there is a bug in the code, we could accidentally overwrite xid values we didn't intend to overwrite, and maybe we would never find out that we did. - We wouldn't know for sure that we've understood the cause of this bug. With v12-vacuum_notify_queue_cleanup, we instead have the downside of possibly holding back newFrozenXid, but with the advantage of giving us higher confidence in that we've correctly identified the cause of the bug. /Joel --29147705fb20430989acf5eea4135e28 Content-Disposition: attachment; filename*0="v12-vacuum_notify_queue_cleanup-without-code-dup.txt" Content-Type: text/plain; name="=?UTF-8?Q?v12-vacuum=5Fnotify=5Fqueue=5Fcleanup-without-code-dup.txt?=" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDhmYzFiYmJhN2EuLjA4ODIxNWFjZGMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYwpAQCAtNDU1LDEzICs0NTUsMTEgQEAgc3RhdGljIHZvaWQgYXN5 bmNRdWV1ZU5vdGlmaWNhdGlvblRvRW50cnkoTm90aWZpY2F0aW9uICpuLCBBc3luY1F1ZXVl RW50cnkgKnFlKTsKIHN0YXRpYyBMaXN0Q2VsbCAqYXN5bmNRdWV1ZUFkZEVudHJpZXMoTGlz dENlbGwgKm5leHROb3RpZnkpOwogc3RhdGljIGRvdWJsZSBhc3luY1F1ZXVlVXNhZ2Uodm9p ZCk7CiBzdGF0aWMgdm9pZCBhc3luY1F1ZXVlRmlsbFdhcm5pbmcodm9pZCk7Ci1zdGF0aWMg dm9pZCBTaWduYWxCYWNrZW5kcyh2b2lkKTsKIHN0YXRpYyB2b2lkIGFzeW5jUXVldWVSZWFk QWxsTm90aWZpY2F0aW9ucyh2b2lkKTsKIHN0YXRpYyBib29sIGFzeW5jUXVldWVQcm9jZXNz UGFnZUVudHJpZXModm9sYXRpbGUgUXVldWVQb3NpdGlvbiAqY3VycmVudCwKIAkJCQkJCQkJ CQkgUXVldWVQb3NpdGlvbiBzdG9wLAogCQkJCQkJCQkJCSBjaGFyICpwYWdlX2J1ZmZlciwK IAkJCQkJCQkJCQkgU25hcHNob3Qgc25hcHNob3QpOwotc3RhdGljIHZvaWQgYXN5bmNRdWV1 ZUFkdmFuY2VUYWlsKHZvaWQpOwogc3RhdGljIHZvaWQgUHJvY2Vzc0luY29taW5nTm90aWZ5 KGJvb2wgZmx1c2gpOwogc3RhdGljIGJvb2wgQXN5bmNFeGlzdHNQZW5kaW5nTm90aWZ5KE5v dGlmaWNhdGlvbiAqbik7CiBzdGF0aWMgdm9pZCBBZGRFdmVudFRvUGVuZGluZ05vdGlmaWVz KE5vdGlmaWNhdGlvbiAqbik7CkBAIC0xMDIyLDcgKzEwMjAsNyBAQCBBdENvbW1pdF9Ob3Rp Znkodm9pZCkKIAkgKiBQcmVDb21taXRfTm90aWZ5KCkuCiAJICovCiAJaWYgKHBlbmRpbmdO b3RpZmllcyAhPSBOVUxMKQotCQlTaWduYWxCYWNrZW5kcygpOworCQlTaWduYWxCYWNrZW5k cyhmYWxzZSk7CiAKIAkvKgogCSAqIElmIGl0J3MgdGltZSB0byB0cnkgdG8gYWR2YW5jZSB0 aGUgZ2xvYmFsIHRhaWwgcG9pbnRlciwgZG8gdGhhdC4KQEAgLTEwMzYsNyArMTAzNCw3IEBA IEF0Q29tbWl0X05vdGlmeSh2b2lkKQogCWlmICh0cnlBZHZhbmNlVGFpbCkKIAl7CiAJCXRy eUFkdmFuY2VUYWlsID0gZmFsc2U7Ci0JCWFzeW5jUXVldWVBZHZhbmNlVGFpbCgpOworCQlh c3luY1F1ZXVlQWR2YW5jZVRhaWwoZmFsc2UpOwogCX0KIAogCS8qIEFuZCBjbGVhbiB1cCAq LwpAQCAtMTQ5NCw3ICsxNDkyLDcgQEAgcGdfbm90aWZpY2F0aW9uX3F1ZXVlX3VzYWdlKFBH X0ZVTkNUSU9OX0FSR1MpCiAJZG91YmxlCQl1c2FnZTsKIAogCS8qIEFkdmFuY2UgdGhlIHF1 ZXVlIHRhaWwgc28gd2UgZG9uJ3QgcmVwb3J0IGEgdG9vLWxhcmdlIHJlc3VsdCAqLwotCWFz eW5jUXVldWVBZHZhbmNlVGFpbCgpOworCWFzeW5jUXVldWVBZHZhbmNlVGFpbChmYWxzZSk7 CiAKIAlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywgTFdfU0hBUkVEKTsKIAl1c2Fn ZSA9IGFzeW5jUXVldWVVc2FnZSgpOwpAQCAtMTU4Nyw5ICsxNTg1LDE2IEBAIGFzeW5jUXVl dWVGaWxsV2FybmluZyh2b2lkKQogICoKICAqIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBDb21t aXRUcmFuc2FjdGlvbigpLCBzbyBpdCdzIGltcG9ydGFudCBmb3IgaXQKICAqIHRvIGhhdmUg dmVyeSBsb3cgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS4KKyAqCisgKiBJZiBhbGxfZGF0YWJh c2VzIGlzIGZhbHNlIChub3JtYWwgTk9USUZZKSwgd2Ugc2lnbmFsIGxpc3RlbmVycyBpbiBv dXIgb3duCisgKiBkYXRhYmFzZSB1bmxlc3MgdGhleSdyZSBjYXVnaHQgdXAsIGFuZCBsaXN0 ZW5lcnMgaW4gb3RoZXIgZGF0YWJhc2VzIG9ubHkKKyAqIGlmIHRoZXkgYXJlIGZhciBiZWhp bmQgKFFVRVVFX0NMRUFOVVBfREVMQVkgcGFnZXMpLgorICoKKyAqIElmIGFsbF9kYXRhYmFz ZXMgaXMgdHJ1ZSAoVkFDVVVNIGNsZWFudXApLCB3ZSBzaWduYWwgYWxsIGxpc3RlbmVycyBh Y3Jvc3MKKyAqIGFsbCBkYXRhYmFzZXMgdGhhdCBhcmVuJ3QgYWxyZWFkeSBjYXVnaHQgdXAs IHdpdGggbm8gZGlzdGFuY2UgZmlsdGVyaW5nLgogICovCi1zdGF0aWMgdm9pZAotU2lnbmFs QmFja2VuZHModm9pZCkKK3ZvaWQKK1NpZ25hbEJhY2tlbmRzKGJvb2wgYWxsX2RhdGFiYXNl cykKIHsKIAlpbnQzMgkgICAqcGlkczsKIAlQcm9jTnVtYmVyICpwcm9jbm9zOwpAQCAtMTYx NSwyNSArMTYyMCwyMSBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCiAJCUFzc2VydChwaWQg IT0gSW52YWxpZFBpZCk7CiAJCXBvcyA9IFFVRVVFX0JBQ0tFTkRfUE9TKGkpOwotCQlpZiAo UVVFVUVfQkFDS0VORF9EQk9JRChpKSA9PSBNeURhdGFiYXNlSWQpCi0JCXsKLQkJCS8qCi0J CQkgKiBBbHdheXMgc2lnbmFsIGxpc3RlbmVycyBpbiBvdXIgb3duIGRhdGFiYXNlLCB1bmxl c3MgdGhleSdyZQotCQkJICogYWxyZWFkeSBjYXVnaHQgdXAgKHVubGlrZWx5LCBidXQgcG9z c2libGUpLgotCQkJICovCi0JCQlpZiAoUVVFVUVfUE9TX0VRVUFMKHBvcywgUVVFVUVfSEVB RCkpCi0JCQkJY29udGludWU7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogTGlz dGVuZXJzIGluIG90aGVyIGRhdGFiYXNlcyBzaG91bGQgYmUgc2lnbmFsZWQgb25seSBpZiB0 aGV5Ci0JCQkgKiBhcmUgZmFyIGJlaGluZC4KLQkJCSAqLwotCQkJaWYgKGFzeW5jUXVldWVQ YWdlRGlmZihRVUVVRV9QT1NfUEFHRShRVUVVRV9IRUFEKSwKLQkJCQkJCQkJICAgUVVFVUVf UE9TX1BBR0UocG9zKSkgPCBRVUVVRV9DTEVBTlVQX0RFTEFZKQotCQkJCWNvbnRpbnVlOwot CQl9CisKKwkJLyoKKwkJICogQWx3YXlzIHNraXAgYmFja2VuZHMgdGhhdCBhcmUgYWxyZWFk eSBjYXVnaHQgdXAuCisJCSAqLworCQlpZiAoUVVFVUVfUE9TX0VRVUFMKHBvcywgUVVFVUVf SEVBRCkpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBTa2lwIGlmIHdlJ3JlIG5vdCBz aWduYWxpbmcgYWxsIGRhdGFiYXNlcyBBTkQgdGhpcyBpcyBhIGRpZmZlcmVudAorCQkgKiBk YXRhYmFzZSBBTkQgdGhlIGxpc3RlbmVyIGlzIG5vdCBmYXIgYmVoaW5kLgorCQkgKi8KKwkJ aWYgKCFhbGxfZGF0YWJhc2VzICYmIFFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgIT0gTXlEYXRh YmFzZUlkICYmCisJCQlhc3luY1F1ZXVlUGFnZURpZmYoUVVFVUVfUE9TX1BBR0UoUVVFVUVf SEVBRCksCisJCQkJCQkJICAgUVVFVUVfUE9TX1BBR0UocG9zKSkgPCBRVUVVRV9DTEVBTlVQ X0RFTEFZKQorCQkJY29udGludWU7CiAJCS8qIE9LLCBuZWVkIHRvIHNpZ25hbCB0aGlzIG9u ZSAqLwogCQlwaWRzW2NvdW50XSA9IHBpZDsKIAkJcHJvY25vc1tjb3VudF0gPSBpOwpAQCAt MjEzNCw3ICsyMTM1LDcgQEAgR2V0T2xkZXN0Tm90aWZ5VHJhbnNhY3Rpb25JZCh2b2lkKQog CVRyYW5zYWN0aW9uSWQgb2xkZXN0WGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkv KiBGaXJzdCBhZHZhbmNlIHRoZSBzaGFyZWQgcXVldWUgdGFpbCBwb2ludGVyICovCi0JYXN5 bmNRdWV1ZUFkdmFuY2VUYWlsKCk7CisJYXN5bmNRdWV1ZUFkdmFuY2VUYWlsKGZhbHNlKTsK IAogCS8qCiAJICogV2UgbXVzdCBzdGFydCBhdCBRVUVVRV9UQUlMIHNpbmNlIG5vdGlmaWNh dGlvbiBkYXRhIG1pZ2h0IGhhdmUgYmVlbgpAQCAtMjE5MSwxNSArMjE5MiwzOCBAQCBHZXRP bGRlc3ROb3RpZnlUcmFuc2FjdGlvbklkKHZvaWQpCiAJcmV0dXJuIG9sZGVzdFhpZDsKIH0K IAorLyoKKyAqIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgYWN0aXZlIGxpc3RlbmVycyBpbiB0 aGUgbm90aWZpY2F0aW9uIHF1ZXVlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFz dCBvbmUgYmFja2VuZCBpcyByZWdpc3RlcmVkIGFzIGEgbGlzdGVuZXIsCisgKiBmYWxzZSBv dGhlcndpc2UuCisgKi8KK2Jvb2wKK2FzeW5jUXVldWVIYXNMaXN0ZW5lcnModm9pZCkKK3sK Kwlib29sCQloYXNMaXN0ZW5lcnM7CisKKwlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9j aywgTFdfRVhDTFVTSVZFKTsKKwloYXNMaXN0ZW5lcnMgPSAoUVVFVUVfRklSU1RfTElTVEVO RVIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CisJTFdMb2NrUmVsZWFzZShOb3RpZnlRdWV1 ZUxvY2spOworCisJcmV0dXJuIGhhc0xpc3RlbmVyczsKK30KKwogLyoKICAqIEFkdmFuY2Ug dGhlIHNoYXJlZCBxdWV1ZSB0YWlsIHZhcmlhYmxlIHRvIHRoZSBtaW5pbXVtIG9mIGFsbCB0 aGUKICAqIHBlci1iYWNrZW5kIHRhaWwgcG9pbnRlcnMuICBUcnVuY2F0ZSBwZ19ub3RpZnkg c3BhY2UgaWYgcG9zc2libGUuCiAgKgotICogVGhpcyBpcyAodXN1YWxseSkgY2FsbGVkIGR1 cmluZyBDb21taXRUcmFuc2FjdGlvbigpLCBzbyBpdCdzIGltcG9ydGFudCBmb3IKLSAqIGl0 IHRvIGhhdmUgdmVyeSBsb3cgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS4KKyAqIElmIGZvcmNl X3RvX2hlYWQgaXMgZmFsc2UgKG5vcm1hbCBjYXNlKSwgd2UgY29tcHV0ZSB0aGUgbmV3IHRh aWwgYXMgdGhlCisgKiBtaW5pbXVtIG9mIGFsbCBsaXN0ZW5lciBwb3NpdGlvbnMuICBUaGlz IGlzICh1c3VhbGx5KSBjYWxsZWQgZHVyaW5nCisgKiBDb21taXRUcmFuc2FjdGlvbigpLCBz byBpdCdzIGltcG9ydGFudCBmb3IgaXQgdG8gaGF2ZSB2ZXJ5IGxvdyBwcm9iYWJpbGl0eQor ICogb2YgZmFpbHVyZS4KKyAqCisgKiBJZiBmb3JjZV90b19oZWFkIGlzIHRydWUgKFZBQ1VV TSBjbGVhbnVwKSwgd2UgYWR2YW5jZSB0aGUgdGFpbCBkaXJlY3RseSB0bworICogdGhlIGhl YWQsIGRpc2NhcmRpbmcgYWxsIG5vdGlmaWNhdGlvbnMsIGJ1dCBvbmx5IGlmIHRoZXJlIGFy ZSBubyBsaXN0ZW5lcnMuCiAgKi8KLXN0YXRpYyB2b2lkCi1hc3luY1F1ZXVlQWR2YW5jZVRh aWwodm9pZCkKK3ZvaWQKK2FzeW5jUXVldWVBZHZhbmNlVGFpbChib29sIGZvcmNlX3RvX2hl YWQpCiB7CiAJUXVldWVQb3NpdGlvbiBtaW47CiAJaW50NjQJCW9sZHRhaWxwYWdlOwpAQCAt MjIyNywxMiArMjI1MSwzOCBAQCBhc3luY1F1ZXVlQWR2YW5jZVRhaWwodm9pZCkKIAkgKiB0 byBhY2Nlc3MgdGhlIHBhZ2VzIHdlIGFyZSBpbiB0aGUgbWlkc3Qgb2YgdHJ1bmNhdGluZy4K IAkgKi8KIAlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywgTFdfRVhDTFVTSVZFKTsK LQltaW4gPSBRVUVVRV9IRUFEOwotCWZvciAoUHJvY051bWJlciBpID0gUVVFVUVfRklSU1Rf TElTVEVORVI7IGkgIT0gSU5WQUxJRF9QUk9DX05VTUJFUjsgaSA9IFFVRVVFX05FWFRfTElT VEVORVIoaSkpCisKKwlpZiAoZm9yY2VfdG9faGVhZCkKIAl7Ci0JCUFzc2VydChRVUVVRV9C QUNLRU5EX1BJRChpKSAhPSBJbnZhbGlkUGlkKTsKLQkJbWluID0gUVVFVUVfUE9TX01JTiht aW4sIFFVRVVFX0JBQ0tFTkRfUE9TKGkpKTsKKwkJLyoKKwkJICogVmVyaWZ5IHRoYXQgdGhl cmUgYXJlIHN0aWxsIG5vIGxpc3RlbmVycy4gIEl0J3MgcG9zc2libGUKKwkJICogdGhhdCBh IGxpc3RlbmVyIGFwcGVhcmVkIHNpbmNlIFZBQ1VVTSBjaGVja2VkLgorCQkgKi8KKwkJaWYg KFFVRVVFX0ZJUlNUX0xJU1RFTkVSICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCXsKKwkJ CUxXTG9ja1JlbGVhc2UoTm90aWZ5UXVldWVMb2NrKTsKKwkJCUxXTG9ja1JlbGVhc2UoTm90 aWZ5UXVldWVUYWlsTG9jayk7CisJCQlyZXR1cm47CisJCX0KKworCQkvKgorCQkgKiBBZHZh bmNlIHRoZSBsb2dpY2FsIHRhaWwgdG8gdGhlIGhlYWQsIGRpc2NhcmRpbmcgYWxsIG5vdGlm aWNhdGlvbnMuCisJCSAqLworCQltaW4gPSBRVUVVRV9IRUFEOwogCX0KKwllbHNlCisJewor CQkvKgorCQkgKiBOb3JtYWwgY2FzZTogY29tcHV0ZSBtaW5pbXVtIHBvc2l0aW9uIGZyb20g YWxsIGxpc3RlbmVycy4KKwkJICovCisJCW1pbiA9IFFVRVVFX0hFQUQ7CisJCWZvciAoUHJv Y051bWJlciBpID0gUVVFVUVfRklSU1RfTElTVEVORVI7IGkgIT0gSU5WQUxJRF9QUk9DX05V TUJFUjsgaSA9IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCisJCXsKKwkJCUFzc2VydChRVUVV RV9CQUNLRU5EX1BJRChpKSAhPSBJbnZhbGlkUGlkKTsKKwkJCW1pbiA9IFFVRVVFX1BPU19N SU4obWluLCBRVUVVRV9CQUNLRU5EX1BPUyhpKSk7CisJCX0KKwl9CisKIAlRVUVVRV9UQUlM ID0gbWluOwogCW9sZHRhaWxwYWdlID0gUVVFVUVfU1RPUF9QQUdFOwogCUxXTG9ja1JlbGVh c2UoTm90aWZ5UXVldWVMb2NrKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggZTVmZWRm YjMyMy4uNGVlMDZmMjMzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKQEAgLTE3MzksMTEg KzE3MzksMjQgQEAgdmFjX3VwZGF0ZV9kYXRmcm96ZW54aWQodm9pZCkKIAkgKiBBbHNvIGNv bnNpZGVyIHRoZSBvbGRlc3QgWElEIGluIHRoZSBub3RpZmljYXRpb24gcXVldWUsIHNpbmNl IGJhY2tlbmRzCiAJICogd2lsbCBuZWVkIHRvIGNhbGwgVHJhbnNhY3Rpb25JZERpZENvbW1p dCgpIG9uIHRob3NlIFhJRHMgd2hlbgogCSAqIHByb2Nlc3NpbmcgdGhlIG5vdGlmaWNhdGlv bnMuCisJICoKKwkgKiBJZiB0aGUgcXVldWUgaXMgYmxvY2tpbmcgZGF0ZnJvemVueGlkIGFk dmFuY2VtZW50LCBhdHRlbXB0IHRvIGNsZWFuIGl0CisJICogdXAuICBJZiBsaXN0ZW5lcnMg ZXhpc3QsIHdha2UgdGhlbSB0byBwcm9jZXNzIHRoZWlyIHBlbmRpbmcKKwkgKiBub3RpZmlj YXRpb25zLiAgSWYgbm8gbGlzdGVuZXJzIGV4aXN0LCBkaXNjYXJkIGFsbCBub3RpZmljYXRp b25zLgorCSAqIEVpdGhlciB3YXksIHdlIGJhY2sgb2ZmIGRhdGZyb3plbnhpZCBmb3IgdGhp cyBWQUNVVU0gY3ljbGU7IHRoZSBuZXh0CisJICogVkFDVVVNIHdpbGwgYmVuZWZpdCBmcm9t IHRoZSBjbGVhbnVwIHdlJ3ZlIHRyaWdnZXJlZC4KIAkgKi8KIAlvbGRlc3ROb3RpZnlYaWQg PSBHZXRPbGRlc3ROb3RpZnlUcmFuc2FjdGlvbklkKCk7CiAJaWYgKFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKG9sZGVzdE5vdGlmeVhpZCkgJiYKIAkJVHJhbnNhY3Rpb25JZFByZWNlZGVzKG9s ZGVzdE5vdGlmeVhpZCwgbmV3RnJvemVuWGlkKSkKKwl7CisJCWlmIChhc3luY1F1ZXVlSGFz TGlzdGVuZXJzKCkpCisJCQlTaWduYWxCYWNrZW5kcyh0cnVlKTsKKwkJZWxzZQorCQkJYXN5 bmNRdWV1ZUFkdmFuY2VUYWlsKHRydWUpOworCiAJCW5ld0Zyb3plblhpZCA9IG9sZGVzdE5v dGlmeVhpZDsKKwl9CiAKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzTm9ybWFsKG5ld0Zyb3pl blhpZCkpOwogCUFzc2VydChNdWx0aVhhY3RJZElzVmFsaWQobmV3TWluTXVsdGkpKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9hc3luYy5oCmluZGV4IDBmOGYxN2FkMjIuLjhhZTljNGRmYWUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvYXN5bmMuaApAQCAtMjksNiArMjksMTEgQEAgZXh0ZXJuIHZvaWQgTm90aWZ5TXlG cm9udEVuZChjb25zdCBjaGFyICpjaGFubmVsLAogLyogZ2V0IG9sZGVzdCBYSUQgaW4gdGhl IG5vdGlmaWNhdGlvbiBxdWV1ZSBmb3IgdmFjdXVtIGZyZWV6ZSAqLwogZXh0ZXJuIFRyYW5z YWN0aW9uSWQgR2V0T2xkZXN0Tm90aWZ5VHJhbnNhY3Rpb25JZCh2b2lkKTsKIAorLyogZnVu Y3Rpb25zIGZvciB2YWN1dW0gdG8gbWFuYWdlIG5vdGlmaWNhdGlvbiBxdWV1ZSAqLworZXh0 ZXJuIGJvb2wgYXN5bmNRdWV1ZUhhc0xpc3RlbmVycyh2b2lkKTsKK2V4dGVybiB2b2lkIFNp Z25hbEJhY2tlbmRzKGJvb2wgYWxsX2RhdGFiYXNlcyk7CitleHRlcm4gdm9pZCBhc3luY1F1 ZXVlQWR2YW5jZVRhaWwoYm9vbCBmb3JjZV90b19oZWFkKTsKKwogLyogbm90aWZ5LXJlbGF0 ZWQgU1FMIHN0YXRlbWVudHMgKi8KIGV4dGVybiB2b2lkIEFzeW5jX05vdGlmeShjb25zdCBj aGFyICpjaGFubmVsLCBjb25zdCBjaGFyICpwYXlsb2FkKTsKIGV4dGVybiB2b2lkIEFzeW5j X0xpc3Rlbihjb25zdCBjaGFyICpjaGFubmVsKTsK --29147705fb20430989acf5eea4135e28 Content-Disposition: attachment; filename*0="v12-vacuum_notify_queue_cleanup-with-code-dup.txt" Content-Type: text/plain; name="=?UTF-8?Q?v12-vacuum=5Fnotify=5Fqueue=5Fcleanup-with-code-dup.txt?=" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDhmYzFiYmJhN2EuLjcyYmQ1MmFlOGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYwpAQCAtMjE5MSw2ICsyMTkxLDE2NCBAQCBHZXRPbGRlc3ROb3Rp ZnlUcmFuc2FjdGlvbklkKHZvaWQpCiAJcmV0dXJuIG9sZGVzdFhpZDsKIH0KIAorLyoKKyAq IENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgYWN0aXZlIGxpc3RlbmVycyBpbiB0aGUgbm90aWZp Y2F0aW9uIHF1ZXVlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgYmFj a2VuZCBpcyByZWdpc3RlcmVkIGFzIGEgbGlzdGVuZXIsCisgKiBmYWxzZSBvdGhlcndpc2Uu CisgKi8KK2Jvb2wKK2FzeW5jUXVldWVIYXNMaXN0ZW5lcnModm9pZCkKK3sKKwlib29sCQlo YXNMaXN0ZW5lcnM7CisKKwlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywgTFdfRVhD TFVTSVZFKTsKKwloYXNMaXN0ZW5lcnMgPSAoUVVFVUVfRklSU1RfTElTVEVORVIgIT0gSU5W QUxJRF9QUk9DX05VTUJFUik7CisJTFdMb2NrUmVsZWFzZShOb3RpZnlRdWV1ZUxvY2spOwor CisJcmV0dXJuIGhhc0xpc3RlbmVyczsKK30KKworLyoKKyAqIFdha2UgYWxsIGxpc3Rlbmlu ZyBiYWNrZW5kcyB0byBwcm9jZXNzIG5vdGlmaWNhdGlvbnMuCisgKgorICogVGhpcyBpcyBj YWxsZWQgYnkgVkFDVVVNIHdoZW4gaXQgbmVlZHMgdG8gYWR2YW5jZSBkYXRmcm96ZW54aWQg YnV0IHRoZQorICogbm90aWZpY2F0aW9uIHF1ZXVlIGhhcyBvbGQgWElEcy4gIFdlIHNpZ25h bCBhbGwgbGlzdGVuZXJzIGFjcm9zcyBhbGwKKyAqIGRhdGFiYXNlcyB0aGF0IGFyZW4ndCBh bHJlYWR5IGNhdWdodCB1cCwgc28gdGhleSBjYW4gcHJvY2VzcyB0aGVpcgorICogcGVuZGlu ZyBub3RpZmljYXRpb25zIGFuZCBhZHZhbmNlIHRoZSBxdWV1ZSB0YWlsLgorICovCit2b2lk Cithc3luY1F1ZXVlV2FrZUFsbExpc3RlbmVycyh2b2lkKQoreworCWludDMyCSAgICpwaWRz OworCVByb2NOdW1iZXIgKnByb2Nub3M7CisJaW50CQkJY291bnQ7CisKKwkvKgorCSAqIElk ZW50aWZ5IGJhY2tlbmRzIHRoYXQgd2UgbmVlZCB0byBzaWduYWwuICBXZSBkb24ndCB3YW50 IHRvIHNlbmQKKwkgKiBzaWduYWxzIHdoaWxlIGhvbGRpbmcgdGhlIE5vdGlmeVF1ZXVlTG9j aywgc28gdGhpcyBsb29wIGp1c3QgYnVpbGRzIGEKKwkgKiBsaXN0IG9mIHRhcmdldCBQSURz LgorCSAqCisJICogWFhYIGluIHByaW5jaXBsZSB0aGVzZSBwYWxsb2NzIGNvdWxkIGZhaWws IHdoaWNoIHdvdWxkIGJlIGJhZC4gTWF5YmUKKwkgKiBwcmVhbGxvY2F0ZSB0aGUgYXJyYXlz PyAgVGhleSdyZSBub3QgdGhhdCBsYXJnZSwgdGhvdWdoLgorCSAqLworCXBpZHMgPSAoaW50 MzIgKikgcGFsbG9jKE1heEJhY2tlbmRzICogc2l6ZW9mKGludDMyKSk7CisJcHJvY25vcyA9 IChQcm9jTnVtYmVyICopIHBhbGxvYyhNYXhCYWNrZW5kcyAqIHNpemVvZihQcm9jTnVtYmVy KSk7CisJY291bnQgPSAwOworCisJTFdMb2NrQWNxdWlyZShOb3RpZnlRdWV1ZUxvY2ssIExX X0VYQ0xVU0lWRSk7CisJZm9yIChQcm9jTnVtYmVyIGkgPSBRVUVVRV9GSVJTVF9MSVNURU5F UjsgaSAhPSBJTlZBTElEX1BST0NfTlVNQkVSOyBpID0gUVVFVUVfTkVYVF9MSVNURU5FUihp KSkKKwl7CisJCWludDMyCQlwaWQgPSBRVUVVRV9CQUNLRU5EX1BJRChpKTsKKwkJUXVldWVQ b3NpdGlvbiBwb3M7CisKKwkJQXNzZXJ0KHBpZCAhPSBJbnZhbGlkUGlkKTsKKwkJcG9zID0g UVVFVUVfQkFDS0VORF9QT1MoaSk7CisKKwkJLyoKKwkJICogU2lnbmFsIGxpc3RlbmVycyB1 bmxlc3MgdGhleSdyZSBhbHJlYWR5IGNhdWdodCB1cC4KKwkJICovCisJCWlmIChRVUVVRV9Q T1NfRVFVQUwocG9zLCBRVUVVRV9IRUFEKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIE9LLCBu ZWVkIHRvIHNpZ25hbCB0aGlzIG9uZSAqLworCQlwaWRzW2NvdW50XSA9IHBpZDsKKwkJcHJv Y25vc1tjb3VudF0gPSBpOworCQljb3VudCsrOworCX0KKwlMV0xvY2tSZWxlYXNlKE5vdGlm eVF1ZXVlTG9jayk7CisKKwkvKiBOb3cgc2VuZCBzaWduYWxzICovCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBjb3VudDsgaSsrKQorCXsKKwkJaW50MzIJCXBpZCA9IHBpZHNbaV07CisKKwkJ LyoKKwkJICogSWYgd2UgYXJlIHNpZ25hbGluZyBvdXIgb3duIHByb2Nlc3MsIG5vIG5lZWQg dG8gaW52b2x2ZSB0aGUga2VybmVsOworCQkgKiBqdXN0IHNldCB0aGUgZmxhZyBkaXJlY3Rs eS4KKwkJICovCisJCWlmIChwaWQgPT0gTXlQcm9jUGlkKQorCQl7CisJCQlub3RpZnlJbnRl cnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICog Tm90ZTogYXNzdW1pbmcgdGhpbmdzIGFyZW4ndCBicm9rZW4sIGEgc2lnbmFsIGZhaWx1cmUg aGVyZSBjb3VsZAorCQkgKiBvbmx5IG9jY3VyIGlmIHRoZSB0YXJnZXQgYmFja2VuZCBleGl0 ZWQgc2luY2Ugd2UgcmVsZWFzZWQKKwkJICogTm90aWZ5UXVldWVMb2NrOyB3aGljaCBpcyB1 bmxpa2VseSBidXQgY2VydGFpbmx5IHBvc3NpYmxlLiBTbyB3ZQorCQkgKiBqdXN0IGxvZyBh IGxvdy1sZXZlbCBkZWJ1ZyBtZXNzYWdlIGlmIGl0IGhhcHBlbnMuCisJCSAqLworCQlpZiAo U2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX05PVElGWV9JTlRFUlJVUFQsIHByb2Nub3Nb aV0pIDwgMCkKKwkJCWVsb2coREVCVUczLCAiY291bGQgbm90IHNpZ25hbCBiYWNrZW5kIHdp dGggUElEICVkOiAlbSIsIHBpZCk7CisJfQorCisJcGZyZWUocGlkcyk7CisJcGZyZWUocHJv Y25vcyk7Cit9CisKKy8qCisgKiBEaXNjYXJkIGFsbCBub3RpZmljYXRpb25zIGluIHRoZSBx dWV1ZSB3aGVuIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMuCisgKgorICogVGhpcyBpcyBjYWxs ZWQgYnkgVkFDVVVNIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBxdWV1ZSBoYXMgb2xkIFhJRHMg YnV0IG5vCisgKiBhY3RpdmUgbGlzdGVuZXJzIGV4aXN0LiAgV2UgYWR2YW5jZSB0aGUgdGFp bCB0byB0aGUgaGVhZCwgZWZmZWN0aXZlbHkKKyAqIGRpc2NhcmRpbmcgYWxsIHF1ZXVlZCBu b3RpZmljYXRpb25zLCBhbmQgdHJ1bmNhdGUgdGhlIFNMUlUgc2VnbWVudHMuCisgKi8KK3Zv aWQKK2FzeW5jUXVldWVBZHZhbmNlVGFpbE5vTGlzdGVuZXJzKHZvaWQpCit7CisJUXVldWVQ b3NpdGlvbiBtaW47CisJaW50NjQJCW9sZHRhaWxwYWdlOworCWludDY0CQluZXd0YWlscGFn ZTsKKwlpbnQ2NAkJYm91bmRhcnk7CisKKwkvKiBSZXN0cmljdCB0YXNrIHRvIG9uZSBiYWNr ZW5kIHBlciBjbHVzdGVyOyBzZWUgU2ltcGxlTHJ1VHJ1bmNhdGUoKS4gKi8KKwlMV0xvY2tB Y3F1aXJlKE5vdGlmeVF1ZXVlVGFpbExvY2ssIExXX0VYQ0xVU0lWRSk7CisJTFdMb2NrQWNx dWlyZShOb3RpZnlRdWV1ZUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIFZlcmlm eSB0aGF0IHRoZXJlIGFyZSBzdGlsbCBubyBsaXN0ZW5lcnMuCisJICovCisJaWYgKFFVRVVF X0ZJUlNUX0xJU1RFTkVSICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJeworCQlMV0xvY2tS ZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CisJCUxXTG9ja1JlbGVhc2UoTm90aWZ5UXVldWVU YWlsTG9jayk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIEFkdmFuY2UgdGhlIGxvZ2lj YWwgdGFpbCB0byB0aGUgaGVhZCwgZGlzY2FyZGluZyBhbGwgbm90aWZpY2F0aW9ucy4KKwkg Ki8KKwltaW4gPSBRVUVVRV9IRUFEOworCVFVRVVFX1RBSUwgPSBtaW47CisJb2xkdGFpbHBh Z2UgPSBRVUVVRV9TVE9QX1BBR0U7CisJTFdMb2NrUmVsZWFzZShOb3RpZnlRdWV1ZUxvY2sp OworCisJLyoKKwkgKiBXZSBjYW4gdHJ1bmNhdGUgc29tZXRoaW5nIGlmIHRoZSBnbG9iYWwg dGFpbCBhZHZhbmNlZCBhY3Jvc3MgYW4gU0xSVQorCSAqIHNlZ21lbnQgYm91bmRhcnkuCisJ ICoKKwkgKiBYWFggaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHRydW5jYXRlIG9ubHkgb25jZSBl dmVyeSBzZXZlcmFsIHNlZ21lbnRzLCB0bworCSAqIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGRp cmVjdG9yeSBzY2Fucy4KKwkgKi8KKwluZXd0YWlscGFnZSA9IFFVRVVFX1BPU19QQUdFKG1p bik7CisJYm91bmRhcnkgPSBuZXd0YWlscGFnZSAtIChuZXd0YWlscGFnZSAlIFNMUlVfUEFH RVNfUEVSX1NFR01FTlQpOworCWlmIChhc3luY1F1ZXVlUGFnZVByZWNlZGVzKG9sZHRhaWxw YWdlLCBib3VuZGFyeSkpCisJeworCQkvKgorCQkgKiBTaW1wbGVMcnVUcnVuY2F0ZSgpIHdp bGwgYXNrIGZvciBTTFJVIGJhbmsgbG9ja3MgYnV0IHdpbGwgYWxzbworCQkgKiByZWxlYXNl IHRoZSBsb2NrIGFnYWluLgorCQkgKi8KKwkJU2ltcGxlTHJ1VHJ1bmNhdGUoTm90aWZ5Q3Rs LCBuZXd0YWlscGFnZSk7CisKKwkJTFdMb2NrQWNxdWlyZShOb3RpZnlRdWV1ZUxvY2ssIExX X0VYQ0xVU0lWRSk7CisJCVFVRVVFX1NUT1BfUEFHRSA9IG5ld3RhaWxwYWdlOworCQlMV0xv Y2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CisJfQorCisJTFdMb2NrUmVsZWFzZShOb3Rp ZnlRdWV1ZVRhaWxMb2NrKTsKK30KKwogLyoKICAqIEFkdmFuY2UgdGhlIHNoYXJlZCBxdWV1 ZSB0YWlsIHZhcmlhYmxlIHRvIHRoZSBtaW5pbXVtIG9mIGFsbCB0aGUKICAqIHBlci1iYWNr ZW5kIHRhaWwgcG9pbnRlcnMuICBUcnVuY2F0ZSBwZ19ub3RpZnkgc3BhY2UgaWYgcG9zc2li bGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IGU1ZmVkZmIzMjMuLjE4ZTdlM2IxNDUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xNzM5LDExICsxNzM5LDI0IEBAIHZhY191 cGRhdGVfZGF0ZnJvemVueGlkKHZvaWQpCiAJICogQWxzbyBjb25zaWRlciB0aGUgb2xkZXN0 IFhJRCBpbiB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLCBzaW5jZSBiYWNrZW5kcwogCSAqIHdp bGwgbmVlZCB0byBjYWxsIFRyYW5zYWN0aW9uSWREaWRDb21taXQoKSBvbiB0aG9zZSBYSURz IHdoZW4KIAkgKiBwcm9jZXNzaW5nIHRoZSBub3RpZmljYXRpb25zLgorCSAqCisJICogSWYg dGhlIHF1ZXVlIGlzIGJsb2NraW5nIGRhdGZyb3plbnhpZCBhZHZhbmNlbWVudCwgYXR0ZW1w dCB0byBjbGVhbiBpdAorCSAqIHVwLiAgSWYgbGlzdGVuZXJzIGV4aXN0LCB3YWtlIHRoZW0g dG8gcHJvY2VzcyB0aGVpciBwZW5kaW5nCisJICogbm90aWZpY2F0aW9ucy4gIElmIG5vIGxp c3RlbmVycyBleGlzdCwgZGlzY2FyZCBhbGwgbm90aWZpY2F0aW9ucy4KKwkgKiBFaXRoZXIg d2F5LCB3ZSBiYWNrIG9mZiBkYXRmcm96ZW54aWQgZm9yIHRoaXMgVkFDVVVNIGN5Y2xlOyB0 aGUgbmV4dAorCSAqIFZBQ1VVTSB3aWxsIGJlbmVmaXQgZnJvbSB0aGUgY2xlYW51cCB3ZSd2 ZSB0cmlnZ2VyZWQuCiAJICovCiAJb2xkZXN0Tm90aWZ5WGlkID0gR2V0T2xkZXN0Tm90aWZ5 VHJhbnNhY3Rpb25JZCgpOwogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChvbGRlc3ROb3Rp ZnlYaWQpICYmCiAJCVRyYW5zYWN0aW9uSWRQcmVjZWRlcyhvbGRlc3ROb3RpZnlYaWQsIG5l d0Zyb3plblhpZCkpCisJeworCQlpZiAoYXN5bmNRdWV1ZUhhc0xpc3RlbmVycygpKQorCQkJ YXN5bmNRdWV1ZVdha2VBbGxMaXN0ZW5lcnMoKTsKKwkJZWxzZQorCQkJYXN5bmNRdWV1ZUFk dmFuY2VUYWlsTm9MaXN0ZW5lcnMoKTsKKwogCQluZXdGcm96ZW5YaWQgPSBvbGRlc3ROb3Rp ZnlYaWQ7CisJfQogCiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc05vcm1hbChuZXdGcm96ZW5Y aWQpKTsKIAlBc3NlcnQoTXVsdGlYYWN0SWRJc1ZhbGlkKG5ld01pbk11bHRpKSk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvYXN5bmMuaAppbmRleCAwZjhmMTdhZDIyLi45NGZlMmQwNzk2IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2FzeW5jLmgKQEAgLTI5LDYgKzI5LDExIEBAIGV4dGVybiB2b2lkIE5vdGlmeU15RnJv bnRFbmQoY29uc3QgY2hhciAqY2hhbm5lbCwKIC8qIGdldCBvbGRlc3QgWElEIGluIHRoZSBu b3RpZmljYXRpb24gcXVldWUgZm9yIHZhY3V1bSBmcmVlemUgKi8KIGV4dGVybiBUcmFuc2Fj dGlvbklkIEdldE9sZGVzdE5vdGlmeVRyYW5zYWN0aW9uSWQodm9pZCk7CiAKKy8qIGZ1bmN0 aW9ucyBmb3IgdmFjdXVtIHRvIG1hbmFnZSBub3RpZmljYXRpb24gcXVldWUgKi8KK2V4dGVy biBib29sIGFzeW5jUXVldWVIYXNMaXN0ZW5lcnModm9pZCk7CitleHRlcm4gdm9pZCBhc3lu Y1F1ZXVlV2FrZUFsbExpc3RlbmVycyh2b2lkKTsKK2V4dGVybiB2b2lkIGFzeW5jUXVldWVB ZHZhbmNlVGFpbE5vTGlzdGVuZXJzKHZvaWQpOworCiAvKiBub3RpZnktcmVsYXRlZCBTUUwg c3RhdGVtZW50cyAqLwogZXh0ZXJuIHZvaWQgQXN5bmNfTm90aWZ5KGNvbnN0IGNoYXIgKmNo YW5uZWwsIGNvbnN0IGNoYXIgKnBheWxvYWQpOwogZXh0ZXJuIHZvaWQgQXN5bmNfTGlzdGVu KGNvbnN0IGNoYXIgKmNoYW5uZWwpOwo= --29147705fb20430989acf5eea4135e28 Content-Disposition: attachment; filename="async_notify_freeze_xids.txt" Content-Type: text/plain; name="async_notify_freeze_xids.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDRiZDM3ZDViZWI1Li5iYTA2MjM0ZGM4ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hc3luYy5jCkBAIC0yMTY4LDYgKzIxNjgsMTIwIEBAIGFzeW5jUXVldWVB ZHZhbmNlVGFpbCh2b2lkKQogCUxXTG9ja1JlbGVhc2UoTm90aWZ5UXVldWVUYWlsTG9jayk7 CiB9CiAKKy8qCisgKiBBc3luY05vdGlmeUZyZWV6ZVhpZHMKKyAqCisgKiBQcmVwYXJlIHRo ZSBhc3luYyBub3RpZmljYXRpb24gcXVldWUgZm9yIENMT0cgdHJ1bmNhdGlvbiBieSBmcmVl emluZworICogdHJhbnNhY3Rpb24gSURzIHRoYXQgYXJlIGFib3V0IHRvIGJlY29tZSBpbmFj Y2Vzc2libGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgVkFDVVVNIGJl Zm9yZSBhZHZhbmNpbmcgZGF0ZnJvemVueGlkLiBJdCBzY2FucworICogdGhlIG5vdGlmaWNh dGlvbiBxdWV1ZSBhbmQgcmVwbGFjZXMgWElEcyB0aGF0IHdvdWxkIGJlY29tZSBpbmFjY2Vz c2libGUKKyAqIGFmdGVyIENMT0cgdHJ1bmNhdGlvbiB3aXRoIHNwZWNpYWwgbWFya2VyczoK KyAqIC0gQ29tbWl0dGVkIHRyYW5zYWN0aW9ucyBhcmUgc2V0IHRvIEZyb3plblRyYW5zYWN0 aW9uSWQKKyAqIC0gQWJvcnRlZC9jcmFzaGVkIHRyYW5zYWN0aW9ucyBhcmUgc2V0IHRvIElu dmFsaWRUcmFuc2FjdGlvbklkCisgKgorICogT25seSBYSURzIDwgbmV3RnJvemVuWGlkIGFy ZSBwcm9jZXNzZWQsIGFzIHRob3NlIGFyZSB0aGUgb25lcyB3aG9zZSBDTE9HCisgKiBwYWdl cyB3aWxsIGJlIHRydW5jYXRlZC4gSWYgWElEIDwgbmV3RnJvemVuWGlkLCBpdCBjYW5ub3Qg c3RpbGwgYmUgcnVubmluZworICogKG9yIGl0IHdvdWxkIGhhdmUgaGVsZCBiYWNrIG5ld0Zy b3plblhpZCB0aHJvdWdoIFByb2NBcnJheSkuCisgKiBUaGVyZWZvcmUsIGlmIFRyYW5zYWN0 aW9uSWREaWRDb21taXQgcmV0dXJucyBmYWxzZSwgd2Uga25vdyB0aGUgdHJhbnNhY3Rpb24K KyAqIGVpdGhlciBhYm9ydGVkIGV4cGxpY2l0bHkgb3IgY3Jhc2hlZCwgYW5kIHdlIGNhbiBz YWZlbHkgbWFyayBpdCBpbnZhbGlkLgorICovCit2b2lkCitBc3luY05vdGlmeUZyZWV6ZVhp ZHMoVHJhbnNhY3Rpb25JZCBuZXdGcm96ZW5YaWQpCit7CisJUXVldWVQb3NpdGlvbiBwb3M7 CisJUXVldWVQb3NpdGlvbiBoZWFkOworCWludDY0CQljdXJwYWdlID0gLTE7CisJaW50CQkJ c2xvdG5vID0gLTE7CisJY2hhcgkgICAqcGFnZV9idWZmZXIgPSBOVUxMOworCWJvb2wJCXBh Z2VfZGlydHkgPSBmYWxzZTsKKworCS8qCisJICogQWNxdWlyZSBsb2NrcyBpbiB0aGUgY29y cmVjdCBvcmRlciB0byBhdm9pZCBkZWFkbG9ja3MuIEFzIHBlciB0aGUKKwkgKiBsb2NraW5n IHByb3RvY29sOiBOb3RpZnlRdWV1ZVRhaWxMb2NrLCB0aGVuIE5vdGlmeVF1ZXVlTG9jaywg dGhlbiBTTFJVCisJICogYmFuayBsb2Nrcy4KKwkgKgorCSAqIFdlIG9ubHkgbmVlZCBTSEFS RUQgbW9kZSBzaW5jZSB3ZSdyZSBqdXN0IHJlYWRpbmcgdGhlIGhlYWQvdGFpbAorCSAqIHBv c2l0aW9ucywgbm90IG1vZGlmeWluZyB0aGVtLgorCSAqLworCUxXTG9ja0FjcXVpcmUoTm90 aWZ5UXVldWVUYWlsTG9jaywgTFdfU0hBUkVEKTsKKwlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1 ZXVlTG9jaywgTFdfU0hBUkVEKTsKKworCXBvcyA9IFFVRVVFX1RBSUw7CisJaGVhZCA9IFFV RVVFX0hFQUQ7CisKKwkvKiBSZWxlYXNlIE5vdGlmeVF1ZXVlTG9jayBlYXJseSwgd2Ugb25s eSBuZWVkZWQgdG8gcmVhZCB0aGUgcG9zaXRpb25zICovCisJTFdMb2NrUmVsZWFzZShOb3Rp ZnlRdWV1ZUxvY2spOworCisJLyoKKwkgKiBTY2FuIHRoZSBxdWV1ZSBmcm9tIHRhaWwgdG8g aGVhZCwgZnJlZXppbmcgWElEcyBhcyBuZWVkZWQuIFdlIGhvbGQKKwkgKiBOb3RpZnlRdWV1 ZVRhaWxMb2NrIHRocm91Z2hvdXQgdG8gZW5zdXJlIHRoZSB0YWlsIGRvZXNuJ3QgbW92ZSB3 aGlsZQorCSAqIHdlJ3JlIHdvcmtpbmcuCisJICovCisJd2hpbGUgKCFRVUVVRV9QT1NfRVFV QUwocG9zLCBoZWFkKSkKKwl7CisJCUFzeW5jUXVldWVFbnRyeSAqcWU7CisJCVRyYW5zYWN0 aW9uSWQgeGlkOworCQlpbnQ2NAkJcGFnZW5vID0gUVVFVUVfUE9TX1BBR0UocG9zKTsKKwkJ aW50CQkJb2Zmc2V0ID0gUVVFVUVfUE9TX09GRlNFVChwb3MpOworCisJCS8qIElmIHdlIG5l ZWQgYSBkaWZmZXJlbnQgcGFnZSwgcmVsZWFzZSBvbGQgbG9jayBhbmQgZ2V0IG5ldyBvbmUg Ki8KKwkJaWYgKHBhZ2VubyAhPSBjdXJwYWdlKQorCQl7CisJCQlMV0xvY2sJICAgKmxvY2s7 CisKKwkJCS8qIFJlbGVhc2UgcHJldmlvdXMgcGFnZSBpZiBhbnkgKi8KKwkJCWlmIChzbG90 bm8gPj0gMCkKKwkJCXsKKwkJCQlpZiAocGFnZV9kaXJ0eSkKKwkJCQl7CisJCQkJCU5vdGlm eUN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10gPSB0cnVlOworCQkJCQlwYWdlX2Rp cnR5ID0gZmFsc2U7CisJCQkJfQorCQkJCUxXTG9ja1JlbGVhc2UoU2ltcGxlTHJ1R2V0QmFu a0xvY2soTm90aWZ5Q3RsLCBjdXJwYWdlKSk7CisJCQl9CisKKwkJCWxvY2sgPSBTaW1wbGVM cnVHZXRCYW5rTG9jayhOb3RpZnlDdGwsIHBhZ2Vubyk7CisJCQlMV0xvY2tBY3F1aXJlKGxv Y2ssIExXX0VYQ0xVU0lWRSk7CisJCQlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZShOb3Rp ZnlDdGwsIHBhZ2VubywgdHJ1ZSwKKwkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklk KTsKKwkJCXBhZ2VfYnVmZmVyID0gTm90aWZ5Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Ns b3Rub107CisJCQljdXJwYWdlID0gcGFnZW5vOworCQl9CisKKwkJcWUgPSAoQXN5bmNRdWV1 ZUVudHJ5ICopIChwYWdlX2J1ZmZlciArIG9mZnNldCk7CisJCXhpZCA9IHFlLT54aWQ7CisK KwkJaWYgKFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpICYmCisJCQlUcmFuc2FjdGlvbklk UHJlY2VkZXMoeGlkLCBuZXdGcm96ZW5YaWQpKQorCQl7CisJCQlpZiAoVHJhbnNhY3Rpb25J ZERpZENvbW1pdCh4aWQpKQorCQkJeworCQkJCXFlLT54aWQgPSBGcm96ZW5UcmFuc2FjdGlv bklkOworCQkJCXBhZ2VfZGlydHkgPSB0cnVlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CXFlLT54aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCQlwYWdlX2RpcnR5ID0gdHJ1 ZTsKKwkJCX0KKwkJfQorCisJCS8qIEFkdmFuY2UgdG8gbmV4dCBlbnRyeSAqLworCQlhc3lu Y1F1ZXVlQWR2YW5jZSgmcG9zLCBxZS0+bGVuZ3RoKTsKKwl9CisKKwkvKiBSZWxlYXNlIGZp bmFsIHBhZ2UgbG9jayBpZiB3ZSBhY3F1aXJlZCBvbmUgKi8KKwlpZiAoc2xvdG5vID49IDAp CisJeworCQlpZiAocGFnZV9kaXJ0eSkKKwkJCU5vdGlmeUN0bC0+c2hhcmVkLT5wYWdlX2Rp cnR5W3Nsb3Rub10gPSB0cnVlOworCQlMV0xvY2tSZWxlYXNlKFNpbXBsZUxydUdldEJhbmtM b2NrKE5vdGlmeUN0bCwgY3VycGFnZSkpOworCX0KKworCUxXTG9ja1JlbGVhc2UoTm90aWZ5 UXVldWVUYWlsTG9jayk7Cit9CisKIC8qCiAgKiBQcm9jZXNzSW5jb21pbmdOb3RpZnkKICAq CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IGVkMDNlM2JkNTBkLi4yZThkYmYwM2JkNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv YXN5bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jbHVzdGVyLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKQEAgLTE3 NTgsNiArMTc1OSwxMyBAQCB2YWNfdXBkYXRlX2RhdGZyb3plbnhpZCh2b2lkKQogCiAJZGJm b3JtID0gKEZvcm1fcGdfZGF0YWJhc2UpIEdFVFNUUlVDVCh0dXBsZSk7CiAKKwkvKgorCSAq IEJlZm9yZSBhZHZhbmNpbmcgZGF0ZnJvemVueGlkLCBmcmVlemUgYW55IG9sZCB0cmFuc2Fj dGlvbiBJRHMgaW4gdGhlCisJICogYXN5bmMgbm90aWZpY2F0aW9uIHF1ZXVlIHRvIHByZXZl bnQgImNvdWxkIG5vdCBhY2Nlc3Mgc3RhdHVzIG9mCisJICogdHJhbnNhY3Rpb24iIGVycm9y cyB3aGVuIExJU1RFTiBpcyBjYWxsZWQgYWZ0ZXIgQ0xPRyB0cnVuY2F0aW9uLgorCSAqLwor CUFzeW5jTm90aWZ5RnJlZXplWGlkcyhuZXdGcm96ZW5YaWQpOworCiAJLyoKIAkgKiBBcyBp biB2YWNfdXBkYXRlX3JlbHN0YXRzKCksIHdlIG9yZGluYXJpbHkgZG9uJ3Qgd2FudCB0byBs ZXQKIAkgKiBkYXRmcm96ZW54aWQgZ28gYmFja3dhcmQ7IGJ1dCBpZiBpdCdzICJpbiB0aGUg ZnV0dXJlIiB0aGVuIGl0IG11c3QgYmUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2FzeW5jLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCmluZGV4IGY3NWMz ZGY5NTU2Li5hYWVjNzMxNGMxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv YXN5bmMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCkBAIC00Niw0ICs0 Niw3IEBAIGV4dGVybiB2b2lkIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKTsKIC8qIHBy b2Nlc3MgaW50ZXJydXB0cyAqLwogZXh0ZXJuIHZvaWQgUHJvY2Vzc05vdGlmeUludGVycnVw dChib29sIGZsdXNoKTsKIAorLyogZnJlZXplIG9sZCB0cmFuc2FjdGlvbiBJRHMgaW4gbm90 aWZ5IHF1ZXVlIChjYWxsZWQgYnkgVkFDVVVNKSAqLworZXh0ZXJuIHZvaWQgQXN5bmNOb3Rp ZnlGcmVlemVYaWRzKFRyYW5zYWN0aW9uSWQgbmV3RnJvemVuWGlkKTsKKwogI2VuZGlmCQkJ CQkJCS8qIEFTWU5DX0ggKi8K --29147705fb20430989acf5eea4135e28--