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.98.2) (envelope-from ) id 1xCorn-00000000A0Y-44cD for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Oct 2026 01:48:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xCorm-00000001ZzO-2z52 for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Oct 2026 01:48:46 +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.98.2) (envelope-from ) id 1xCorm-00000001ZzG-1BJX for pgsql-hackers@lists.postgresql.org; Sat, 03 Oct 2026 01:48:46 +0000 Received: from mail-vs2-x27.google.com ([2a00:1450:4864:3a::27]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xCorj-000000007iG-2dW3 for pgsql-hackers@lists.postgresql.org; Sat, 03 Oct 2026 01:48:45 +0000 Received: by mail-vs2-x27.google.com with SMTP id ada2fe7eead31-7c1949ab6f7so3767137.0 for ; Fri, 02 Oct 2026 18:48:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790992122; x=1791596922; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=4wOxS7SIAn3R/XGsceQHzoXy2TlgJ17IUPBLCVJDQkA=; b=BZNhAaSfj5D1XsaDmdZ1sdRa5n/KT1it0KwinYrGHjtBp80Pe4YwAb15fOYL93JFfi oFBuSSOvuZywnz8jxiozJl4a9eSYZwzfptvriXv82iMFfp2GkMRIZkx0+jKjIvvErGR8 rNNhiHtS8549qXWPggPO9ABNhRsGUOIZfczqxJKWrQPcFnrhlUbebWrYxTcfJ615s4pH Ljs+YFaPqCw7CyRJ+Nudfi4Abh4hP3ib20WIxRanalQFxoUNeqIZ4bCjnbjGV/wo4zSH KMUWpKYTKKdr+5RuXURfkRvOAggJQYXwrB7GeWyqtK/MhdTb/T5v1ImQApMXWDtOfaXg LeAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790992122; x=1791596922; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=4wOxS7SIAn3R/XGsceQHzoXy2TlgJ17IUPBLCVJDQkA=; b=yEhZ3Wc4XnogvcNjDF8Y69eqXCpganKyjLBsHQLKw+9gBOKtaqV/E25xBe2pc95ufq SiK+Ser3CnhSIwnRLhXvIEKZAXcFcahZ5lTwSbjvc/1a/Q379KDxiXuEYCZHiHcVfFNu gPk++czUNUERK9yjcmLPf/7i10ump0f1yWBGXe8RDQMQGnPszf5PxFyPiik57+1ANjvC ycwRx/x/IB27wDaA5QihGI2Me7QRLv3fH9vvr+rrB0ehrWuTYqu91wio3/XBDE31E+ym W0UJEH46IBkKJzKZVkAd8He9BNZa/JxxDmkPU/B1rtnWw0CgllXHujsxmy0Xs2f3teJy nihg== X-Gm-Message-State: AFq9FYLsReG4/B0oq1tGYuhlbYkzm6Ajtkbw38e2geww+mNHRc+GIO+k 649PjqrCFD1in+jLQJhajLcJ2C9ifl08qyUxvgNP6YwfclfmoDdBtmsL X-Gm-Gg: AYBFou3hYY0Z+Aw2V7SNMMGfvDGnY53c7mxG13tZmBW64/dX+9bSfysRWCopg3yPhzY e53JzEWKQrM1kh3teOxpDhgjLKPRMIDfNbzQN5NcZCl/A0J88Hj8L31LnWNIub65GI9jN6vtjfH NIGon6uTXBmP1Hm40ZukujCLH2MukiW8IkAuon5y5YosOpAJ+jMGYSzAGLXHXp/B8yAi/yEdpAP lOO9ZB1G6ScpeI4kKDQfd5y50BMxKtn1fpEnKZn2MWCAVflwvBkYSoRNLcUu4TT9xlf+TQAXQwq 1V5tT+lHoiisKdbMCIDJT2FattlLNfoq74VtB1KQLYkb4EUX9CqiYs1Im3Opm1Gx+mMG7KNx9wp 3c32kB0fLOAhCWnqbfDpGvlZo8rYFfOnbwnjiKtl+oSyajxBobZNFamcDQI4lSnyylr69WWHFrx rJHizGeZzCKDh5R7gcIXeOZGsr1VW0VI6pX3F0TAUnPCzLIAWYGryIlNdZXuGTA20hvkj9uFjPi bTqidsNMK35hDIixTYYWOGvaz5bfiJVyTt9HxX1tZIdnDGcyQXs3URe/zmNd5MzcfqeVeOlqQyg odkuL8tyYbFnZUN8njQrvdDmFA== X-Received: by 2002:a67:c983:0:b0:7c2:799c:9022 with SMTP id ada2fe7eead31-7c2799ca5a8mr69573137.2.1790992121461; Fri, 02 Oct 2026 18:48:41 -0700 (PDT) Received: from 192.168.1.109 ([2803:3c90:cee:ea00:5c3c:7e70:29e3:7a55]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-98b2effcdc0sm4475120241.9.2026.10.02.18.48.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Oct 2026 18:48:40 -0700 (PDT) From: Manu To: Kirill Reshke Cc: pgsql-hackers@lists.postgresql.org Subject: Re: Fix reindexdb with parallel index-level conrurrent run Date: Fri, 02 Oct 2026 22:48:37 -0300 Message-ID: <179099211731.145666.6625256734261949794@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0111877691015305578==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============0111877691015305578== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi Kirill, > reindexdb: error: processing of database "reshke" failed: ERROR: > REINDEX CONCURRENTLY cannot run inside a transaction block Reproduced on master, REL_18 and REL_17. With the patch, every --concurrently --jobs case I tried rebuilds all the requested indexes, and the new test in 090_reindexdb.pl fails without the reindexdb.c change and passes with it. I measured it as well, and a few things came up, all in the new branch. 1. --jobs no longer runs in parallel. The branch waits for every command with consumeQueryResult(), even for an index that is the only one of its table, and the main loop hands out nothing while it waits. Four tables with one index each, 3M rows per table, median of 6 rounds, same server for all clients: reindexdb --concurrently -j 4 -i t1_b -i t2_b -i t3_b -i t4_b master: 6.3 s v1: 22.5 s v2 (attached): 6.6 s (-j 1: 22.5 s) 2. A cancel only stops the current index. The inner loop never looks at CancelRequested, so after Ctrl-C reindexdb goes on with the rest of the table's indexes. With one table of three 2M-row indexes and SIGINT after 3 s, -j 1 exits at once with nothing more rebuilt, while v1 with -j 2 exits 9 s later, having rebuilt the other two. For the same reason a failed REINDEX does not stop the run, while elsewhere reindexdb stops at the first failure (with -j 1, and with -j 2 without --concurrently). 3. Back-patching. ParallelSlotSetIdle() only exists from REL_19 on (750816971b3), so the patch does not compile on REL_18 or REL_17; "free_slot->inUse = false" works there. On REL_17 there is a quieter trap: indices_tables_list is a SimpleStringList, and the existing branch compares it with strcmp(). The new "==" compiles, but it compares pointers and never matches. With v1 alone that goes unnoticed, because everything runs one at a time anyway, but once a single-index table may run asynchronously, as with 0002, the indexes of one table end up in different jobs: REL_17 then fails with "deadlock detected" in 5 runs out of 5, and passes 5 out of 5 with strcmp(). Attached is v2 as two patches: 0001 is your patch, unchanged. It had no commit message, so I wrote one from your mail; please change it as you like. 0002 addresses 1 and 2. It takes the waiting path only when the next index belongs to the same table, so a single-index table goes through the normal asynchronous path, as on master. It also stops at the first failure or cancel. 090 passes, and the cancel case exits at once with nothing more rebuilt. With the two changes from point 3, 0001+0002 and 090 pass on REL_18 and REL_17 (on 17 the test hunk needs the short -i option). I can post versions for those branches if that helps. What v2 does not solve: the main loop still waits while a multi-index table is processed. Tables are ordered by the size of their largest index, ascending, so a small multi-index table is handed out first and delays the larger ones. One table with two 1.5M-row indexes plus three tables with one 3M-row index, -j 4: v1: 23.6 s v2: 12.0 s the two-index table alone: 5.1 s the other three alone, -j 3: 6.5 s Fixing that would need the slot to send the table's next command itself, which is a larger change than I would put in a back-patched fix. Regards, Manu --===============0111877691015305578== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Fix-reindexdb-jobs-concurrently-with-indexes-of-t.patch" MIME-Version: 1.0 RnJvbSBjNTI4NDEzNDdmMTJhY2MzNTFhMmI4OTZiMWI5MTA1NGU3ZWRhZTkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29t PgpEYXRlOiBGcmksIDIgT2N0IDIwMjYgMjI6NDU6MDkgLTAzMDAKU3ViamVjdDogW1BBVENIIHYy IDEvMl0gRml4IHJlaW5kZXhkYiAtLWpvYnMgLS1jb25jdXJyZW50bHkgd2l0aCBpbmRleGVzIG9m CiB0aGUgc2FtZSB0YWJsZQoKRm9yIHBhcmFsbGVsIGluZGV4LWxldmVsIFJFSU5ERVgsIHJlaW5k ZXhkYiBwdXRzIHRoZSBjb21tYW5kcyBmb3IgYWxsCnRoZSBpbmRleGVzIG9mIG9uZSB0YWJsZSBp bnRvIGEgc2luZ2xlIHF1ZXJ5LiAgQSBtdWx0aS1zdGF0ZW1lbnQKc2ltcGxlIHF1ZXJ5IHJ1bnMg YXMgYW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2ssIHdoZXJlIFJFSU5ERVgKQ09OQ1VSUkVO VExZIGlzIG5vdCBhbGxvd2VkLCBzbyB0aGUgcnVuIGZhaWxlZC4gIFdpdGggLS1jb25jdXJyZW50 bHksCnNlbmQgZWFjaCBjb21tYW5kIHNlcGFyYXRlbHkgaW5zdGVhZC4KCk92ZXJzaWdodCBpbiA0 N2Y5OWE0MDdkLgotLS0KIHNyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYyAgICAgICAgICB8IDQz ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9iaW4vc2NyaXB0cy90LzA5MF9yZWlu ZGV4ZGIucGwgICB8IDI0ICsrKysrKysrKysrKysrKysKIHNyYy9mZV91dGlscy9wYXJhbGxlbF9z bG90LmMgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9mZV91dGlscy9wYXJhbGxlbF9zbG90 LmggfCAgOSArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMgYi9zcmMv YmluL3NjcmlwdHMvcmVpbmRleGRiLmMKaW5kZXggZDdmYjE2ZDNjODUuLmQ3Nzg0ZGUzZjU1IDEw MDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMKKysrIGIvc3JjL2Jpbi9zY3Jp cHRzL3JlaW5kZXhkYi5jCkBAIC00MzQsNyArNDM0LDcgQEAgcmVpbmRleF9vbmVfZGF0YWJhc2Uo Q29ublBhcmFtcyAqY3BhcmFtcywgUmVpbmRleFR5cGUgdHlwZSwKIAogCQlQYXJhbGxlbFNsb3RT ZXRIYW5kbGVyKGZyZWVfc2xvdCwgVGFibGVDb21tYW5kUmVzdWx0SGFuZGxlciwgTlVMTCk7CiAJ CWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsKLQkJaWYgKHBhcmFsbGVsICYmIHByb2Nlc3NfdHlwZSA9 PSBSRUlOREVYX0lOREVYKQorCQlpZiAocGFyYWxsZWwgJiYgcHJvY2Vzc190eXBlID09IFJFSU5E RVhfSU5ERVggJiYgIWNvbmN1cnJlbnRseSkKIAkJewogCQkJLyoKIAkJCSAqIEZvciBwYXJhbGxl bCBpbmRleC1sZXZlbCBSRUlOREVYLCB0aGUgaW5kaWNlcyBvZiB0aGUgc2FtZSB0YWJsZQpAQCAt NDU1LDE0ICs0NTUsNTEgQEAgcmVpbmRleF9vbmVfZGF0YWJhc2UoQ29ublBhcmFtcyAqY3BhcmFt cywgUmVpbmRleFR5cGUgdHlwZSwKIAkJCQkJCQkJCWVjaG8sIHZlcmJvc2UsIGNvbmN1cnJlbnRs eSwgdGFibGVzcGFjZSwgJnNxbCk7CiAJCQl9CiAJCQlpbmRpY2VzX3RhYmxlc19jZWxsID0gaW5k aWNlc190YWJsZXNfY2VsbC0+bmV4dDsKKwkJCXJ1bl9yZWluZGV4X2NvbW1hbmQoZnJlZV9zbG90 LT5jb25uZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCisJCQkJCQkJCWVjaG8sICZzcWwp OworCQl9CisJCWVsc2UgaWYgKHBhcmFsbGVsICYmIHByb2Nlc3NfdHlwZSA9PSBSRUlOREVYX0lO REVYKQorCQl7CisJCQkvKgorCQkJICogUkVJTkRFWCBDT05DVVJSRU5UTFkgY2Fubm90IHJ1biBp biBhIHRyYW5zYWN0aW9uIGJsb2NrLCBzbyBpdAorCQkJICogY2Fubm90IGJlIHBhcnQgb2YgYSBt dWx0aS1zdGF0ZW1lbnQgc2ltcGxlIHF1ZXJ5LCB3aGljaCB3b3VsZAorCQkJICogYmUgYW4gaW1w bGljaXQgdHJhbnNhY3Rpb24gYmxvY2suICBUaGUgaW5kaWNlcyBvZiB0aGUgc2FtZQorCQkJICog dGFibGUgc3RpbGwgaGF2ZSB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHNhbWUgam9iLCB0byBhdm9p ZAorCQkJICogY29uY3VycmVudCBSRUlOREVYIENPTkNVUlJFTlRMWSBjb21tYW5kcyBvbiB0aGUg c2FtZSB0YWJsZSwKKwkJCSAqIHdoaWNoIGNvdWxkIGRlYWRsb2NrLiAgU28sIGVhY2ggY29tbWFu ZCBpcyBzZW50IHNlcGFyYXRlbHksCisJCQkgKiB3YWl0aW5nIGZvciBpdCB0byBjb21wbGV0ZSBi ZWZvcmUgc2VuZGluZyB0aGUgbmV4dCBvbmUuCisJCQkgKi8KKwkJCWdlbl9yZWluZGV4X2NvbW1h bmQoZnJlZV9zbG90LT5jb25uZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCisJCQkJCQkJ CWVjaG8sIHZlcmJvc2UsIGNvbmN1cnJlbnRseSwgdGFibGVzcGFjZSwgJnNxbCk7CisJCQlydW5f cmVpbmRleF9jb21tYW5kKGZyZWVfc2xvdC0+Y29ubmVjdGlvbiwgcHJvY2Vzc190eXBlLCBvYmpu YW1lLAorCQkJCQkJCQllY2hvLCAmc3FsKTsKKwkJCWlmICghY29uc3VtZVF1ZXJ5UmVzdWx0KGZy ZWVfc2xvdCkpCisJCQkJZmFpbGVkID0gdHJ1ZTsKKwkJCXdoaWxlIChpbmRpY2VzX3RhYmxlc19j ZWxsLT5uZXh0ICYmCisJCQkJICAgaW5kaWNlc190YWJsZXNfY2VsbC0+dmFsID09IGluZGljZXNf dGFibGVzX2NlbGwtPm5leHQtPnZhbCkKKwkJCXsKKwkJCQlpbmRpY2VzX3RhYmxlc19jZWxsID0g aW5kaWNlc190YWJsZXNfY2VsbC0+bmV4dDsKKwkJCQljZWxsID0gY2VsbC0+bmV4dDsKKwkJCQlv YmpuYW1lID0gY2VsbC0+dmFsOworCQkJCXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKKwkJCQlpbml0 UFFFeHBCdWZmZXIoJnNxbCk7CisJCQkJZ2VuX3JlaW5kZXhfY29tbWFuZChmcmVlX3Nsb3QtPmNv bm5lY3Rpb24sIHByb2Nlc3NfdHlwZSwgb2JqbmFtZSwKKwkJCQkJCQkJCWVjaG8sIHZlcmJvc2Us IGNvbmN1cnJlbnRseSwgdGFibGVzcGFjZSwgJnNxbCk7CisJCQkJcnVuX3JlaW5kZXhfY29tbWFu ZChmcmVlX3Nsb3QtPmNvbm5lY3Rpb24sIHByb2Nlc3NfdHlwZSwgb2JqbmFtZSwKKwkJCQkJCQkJ CWVjaG8sICZzcWwpOworCQkJCWlmICghY29uc3VtZVF1ZXJ5UmVzdWx0KGZyZWVfc2xvdCkpCisJ CQkJCWZhaWxlZCA9IHRydWU7CisJCQl9CisJCQlpbmRpY2VzX3RhYmxlc19jZWxsID0gaW5kaWNl c190YWJsZXNfY2VsbC0+bmV4dDsKKwkJCVBhcmFsbGVsU2xvdFNldElkbGUoZnJlZV9zbG90KTsK IAkJfQogCQllbHNlCiAJCXsKIAkJCWdlbl9yZWluZGV4X2NvbW1hbmQoZnJlZV9zbG90LT5jb25u ZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCiAJCQkJCQkJCWVjaG8sIHZlcmJvc2UsIGNv bmN1cnJlbnRseSwgdGFibGVzcGFjZSwgJnNxbCk7CisJCQlydW5fcmVpbmRleF9jb21tYW5kKGZy ZWVfc2xvdC0+Y29ubmVjdGlvbiwgcHJvY2Vzc190eXBlLCBvYmpuYW1lLAorCQkJCQkJCQllY2hv LCAmc3FsKTsKIAkJfQotCQlydW5fcmVpbmRleF9jb21tYW5kKGZyZWVfc2xvdC0+Y29ubmVjdGlv biwgcHJvY2Vzc190eXBlLCBvYmpuYW1lLAotCQkJCQkJCWVjaG8sICZzcWwpOwogCQl0ZXJtUFFF eHBCdWZmZXIoJnNxbCk7CiAKIAkJY2VsbCA9IGNlbGwtPm5leHQ7CmRpZmYgLS1naXQgYS9zcmMv YmluL3NjcmlwdHMvdC8wOTBfcmVpbmRleGRiLnBsIGIvc3JjL2Jpbi9zY3JpcHRzL3QvMDkwX3Jl aW5kZXhkYi5wbAppbmRleCBhZTdkMzcyNDQ2NC4uMTAxMzEyMGYzMTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vc2NyaXB0cy90LzA5MF9yZWluZGV4ZGIucGwKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3Qv MDkwX3JlaW5kZXhkYi5wbApAQCAtMTY4LDYgKzE2OCwzMCBAQCAkbm9kZS0+aXNzdWVzX3NxbF9s aWtlKAogCVsgJ3JlaW5kZXhkYicsICctLWNvbmN1cnJlbnRseScsICctLWluZGV4JyA9PiAndGVz dDF4JywgJ3Bvc3RncmVzJyBdLAogCXFyL3N0YXRlbWVudDogUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgcHVibGljXC50ZXN0MXg7LywKIAkncmVpbmRleCBzcGVjaWZpYyBpbmRleCBjb25jdXJy ZW50bHknKTsKKworIyBNdWx0aXBsZSBpbmRleGVzIG9mIHRoZSBzYW1lIHRhYmxlIHdpdGggcGFy YWxsZWwgam9icyBtdXN0IG5vdCBiZQorIyBiYXRjaGVkIGludG8gYSBzaW5nbGUgbXVsdGktc3Rh dGVtZW50IHF1ZXJ5IHdoZW4gdXNpbmcgLS1jb25jdXJyZW50bHksCisjIGFzIFJFSU5ERVggQ09O Q1VSUkVOVExZIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2suCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ0NSRUFURSBUQUJMRSB0ZXN0MiAoYSBpbnQpOyBDUkVB VEUgSU5ERVggdGVzdDJ4IE9OIHRlc3QyIChhKTsnCisJICAuICcgQ1JFQVRFIElOREVYIHRlc3Qy eSBPTiB0ZXN0MiAoYSk7Jyk7Ciskbm9kZS0+Y29tbWFuZF9vaygKKwlbCisJCSdyZWluZGV4ZGIn LCAnLS1qb2JzJyA9PiAnMicsICctLWNvbmN1cnJlbnRseScsCisJCSctLWluZGV4JyA9PiAndGVz dDJ4JywKKwkJJy0taW5kZXgnID0+ICd0ZXN0MnknLAorCQkncG9zdGdyZXMnLAorCV0sCisJJ3Jl aW5kZXggdHdvIGluZGV4ZXMgb2YgdGhlIHNhbWUgdGFibGUgY29uY3VycmVudGx5IHdpdGggdHdv IGpvYnMnKTsKKyRub2RlLT5jb21tYW5kX29rKAorCVsKKwkJJ3JlaW5kZXhkYicsICctLWpvYnMn ID0+ICcyJywKKwkJJy0taW5kZXgnID0+ICd0ZXN0MngnLAorCQknLS1pbmRleCcgPT4gJ3Rlc3Qy eScsCisJCSdwb3N0Z3JlcycsCisJXSwKKwkncmVpbmRleCB0d28gaW5kZXhlcyBvZiB0aGUgc2Ft ZSB0YWJsZSB3aXRoIHR3byBqb2JzJyk7CisKICRub2RlLT5pc3N1ZXNfc3FsX2xpa2UoCiAJWyAn cmVpbmRleGRiJywgJy0tY29uY3VycmVudGx5JywgJy0tc2NoZW1hJyA9PiAncHVibGljJywgJ3Bv c3RncmVzJyBdLAogCXFyL3N0YXRlbWVudDogUkVJTkRFWCBTQ0hFTUEgQ09OQ1VSUkVOVExZIHB1 YmxpYzsvLApkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL3BhcmFsbGVsX3Nsb3QuYyBiL3NyYy9m ZV91dGlscy9wYXJhbGxlbF9zbG90LmMKaW5kZXggZmI5ZTZjYzRlYzEuLjgzMWUwYzI3ODc4IDEw MDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvcGFyYWxsZWxfc2xvdC5jCisrKyBiL3NyYy9mZV91dGls cy9wYXJhbGxlbF9zbG90LmMKQEAgLTU0LDcgKzU0LDcgQEAgcHJvY2Vzc1F1ZXJ5UmVzdWx0KFBh cmFsbGVsU2xvdCAqc2xvdCwgUEdyZXN1bHQgKnJlc3VsdCkKICAqIG5vdGhpbmcgcmVtYWlucy4g IElmIGF0IGxlYXN0IG9uZSBlcnJvciBpcyBlbmNvdW50ZXJlZCwgcmV0dXJuIGZhbHNlLgogICog Tm90ZSB0aGF0IHRoaXMgd2lsbCBibG9jayBpZiB0aGUgY29ubmVjdGlvbiBpcyBidXN5LgogICov Ci1zdGF0aWMgYm9vbAorYm9vbAogY29uc3VtZVF1ZXJ5UmVzdWx0KFBhcmFsbGVsU2xvdCAqc2xv dCkKIHsKIAlib29sCQlvayA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGls cy9wYXJhbGxlbF9zbG90LmggYi9zcmMvaW5jbHVkZS9mZV91dGlscy9wYXJhbGxlbF9zbG90LmgK aW5kZXggYTZlYmUyNzNjZTAuLjZkNTk3MjYxNGJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9m ZV91dGlscy9wYXJhbGxlbF9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvcGFyYWxs ZWxfc2xvdC5oCkBAIC03OCw2ICs3OCwxNSBAQCBleHRlcm4gdm9pZCBQYXJhbGxlbFNsb3RzVGVy bWluYXRlKFBhcmFsbGVsU2xvdEFycmF5ICpzYSk7CiAKIGV4dGVybiBib29sIFBhcmFsbGVsU2xv dHNXYWl0Q29tcGxldGlvbihQYXJhbGxlbFNsb3RBcnJheSAqc2EpOwogCisvKgorICogV2FpdCBm b3IgdGhlIHJlc3VsdHMgb2YgdGhlIHF1ZXJ5IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgYnkg dGhlIGdpdmVuCisgKiBzbG90LCBhbmQgcHJvY2VzcyB0aGVtIHdpdGggdGhlIGhhbmRsZXIgc2V0 IGZvciB0aGlzIHNsb3QuICBSZXR1cm5zCisgKiBmYWxzZSBpZiB0aGUgcXVlcnkgZmFpbGVkLCB0 cnVlIG90aGVyd2lzZS4gIFRoZSBzbG90IGlzIG5vdCBtYXJrZWQgYXMKKyAqIGlkbGUgYnkgdGhp cyBmdW5jdGlvbi4gIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmxvY2sgaWYgdGhlIGNvbm5lY3Rpb24g aXMKKyAqIGJ1c3kuCisgKi8KK2V4dGVybiBib29sIGNvbnN1bWVRdWVyeVJlc3VsdChQYXJhbGxl bFNsb3QgKnNsb3QpOworCiBleHRlcm4gYm9vbCBUYWJsZUNvbW1hbmRSZXN1bHRIYW5kbGVyKFBH cmVzdWx0ICpyZXMsIFBHY29ubiAqY29ubiwKIAkJCQkJCQkJCSAgdm9pZCAqY29udGV4dCk7CiAK LS0gCjIuNTUuMAoK --===============0111877691015305578== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0002-reindexdb-keep-jobs-parallel-and-stop-on-cancel-w.patch" MIME-Version: 1.0 RnJvbSA3NDIwZjMxOTQ5MzllMDgyMTk2MzRmZjA3OWE3MjY3MTc2NjY5OGFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBGcmksIDIgT2N0IDIwMjYgMjI6NDU6MDkgLTAzMDAKU3ViamVjdDog W1BBVENIIHYyIDIvMl0gcmVpbmRleGRiOiBrZWVwIC0tam9icyBwYXJhbGxlbCBhbmQgc3RvcCBv biBjYW5jZWwKIHdpdGggLS1jb25jdXJyZW50bHkKCk9ubHkgd2FpdCBmb3IgZWFjaCBjb21tYW5k IHdoZW4gdGhlIG5leHQgaW5kZXggYmVsb25ncyB0byB0aGUgc2FtZQp0YWJsZS4gIEFuIGluZGV4 IHRoYXQgaXMgdGhlIG9ubHkgb25lIG9mIGl0cyB0YWJsZSBnb2VzIHRocm91Z2ggdGhlCnVzdWFs IGFzeW5jaHJvbm91cyBwYXRoLCBzbyBpbmRleGVzIG9mIGRpZmZlcmVudCB0YWJsZXMgYXJlIGFn YWluCnByb2Nlc3NlZCBpbiBwYXJhbGxlbC4KCkFsc28gc3RvcCBhdCB0aGUgZmlyc3QgZmFpbHVy ZSBvciBjYW5jZWwgcmVxdWVzdCwgYXMgdGhlIG90aGVyIHBhdGhzCmRvLCBpbnN0ZWFkIG9mIGdv aW5nIG9uIHdpdGggdGhlIHJlbWFpbmluZyBpbmRleGVzIG9mIHRoZSB0YWJsZS4KLS0tCiBzcmMv YmluL3NjcmlwdHMvcmVpbmRleGRiLmMgfCAzNyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5jIGIvc3JjL2Jpbi9z Y3JpcHRzL3JlaW5kZXhkYi5jCmluZGV4IGQ3Nzg0ZGUzZjU1Li40MDAyNjE2Y2Q4ZiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy9y ZWluZGV4ZGIuYwpAQCAtNDU4LDcgKzQ1OCw5IEBAIHJlaW5kZXhfb25lX2RhdGFiYXNlKENvbm5Q YXJhbXMgKmNwYXJhbXMsIFJlaW5kZXhUeXBlIHR5cGUsCiAJCQlydW5fcmVpbmRleF9jb21tYW5k KGZyZWVfc2xvdC0+Y29ubmVjdGlvbiwgcHJvY2Vzc190eXBlLCBvYmpuYW1lLAogCQkJCQkJCQll Y2hvLCAmc3FsKTsKIAkJfQotCQllbHNlIGlmIChwYXJhbGxlbCAmJiBwcm9jZXNzX3R5cGUgPT0g UkVJTkRFWF9JTkRFWCkKKwkJZWxzZSBpZiAocGFyYWxsZWwgJiYgcHJvY2Vzc190eXBlID09IFJF SU5ERVhfSU5ERVggJiYKKwkJCQkgaW5kaWNlc190YWJsZXNfY2VsbC0+bmV4dCAmJgorCQkJCSBp bmRpY2VzX3RhYmxlc19jZWxsLT52YWwgPT0gaW5kaWNlc190YWJsZXNfY2VsbC0+bmV4dC0+dmFs KQogCQl7CiAJCQkvKgogCQkJICogUkVJTkRFWCBDT05DVVJSRU5UTFkgY2Fubm90IHJ1biBpbiBh IHRyYW5zYWN0aW9uIGJsb2NrLCBzbyBpdApAQCAtNDY5LDMyICs0NzEsMzcgQEAgcmVpbmRleF9v bmVfZGF0YWJhc2UoQ29ublBhcmFtcyAqY3BhcmFtcywgUmVpbmRleFR5cGUgdHlwZSwKIAkJCSAq IHdoaWNoIGNvdWxkIGRlYWRsb2NrLiAgU28sIGVhY2ggY29tbWFuZCBpcyBzZW50IHNlcGFyYXRl bHksCiAJCQkgKiB3YWl0aW5nIGZvciBpdCB0byBjb21wbGV0ZSBiZWZvcmUgc2VuZGluZyB0aGUg bmV4dCBvbmUuCiAJCQkgKi8KLQkJCWdlbl9yZWluZGV4X2NvbW1hbmQoZnJlZV9zbG90LT5jb25u ZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCi0JCQkJCQkJCWVjaG8sIHZlcmJvc2UsIGNv bmN1cnJlbnRseSwgdGFibGVzcGFjZSwgJnNxbCk7Ci0JCQlydW5fcmVpbmRleF9jb21tYW5kKGZy ZWVfc2xvdC0+Y29ubmVjdGlvbiwgcHJvY2Vzc190eXBlLCBvYmpuYW1lLAotCQkJCQkJCQllY2hv LCAmc3FsKTsKLQkJCWlmICghY29uc3VtZVF1ZXJ5UmVzdWx0KGZyZWVfc2xvdCkpCi0JCQkJZmFp bGVkID0gdHJ1ZTsKLQkJCXdoaWxlIChpbmRpY2VzX3RhYmxlc19jZWxsLT5uZXh0ICYmCi0JCQkJ ICAgaW5kaWNlc190YWJsZXNfY2VsbC0+dmFsID09IGluZGljZXNfdGFibGVzX2NlbGwtPm5leHQt PnZhbCkKKwkJCWZvciAoOzspCiAJCQl7Ci0JCQkJaW5kaWNlc190YWJsZXNfY2VsbCA9IGluZGlj ZXNfdGFibGVzX2NlbGwtPm5leHQ7Ci0JCQkJY2VsbCA9IGNlbGwtPm5leHQ7Ci0JCQkJb2JqbmFt ZSA9IGNlbGwtPnZhbDsKLQkJCQl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Ci0JCQkJaW5pdFBRRXhw QnVmZmVyKCZzcWwpOwogCQkJCWdlbl9yZWluZGV4X2NvbW1hbmQoZnJlZV9zbG90LT5jb25uZWN0 aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCiAJCQkJCQkJCQllY2hvLCB2ZXJib3NlLCBjb25j dXJyZW50bHksIHRhYmxlc3BhY2UsICZzcWwpOwogCQkJCXJ1bl9yZWluZGV4X2NvbW1hbmQoZnJl ZV9zbG90LT5jb25uZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCiAJCQkJCQkJCQllY2hv LCAmc3FsKTsKLQkJCQlpZiAoIWNvbnN1bWVRdWVyeVJlc3VsdChmcmVlX3Nsb3QpKQorCisJCQkJ LyogU3RvcCBhdCB0aGUgZmlyc3QgZmFpbHVyZSBvciBjYW5jZWwsIGFzIHRoZSBvdGhlciBwYXRo cyBkby4gKi8KKwkJCQlpZiAoIWNvbnN1bWVRdWVyeVJlc3VsdChmcmVlX3Nsb3QpIHx8IENhbmNl bFJlcXVlc3RlZCkKKwkJCQl7CisJCQkJCXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKIAkJCQkJZmFp bGVkID0gdHJ1ZTsKKwkJCQkJZ290byBmaW5pc2g7CisJCQkJfQorCisJCQkJaWYgKCEoaW5kaWNl c190YWJsZXNfY2VsbC0+bmV4dCAmJgorCQkJCQkgIGluZGljZXNfdGFibGVzX2NlbGwtPnZhbCA9 PSBpbmRpY2VzX3RhYmxlc19jZWxsLT5uZXh0LT52YWwpKQorCQkJCQlicmVhazsKKwkJCQlpbmRp Y2VzX3RhYmxlc19jZWxsID0gaW5kaWNlc190YWJsZXNfY2VsbC0+bmV4dDsKKwkJCQljZWxsID0g Y2VsbC0+bmV4dDsKKwkJCQlvYmpuYW1lID0gY2VsbC0+dmFsOworCQkJCXJlc2V0UFFFeHBCdWZm ZXIoJnNxbCk7CiAJCQl9CiAJCQlpbmRpY2VzX3RhYmxlc19jZWxsID0gaW5kaWNlc190YWJsZXNf Y2VsbC0+bmV4dDsKIAkJCVBhcmFsbGVsU2xvdFNldElkbGUoZnJlZV9zbG90KTsKIAkJfQogCQll bHNlCiAJCXsKKwkJCS8qIFRoZSBvbmx5IGluZGV4IG9mIGl0cyB0YWJsZTogbm90aGluZyB0byBr ZWVwIGluIG9yZGVyLiAqLworCQkJaWYgKHBhcmFsbGVsICYmIHByb2Nlc3NfdHlwZSA9PSBSRUlO REVYX0lOREVYKQorCQkJCWluZGljZXNfdGFibGVzX2NlbGwgPSBpbmRpY2VzX3RhYmxlc19jZWxs LT5uZXh0OwogCQkJZ2VuX3JlaW5kZXhfY29tbWFuZChmcmVlX3Nsb3QtPmNvbm5lY3Rpb24sIHBy b2Nlc3NfdHlwZSwgb2JqbmFtZSwKIAkJCQkJCQkJZWNobywgdmVyYm9zZSwgY29uY3VycmVudGx5 LCB0YWJsZXNwYWNlLCAmc3FsKTsKIAkJCXJ1bl9yZWluZGV4X2NvbW1hbmQoZnJlZV9zbG90LT5j b25uZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5hbWUsCi0tIAoyLjU1LjAKCg== --===============0111877691015305578==--