)]}'
{
  "log": [
    {
      "commit": "f40dc3985ef80707f00d2e3d62ebac27807a8c0d",
      "tree": "b19910a4e89c2baa9be17eec97caeaa63e1ae5ea",
      "parents": [
        "c8adf714f3fe1cda2bd60d13e6d5e3a83a9b5bb9",
        "37a4bb2e5b1732fde8fa0a831966c85be29e6cd8"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Jun 11 16:58:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 16:58:56 2026 +0100"
      },
      "message": "Merge pull request #6033 from apache/couch-file-test-failure\n\ntighten num_calls assertions"
    },
    {
      "commit": "37a4bb2e5b1732fde8fa0a831966c85be29e6cd8",
      "tree": "b19910a4e89c2baa9be17eec97caeaa63e1ae5ea",
      "parents": [
        "c8adf714f3fe1cda2bd60d13e6d5e3a83a9b5bb9"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Jun 11 14:30:04 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Jun 11 14:30:06 2026 +0100"
      },
      "message": "tighten num_calls assertions\n\na concurrent couch_log event writes to a different file and counts\nas a file:write call. tighten our assertions to only calls by the Fd\nwe care about.\n"
    },
    {
      "commit": "c8adf714f3fe1cda2bd60d13e6d5e3a83a9b5bb9",
      "tree": "82c16cb07d80ee0dd76c6751575df56225d408c1",
      "parents": [
        "e58ef7c8878874b685be32d3ee6c4002ae1981d8"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Jun 09 01:35:18 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Jun 09 14:19:02 2026 -0400"
      },
      "message": "Basic zstd compression\n\nThis is using the built-in zstd API from Erlang/OTP 28+. For 26 and 27 it falls\nback to `deflate`. Otherwise it\u0027s not that different than deflate and snappy\nwhich we already support.\n\nAn interesting feature of zstd is to use dictionaries. This PR doesn\u0027t do it,\nbut it sets up a shim `couch_zstd` module where that could plug-in eventually.\nThe idea is to train a dictionary it based on document bodies for each database\nbefore compaction and then saving the dictionary. zstd as is in Erlang/OTP\ndoesn\u0027t expose a trainign API but we can still use a concatenative/raw\ndictionary:\n\n```erlang\n\n\u003e Dict \u003d ~\"{\\\"type\\\":\\\"foo\\\",\\\"bar\\\":1,\\\"baz\\\":\\\"a\\\"}\".\n\u003c\u003c\"{\\\"type\\\":\\\"foo\\\",\\\"bar\\\":1,\\\"baz\\\":\\\"a\\\"}\"\u003e\u003e\n\n\u003e {ok, C} \u003d zstd:dict(compress, Dict).\n{ok,{cdict,#Ref\u003c0.4075923125.4131520536.31325\u003e}}\n\n\u003e Doc \u003d ~\"{\\\"type\\\":\\\"foo\\\", \\\"bar\\\":2, \\\"baz\\\":\\\"b\\\"}\".\n\u003c\u003c\"{\\\"type\\\":\\\"foo\\\", \\\"bar\\\":2, \\\"baz\\\":\\\"b\\\"}\"\u003e\u003e\n\n\u003e byte_size(iolist_to_binary(zstd:compress(Doc, #{dictionary\u003d\u003eC}))).\n29\n\n\u003e byte_size(iolist_to_binary(zstd:compress(Doc))).\n43\n```\n"
    },
    {
      "commit": "e58ef7c8878874b685be32d3ee6c4002ae1981d8",
      "tree": "6302dd71e0f1ff5d895ffa1956626a0faaeb455b",
      "parents": [
        "b5f23602af0480689ff5491100b04df080b632e6"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Jun 08 18:38:18 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Jun 08 20:34:20 2026 -0400"
      },
      "message": "Temporarily disable FreeBSD x86 worker\n\nTo unblock PR merging\n"
    },
    {
      "commit": "b5f23602af0480689ff5491100b04df080b632e6",
      "tree": "c32d03fa3ac5454cd56a9f3b9f2c4e50341fa71c",
      "parents": [
        "a8b399fb0ec4c5591919321e38f7c693e503dc33"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Jun 08 18:36:32 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Jun 08 20:34:20 2026 -0400"
      },
      "message": "Mochiweb 3.4.0\n\nIt brings in OTP 29 support and make OTP 23 the minimum. We\u0027re already at 26\nminimum so it doesn\u0027t affect us.\n"
    },
    {
      "commit": "a8b399fb0ec4c5591919321e38f7c693e503dc33",
      "tree": "8c78a7ec28507095e0e56716ef5ec60e83e1a87d",
      "parents": [
        "e4eea5ae0735404a06fe123a9b85b33dad576da8"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sun Jun 07 00:46:02 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Jun 08 14:42:10 2026 -0400"
      },
      "message": "Always apply user configured compression\n\nPreviously, even when user picked a non-default compression algorithm in some\ninstances, like the purge trees and emsort, snappy would still be used such.\nMake sure to always respect user\u0027s choice, and if they picked something\nnon-default always use that.\n\n[1] There is a good reason to avoid snappy as doesn\u0027t properly yield when\nencoding or decoding. In a low concurrency environment it might not matter, but\nas the concurrency ramps up it could lead to scheduler collapse (it could\nmanifest as high p90+ latencies while cpus usage remains low). A similar effect\nis illustrated in scheduler responsiveness test for jiffy vs other C json\nlibraries in https://github.com/nickva/bench#scheduler-responsiveness-test\n"
    },
    {
      "commit": "e4eea5ae0735404a06fe123a9b85b33dad576da8",
      "tree": "09ea0d9a67d8a9bcd4147f3d52a16308faa7848e",
      "parents": [
        "7d9d2d36093b43d13a870ab4e9109c3bce98f5fb"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Jun 05 12:18:50 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Jun 05 15:49:00 2026 -0400"
      },
      "message": "Fsync on reset\n\nLet\u0027s sync when we truncate/reset headers. In case of truncate that\u0027s also a\nmetadata operation so it dirties the inode but doesn\u0027t necessarily sync.\nCalling datasync will write that metadata change to disk [*]. These resets\nshould be very rare so shouldn\u0027t be a performance impact.\n\n[*] fdatasync despite its name also syncs metadata required for data operations\nto work correctly, one of those is file size changes when it affects data\noperations (writes at eof or truncates).\n"
    },
    {
      "commit": "7d9d2d36093b43d13a870ab4e9109c3bce98f5fb",
      "tree": "db024838dad79dd41534d3fe0f0c8b56251af985",
      "parents": [
        "741854d6f8685714bbe51711744d11e16d1c2a10"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Jun 04 15:50:59 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Jun 05 09:47:43 2026 -0400"
      },
      "message": "Limit couch_server sharding\n\nWith a default setting `max_dbs_open \u003d 500` on servers with 128 CPU cores,\nper-instance LRU cache limits would become tiny (500/128 \u003d 4). In that case, if\njust 4 db names on any gen_server randomly pick any the same server the cluster\nwill start emitting `all_dbs_active` errors, even though in aggregate across\nall instances there will still be plenty of available LRU slots left.\n\nAs a simple solution, let\u0027s limit the sharding factor with a config setting.\nUse the scheduler count on small instances and those will more schedulers are\nlimited by the limit.\n"
    },
    {
      "commit": "741854d6f8685714bbe51711744d11e16d1c2a10",
      "tree": "b556f9926912f5fa8525cc9f8de2ac95555faad8",
      "parents": [
        "ef5d6407a5c56e0c18c9ee13b62b0be9a425ea5c"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Jun 04 13:11:10 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Jun 04 15:50:03 2026 -0400"
      },
      "message": "QuickJS update: faster math ops, return checks, new release\n\n* New release 2026-06-04\nhttps://github.com/bellard/quickjs/commit/3d5e064e9dd67c70f7962836505a7fa067bf0a4e\n\n* Check return values of fallible functions\nhttps://github.com/bellard/quickjs/commit/ccfe0764eddc17bc531dcf9fc69f9ee3a2b3e0e2\n\n* Fuzz targets for ES6 modules, JSON, RegExp, and bytecode\nhttps://github.com/bellard/quickjs/commit/8b045501f92617951060ffb31f9db0be745195d9\n\n* Doc updates\nhttps://github.com/bellard/quickjs/commit/cfc846a31c5b60130ca02d121932438bcfc94cd1\n\n* More generic `cpu_count()` for non Linux systems for tests\nhttps://github.com/bellard/quickjs/commit/ad1e7bd3ce00544f86c254fde1f3db20fefa089f\n\n* Fixed microbench with d8\nhttps://github.com/bellard/quickjs/commit/92a3d4d5ea04c98c462161fb881ee00b78176d73\n"
    },
    {
      "commit": "ef5d6407a5c56e0c18c9ee13b62b0be9a425ea5c",
      "tree": "e6a2581cabb88b97fdde0059baabca49f478f004",
      "parents": [
        "1ef26320b753e62971d287975e6e7b3653efaca2"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jun 03 23:51:12 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Jun 04 02:31:36 2026 -0400"
      },
      "message": "Add all_dbs_active metric\n\nBump a counter when couch_server reaches an `all_dbs_active` state.\n\nUsers may use that to decide if they need to bump their max_dbs_open setting.\n"
    },
    {
      "commit": "1ef26320b753e62971d287975e6e7b3653efaca2",
      "tree": "fe3e777eead7b2e47f3e19d4c7518f45293ceabe",
      "parents": [
        "bffd5274b1691e345c29adc04df347ac7c67d5d1"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jun 03 17:44:25 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Jun 03 18:34:39 2026 -0400"
      },
      "message": "CI: Disable MacOS runner for a bit\n\nIt\u0027s running out of space and Jenkins keep auto-pausing it which blocks CI jobs\nindefinitely it seems (likely they\u0027d time out after 2h).\n"
    },
    {
      "commit": "bffd5274b1691e345c29adc04df347ac7c67d5d1",
      "tree": "ba8266a06f25c53765799c930c5bd05196f91aad",
      "parents": [
        "aa9595350c9345e7c9b2871008e438055a61c7cd"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jun 03 14:27:13 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Jun 03 18:34:39 2026 -0400"
      },
      "message": "QuickJS Update: fix gcc perf regression, faster test262 runs\n\n* Add optional define to add asm labels for each opcode to ease code inspection\nand profiling\nhttps://github.com/bellard/quickjs/commit/e2c01dff615c0df4d65ed545e4a80ad40b94ea28\n\n* Fixed large performance regression with recent GCC versions\nhttps://github.com/bellard/quickjs/commit/10c81b1989de2d2e8d482d252b160a34f215d3e2\n\n* Exclude few very slow and currently useless test262 tests\nhttps://github.com/bellard/quickjs/commit/594f965146308f4bc8260bd7d91c0eb92b8990d1\n"
    },
    {
      "commit": "aa9595350c9345e7c9b2871008e438055a61c7cd",
      "tree": "1a2a2acf1ed2807d8694f959a1b967db254c8882",
      "parents": [
        "e823a6ed43288f43822fc515b530b7724459c290"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Jun 02 00:23:35 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Jun 02 17:07:06 2026 -0400"
      },
      "message": "QuickJS Update: 10-40% speedup, compilation fixes, test speed-ups\n\n* Added: multi-threading support in run-test262\nhttps://github.com/bellard/quickjs/commit/2504823832cccc9d3930d8811ef60a5891c37495\n\n* Removed `CONFIG_AGENT`\nhttps://github.com/bellard/quickjs/commit/458992ec8cd73710ba8131322dd502da040d5389\n\n* Fixed win32 compilation\nhttps://github.com/bellard/quickjs/commit/774e30e796aad01b7e463f7a41ea83a612961667\n\n* ArrayBuffer.prototype.transfer: avoid destroying the old array buffer in case\nthe allocation of the new array buffer fails\nhttps://github.com/bellard/quickjs/commit/f8381776891b3d6eb115aa98677f06be87f9d700\n\n* Add line number info in variable initialization\nhttps://github.com/bellard/quickjs/commit/14a1536e936bfca3ef41d40b6dbffc9b989cfe70\n\n* Use the host `malloc()` for all allocations when ASAN is enabled\nhttps://github.com/bellard/quickjs/commit/ecd05ea13383e9aeba1932548b5303d0d2ff248f\n\n* Fixed `setuid()` / `setgid()` ordering\nhttps://github.com/bellard/quickjs/commit/4a13c45081cfcbaa1ba738c05db1ea4d5f99c73f\n\n* Disable: inlining of malloc() wrappers to avoid problems with LTO\nhttps://github.com/bellard/quickjs/commit/e6c2be818a3d18e384be9702c6b1c9e68fbe6c11\n\n* Add `poll()` support so that the number of file handles is not limited\nhttps://github.com/bellard/quickjs/commit/163b9b725dd60ad07b56877bcedaa994d6e3551e\n\n* Add run-test262 --no-can-block flag\nhttps://github.com/bellard/quickjs/commit/8a3aaa129dc561e8f62db5090f9a960c401d990f\n\n* Add custom malloc for small blocks /w an 11% speedup in v8 bench (as claimed\nupstream). My own local `make microbench` showed a 13458 nsec -\u003e 7385 nsec\nimprovement which is closer to 40%(!)\nhttps://github.com/bellard/quickjs/commit/99e9181d117a0cb65d37cb11a55a34bf29853309\n\n* Add Uint8Array base64/hex methods (initial patch by saghul)\nhttps://github.com/bellard/quickjs/commit/e182e3df5c51017a7faa97a654b3f2b9c6330448\n\n* Fix `memcpy()` undefined behavior if a pointer is NULL with zero size\nhttps://github.com/bellard/quickjs/commit/1f50b39e99d12042fc2e2ce3b754719fa42af753\n\n* Fixed error handling in `os.exec()`\nhttps://github.com/bellard/quickjs/commit/b1b4733bd9f75509ffbf1243b754a8e61278b790\n\n* Add missing NULL pointer check https://github.com/bellard/quickjs/issues/504\n\n* Use __EMSCRIPTEN__ define instead of EMSCRIPTEN\nhttps://github.com/bellard/quickjs/commit/9b90125510d8a57bb1b687a798237d8b7133fb49\n\n* Heap-Use-After-Free in Atomics Operations via ResizableArrayBuffer\nhttps://github.com/bellard/quickjs/issues/508\n\n* Expose Unicode version in C API https://github.com/bellard/quickjs/issues/509\n\n* Fix member access on non-decimal numeric literals\nhttps://github.com/bellard/quickjs/commit/66afb7234cf53957094509014cc5e97fa152b0f4\n\n* Avoid initializer-string warning for the digits array\nhttps://github.com/bellard/quickjs/commit/d38eea93365879b5bff8b649d8dbb4dc1b849e56\n\nWARNING: `couchjs.c` inlines refcount helpers `(JS_FreeValue/JS_DupValue/...)`\nfrom `quickjs.h`. Rebar port compiler rebuilds couchjs.o when couchjs.c changes\nnot when included header changes. This update alters the header (refcount\nlayout) so a stale couchjs.o would mismatch the new libquickjs.a and corrupt\nrefcounts. TL;DR do clean -xffd build with this change.\n"
    },
    {
      "commit": "e823a6ed43288f43822fc515b530b7724459c290",
      "tree": "bce2327746ecc50738e4a0fe192b812e25a898b9",
      "parents": [
        "96ea5b501a03a956f561ecffcef6cf82cede8fed"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Tue Jun 02 19:48:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 19:48:52 2026 +0200"
      },
      "message": "dev: Print synchronized ouput of make during builds (#6019)"
    },
    {
      "commit": "96ea5b501a03a956f561ecffcef6cf82cede8fed",
      "tree": "6601bca94bbb79b1b94dad424ab064d7fc38985c",
      "parents": [
        "03d6065ca19e185e18a19a61bf6ca30d77977aff"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri May 29 13:39:12 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri May 29 18:08:26 2026 -0400"
      },
      "message": "Improve CI by matching variants to the number of workers\n\nPreviously, after we added trixie we ended up with N+1 variants for N worker\nslots for generic docker workers. This means CI jobs have to wait until one of\nthe workers finishes completely before even starting. To improve the situation,\nlet\u0027s skip intermediate (27 currently) CI run to hopefully restore the speed\nback.\n\nThere is some separate docker pull or java run flakiness we noticed but that\u0027s\nnot related to this most likely.\n"
    },
    {
      "commit": "03d6065ca19e185e18a19a61bf6ca30d77977aff",
      "tree": "c6a9126c7c91f1e67e7eb82eaeb435176f21a4b0",
      "parents": [
        "750569267321f70f73d03976a8f4642efde1d1b6",
        "38770829f114505d667d3bcc79a5b34a523a733e"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Fri May 29 21:10:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 21:10:44 2026 +0100"
      },
      "message": "Merge pull request #6015 from apache/no-eof\n\neliminate internal tracking of EOF"
    },
    {
      "commit": "38770829f114505d667d3bcc79a5b34a523a733e",
      "tree": "c6a9126c7c91f1e67e7eb82eaeb435176f21a4b0",
      "parents": [
        "750569267321f70f73d03976a8f4642efde1d1b6"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue May 26 12:44:59 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Fri May 29 19:35:00 2026 +0100"
      },
      "message": "eliminate internal tracking of EOF\n"
    },
    {
      "commit": "750569267321f70f73d03976a8f4642efde1d1b6",
      "tree": "5137dcecfe9c0f4e77490283a11fe89052b1a847",
      "parents": [
        "11a3d0a766cf01d3b203208efda4f3d66d3ddb8c"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed May 27 14:48:47 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed May 27 23:11:15 2026 -0400"
      },
      "message": "Fix leaked opened db handle in smoosh\n\n`smoosh_channel:maybe_remonitor_cpid/3` opened db and never closed it. That\nleft a dangling reference (monitor to it) which prevented that db handle from\nbecoming idle.\n\nWe noticed this after inspecting dangling deleted fd handles which were still\nleft open by something. That something turned to be smoosh_channel gen_server.\n"
    },
    {
      "commit": "11a3d0a766cf01d3b203208efda4f3d66d3ddb8c",
      "tree": "20ec023f705f5e3d67a558830ce7597ebd149e46",
      "parents": [
        "a006a2ca161e4a82e6632247572f981c0de33037"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sun May 24 00:00:02 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun May 24 08:24:22 2026 -0400"
      },
      "message": "Merge 3.5.2 change to main\n\nThis just the version bump and release notes\n"
    },
    {
      "commit": "a006a2ca161e4a82e6632247572f981c0de33037",
      "tree": "b1d3151bfcbd58188525d2bda5873d6d5fd0a918",
      "parents": [
        "577232ea355f40489d81c327a27f30a52c959bff"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu May 21 17:37:27 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri May 22 00:16:28 2026 -0400"
      },
      "message": "Fix function clause on auto_purge ttl \u003d infinity\n\nFix function_clause when per-db values was not set and the default in config\nwas set to \"infinity\".\n\nThe clause is already covered by eunit tests it\u0027s just that now it logs should\nshow an function_clause error.\n"
    },
    {
      "commit": "577232ea355f40489d81c327a27f30a52c959bff",
      "tree": "df778195b879322a069236487c15366eca7e79af",
      "parents": [
        "e2cded77e367fb4577834c0e196bff6a81779212"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Thu May 21 19:55:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 19:55:05 2026 +0200"
      },
      "message": "dev: Allow OTP 29 compiler (#6009)"
    },
    {
      "commit": "e2cded77e367fb4577834c0e196bff6a81779212",
      "tree": "384842456a90cd9414026f2bacce180ab85a2213",
      "parents": [
        "90750afa9022c3c06d13e37e4a55c4725ead1dd2"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Tue May 19 22:42:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 22:42:01 2026 +0200"
      },
      "message": "dev: Update Gradle 9.5.1 (#6007)"
    },
    {
      "commit": "90750afa9022c3c06d13e37e4a55c4725ead1dd2",
      "tree": "044cfc59ebb7b986ce7dbccab4103b8e0012fbc6",
      "parents": [
        "74ac0419742c51009d48abb46fd7549301fe26c6"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Mon May 18 23:50:15 2026 +0200"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Tue May 19 00:03:54 2026 +0200"
      },
      "message": "doc: Highlight the required Java version for Nouveau\n"
    },
    {
      "commit": "74ac0419742c51009d48abb46fd7549301fe26c6",
      "tree": "f761dbc8328d0f3e2590f1292bc15ad0da4cb326",
      "parents": [
        "3790a7967ed26be171dde2c436a22cf2ef925011"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Mon May 18 22:18:05 2026 +0200"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Tue May 19 00:03:54 2026 +0200"
      },
      "message": "doc: link to Adoptium for third-party Java 21 debs.\n"
    },
    {
      "commit": "3790a7967ed26be171dde2c436a22cf2ef925011",
      "tree": "b6aab7be43edbd65c8ed91565858272206de8865",
      "parents": [
        "54f70243d7c1c3979692b1ab5b1d088432f90c94"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon May 18 12:35:18 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon May 18 16:46:26 2026 -0400"
      },
      "message": "Fix error accumulation in bulk_get\n\nPreviously we didn\u0027t accumulate errors from bulk_get worker properly. If we had\nto bail when progress became impossiblme we didn\u0027t save any previous errors in\norder to pick amongst those those instead of the only having the last one\navailable.\n"
    },
    {
      "commit": "54f70243d7c1c3979692b1ab5b1d088432f90c94",
      "tree": "37c5d3a2f106a89e70a843e3cc861c568118c90a",
      "parents": [
        "3e50edc6fdef9e11d8dc0771ded7992bfb7bbfbe"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon May 18 11:06:55 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon May 18 12:14:31 2026 -0400"
      },
      "message": "Fix bulk_get not_found response handling when revs\u003dall\n\nSince revs\u003dall when doc is not found we return `{ok, []}` we didn\u0027t count that\nresponse as a not_found response and success_possible would return false too\nearly. If a node was in mm mode and that was the last response we could end up\nemitting that as an internal error instead of the proper \"not found\" result.\n"
    },
    {
      "commit": "3e50edc6fdef9e11d8dc0771ded7992bfb7bbfbe",
      "tree": "f29d7c2e324442768c570b87867fbc4306602da1",
      "parents": [
        "a6c58283b0aa335e6f8f14ea4f0819d46886d89c"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sun May 17 19:50:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 17 19:50:05 2026 +0200"
      },
      "message": "ci: Add Ubuntu Resolute Raccoon (26.04) to CI (#5999)"
    },
    {
      "commit": "a6c58283b0aa335e6f8f14ea4f0819d46886d89c",
      "tree": "7a7ed29bc9282cf2ad0ab49eedb4ce96edba75a7",
      "parents": [
        "0a50108d322452ba748c307397a30cd2779cae97",
        "b05db3d117062464a7ec2788a41406d91bb39e64"
      ],
      "author": {
        "name": "Will Holley",
        "email": "willholley@apache.org",
        "time": "Wed May 13 10:02:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 10:02:22 2026 +0100"
      },
      "message": "Merge pull request #5983 from apache/wh/connect_to\n\nfeat: Add replicator connect_to support for outbound requests."
    },
    {
      "commit": "b05db3d117062464a7ec2788a41406d91bb39e64",
      "tree": "7a7ed29bc9282cf2ad0ab49eedb4ce96edba75a7",
      "parents": [
        "0a50108d322452ba748c307397a30cd2779cae97"
      ],
      "author": {
        "name": "Will Holley",
        "email": "will.holley@uk.ibm.com",
        "time": "Mon Apr 27 13:53:28 2026 +0100"
      },
      "committer": {
        "name": "Will Holley",
        "email": "will.holley@uk.ibm.com",
        "time": "Wed May 13 08:53:24 2026 +0100"
      },
      "message": "feat: Add connect_to override support for outbound requests.\n\nThis adds a feature to the CouchDB replicator\nto override the connection target for specific host\npatterns (including wildcards) when making\noutbound requests. This is similar to the\n`--connect-to` option in curl.\n\nOne use case is when requests need\nto be routed via a transparent SNI proxy e.g.\nfor network egress monitoring and specifying\noverrides in /etc/hosts or similar isn\u0027t suffient\n/ possible (e.g. due to lack of wildcard support).\n\nThere is adds a new configuration option to\nspecify the overrides:\n\n```\n[replicator]\nconnect_to \u003d patternhost:port:target:targetport,..\n```\n\nThe replicator resolves the configured host patterns\nto the alternative connection targets while\npreserving the request URL host (applies to\nregular requests and session-auth requests)\nand rewriting the port as necessary.\n\nIf using https, the SNI header is added for the\noriginal Hostname.\n\nThe `pattern` can be a hostname, including leading\nwildcards e.g. `*.example.com`. Targets must be\nIP addresses. IPv6 addresses are supported using\nbracketed notation e.g. `[2001:db8::1]`.\n"
    },
    {
      "commit": "0a50108d322452ba748c307397a30cd2779cae97",
      "tree": "7d4ac1ac6fc01be0487cce8d1b43943c419530a9",
      "parents": [
        "db961c0809cf8e201824ff0fbaa952f0a3fc72e2"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sun May 10 23:11:41 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon May 11 00:30:52 2026 -0400"
      },
      "message": "Run git renormalize\n\nThis should fix `gradlew.bat` being show as `modified` even after a fresh\ngit clone:\n\n```\nmodified:   extra/nouveau/gradlew.bat\n```\n\nThat makes the dist tarball as \"dirty\" so it breaks our releases.\n\nThis seems to happen because `extra/nouveau/gradlew.bat` was stored with cr/lf\nendings in git, but then we also modified `.gitattributes` to have `text\neol\u003dcrlf`, which indicates we want to store the file with `lf` and only apply\n`cr/lf` after the checkout on Windows. So managed to thoroughly confuse git\nwith that we wanted to do.\n\nIt turns out we can fix this with `git add --renormalize .` so that\u0027s what this\ncommit does [1].\n\n[1]\nhttps://stackoverflow.com/questions/7156694/git-how-to-renormalize-line-endings-in-all-files-in-all-revisions\n"
    },
    {
      "commit": "db961c0809cf8e201824ff0fbaa952f0a3fc72e2",
      "tree": "6f8dcde72cbecfe9102e6d598ef139c7416a11c5",
      "parents": [
        "169643d9dd23f381c7818324001b651861f6fd13"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Apr 27 21:53:37 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed May 06 00:46:14 2026 -0400"
      },
      "message": "Fix cluster index and process cleanup\n\nPreviously, as described in #5980 we didn\u0027t perform a thorough index cleanup\nwhen ddocs changed. We only cleaned up on nodes where the design docs were\nlocated. That was true for a n\u003d3 db and an n\u003d3, db but may not be true in\ngeneral in a cluster.\n\nTo fix the issue, run a small gen_server responsible performing cluster\nindex cleanup. To avoid spawning Q*N jobs, deduplicate the requests by delaying\nfor up to 30 seconds per clustered db. For cleanup reuse and call the already\nexisting fabric index file cleanup machinery. That accomplishes two things:\n\n - Starts a quicker index file cleanup. Previously we only did this during\n   smoosh compaction runs. The view files could linger for a while until\n   compaction in smoosh would be triggered.\n\n - Cleaning search index files also stops indexes on their (Java) side, so\n   index file clean-up does \"double duty\" so speak when it comes to index shut\n   down.\n\nFix https://github.com/apache/couchdb/issues/5980\n"
    },
    {
      "commit": "169643d9dd23f381c7818324001b651861f6fd13",
      "tree": "697276d8be7a7801fe84ab5635a3eaea274746d1",
      "parents": [
        "425d8aa9eb2c95c68da0ea805767a916ebd93c51"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue May 05 01:47:23 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue May 05 11:51:02 2026 -0400"
      },
      "message": "Optimize replicator\n\nThere are two related optimizations:\n\nUse gen casts to queue docs for _bulk_docs in replication workers instead of\ngen calls.\n\nPreviously, queue_fetch loop from the worker used a gen_sever call to add each\ndoc to the parent\u0027s (worker\u0027s) batch. Even though it was an immediate\ngen_server return, it was still synchronous call, and if the worker was in the\nmiddle of a _bulk_docs flush, it couldn\u0027t reply to the queue_fetch_loop and\nstall it for that moment. The optimization is to use casts instead. This way,\nthe fetch loop can continue fetching (running bulk_gets) without having to\nperiodically wait for individual batch_doc calls. The bulk_docs pending queue\nis still properly bounded, as at the end of the fetch loop there is a\n`gen_server:call(Parent, flush, infinity)` call which will properly\nbackpropagate the pressure for a slow target\n\nThe second optimization is to increase the bulk_docs worker memory limit a bit from\n500KB to 4MB. Previously 500KB always restricted _bulk_docs batch size to\nalways be less than 500KB regardless what the user set as the replicator worker\nbatch size. This way we\u0027ll still limit the maximum batch size at 4MB, but since\nit\u0027s a higher limit and user\u0027s replicator batch size will have a wider range\neffective range to take effect (in other words if some users want to set a\nbatch size of 2500, they can now)\n\nA quick benchmark with a script [1] replicating 100k 2KB docs shows a local\nspeedup of 32 -\u003e 22 seconds\n\n```\n./rep_bench.py --ndocs 100000 --doc-size 2048 --source-url http://localhost:15984  --target-url http://localhost:25984\nsource:      http://localhost:15984/rep_bench_source\ntarget:      http://localhost:25984 (db prefix: rep_bench_target)\ncoordinator: http://localhost:15984  poll: 2.0s  http_timeout: 600s\ndocs: 100000  doc_size: 2048  n_jobs: 1\n\u003d\u003d source \u003d\u003d\n  loading 100000 docs into rep_bench_source (doc_size\u003d2048, batch\u003d500)...\n  loaded 100000 docs in 23.8s, size 27.0MB\n setting applied: {(\u0027replicator\u0027, \u0027startup_jitter\u0027): \u00270\u0027, (\u0027replicator\u0027, \u0027interval\u0027): \u00271000\u0027}\n\u003d\u003d bench \u003d\u003d\n\nwall\u003d30.28s\n  job 00  elapsed\u003d 30.27s  docs_read\u003d 100000  docs_written\u003d 100000  missing\u003d  100000\n```\n\n```\n./rep_bench.py --ndocs 100000 --doc-size 2048 --source-url http://localhost:15984  --target-url http://localhost:25984\nsource:      http://localhost:15984/rep_bench_source\ntarget:      http://localhost:25984 (db prefix: rep_bench_target)\ncoordinator: http://localhost:15984  poll: 2.0s  http_timeout: 600s\ndocs: 100000  doc_size: 2048  n_jobs: 1\n\u003d\u003d source \u003d\u003d\n  loading 100000 docs into rep_bench_source (doc_size\u003d2048, batch\u003d500)...\n  loaded 100000 docs in 24.2s, size 26.9MB\n setting applied: {(\u0027replicator\u0027, \u0027startup_jitter\u0027): \u00270\u0027, (\u0027replicator\u0027, \u0027interval\u0027): \u00271000\u0027}\n\u003d\u003d bench \u003d\u003d\n\nwall\u003d22.11s\n  job 00  elapsed\u003d 22.10s  docs_read\u003d 100000  docs_written\u003d 100000  missing\u003d 100000\n```\n\n[1] https://gist.github.com/nickva/2a49f6e624208c45dc0dafdd935a4aae\n"
    },
    {
      "commit": "425d8aa9eb2c95c68da0ea805767a916ebd93c51",
      "tree": "42f388d2297efd236e2e03fa82729c1fa283de0b",
      "parents": [
        "43b31d90cd36524617c3eb124162858c7398c3d5"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Apr 30 00:06:07 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri May 01 16:10:04 2026 -0400"
      },
      "message": "Fix append_update_replies case clause in fabric_doc_update\n\nIn `serialize_worker_startup\u003dfalse` mode it was possible before to get a\nfunction_clause error in `fabric_doc_update:append_update_replies/3`. The\nfunction_clause was because of an empty `Docs` list and a non-empty `Replies`\nlist. That happened when we had at least two conflicted replies for a doc one\narriving, and others in-flight, the arriving one would knock out the doc from\nthe expected replies list, such that when the second reply arrived, it wouldn\u0027t\nmatch up with anything.\n\nTo fix this, keep track of conflicts separately and check that conflicted list\nbefore extra workers spawn, and also avoid altering the grouped docs structure\nfor in-flight requests\n\nAlso fix another regression, and that\u0027s in case of sws\u003dfalse to keep going and\nperform the quorum the way we did before sws feature. Previously, we only\nspawned the workers in parallel but still short-cut the quorum on a conflict.\n"
    },
    {
      "commit": "43b31d90cd36524617c3eb124162858c7398c3d5",
      "tree": "cf19c1e3bb4148bd71b8af0ff0d7e1b3d092903f",
      "parents": [
        "2198a0a08c1f02abac6db0364ea18b10b36cebd3"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Apr 30 16:56:12 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri May 01 13:01:13 2026 -0400"
      },
      "message": "Update dependencies before 3.5.2 release\n\n * snappy https://github.com/apache/couchdb-snappy/releases/tag/CouchDB-1.0.10\n * meck https://github.com/apache/couchdb-meck/releases/tag/v1.1.1\n * fauxton https://github.com/apache/couchdb-fauxton/releases/tag/v1.3.6\n * excoveralls https://github.com/parroty/excoveralls/releases/tag/v0.18.5\n"
    },
    {
      "commit": "2198a0a08c1f02abac6db0364ea18b10b36cebd3",
      "tree": "5ce233cdd49f071ba51a77705cceaf4a5010ca6a",
      "parents": [
        "486ed0aee9af39abb9b010f05b8e65e9fe56109b",
        "da53da51a5b60144b6347ca53f5a817f32c1aeba"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri May 01 14:58:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 14:58:19 2026 +0200"
      },
      "message": "Merge pull request #5992 from apache/chore/ioq-default-ini\n\nchore: remove duplicate ioq section entry in default.ini"
    },
    {
      "commit": "da53da51a5b60144b6347ca53f5a817f32c1aeba",
      "tree": "5ce233cdd49f071ba51a77705cceaf4a5010ca6a",
      "parents": [
        "b2a00f820f5853e90f7b9ba960e70d8fbf1703ea"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri May 01 11:10:44 2026 +0200"
      },
      "committer": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri May 01 11:10:44 2026 +0200"
      },
      "message": "chore: add missing comment from docs\n"
    },
    {
      "commit": "b2a00f820f5853e90f7b9ba960e70d8fbf1703ea",
      "tree": "546f7c8c942300558284afe1a5f8044f7a47e60a",
      "parents": [
        "486ed0aee9af39abb9b010f05b8e65e9fe56109b"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri May 01 11:06:04 2026 +0200"
      },
      "committer": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri May 01 11:06:04 2026 +0200"
      },
      "message": "chore: remove duplicate ioq section entry in default.ini\n"
    },
    {
      "commit": "486ed0aee9af39abb9b010f05b8e65e9fe56109b",
      "tree": "14057081f70e62aa9fea5b9de13514f79e20acb5",
      "parents": [
        "291a24c4336dcb245e106dbc7f3b2da24387c664"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Thu Apr 30 05:57:47 2026 +0200"
      },
      "committer": {
        "name": "PÁLI Gábor János",
        "email": "pali.gabor@gmail.com",
        "time": "Thu Apr 30 14:18:14 2026 +0200"
      },
      "message": "clouseau: bump version to 3.3.0\n\nThere were some recent developments in Clouseau for which it may\nmake sense to bring them in by default and upgrade to the latest\nrelease.  While here, update outdated help messages in the\nconfigure scripts.\n"
    },
    {
      "commit": "291a24c4336dcb245e106dbc7f3b2da24387c664",
      "tree": "e3cfb245320fde0f1bf56bf27cb4cdbbe37cd953",
      "parents": [
        "c82fe8ffb3e5169d78be4cae6696ed0a3908b935"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 29 21:28:05 2026 +0200"
      },
      "committer": {
        "name": "PÁLI Gábor János",
        "email": "pali.gabor@gmail.com",
        "time": "Thu Apr 30 09:07:15 2026 +0200"
      },
      "message": "Re-enable Clouseau testing in containers\n\nRequests run in the Elixir and Mango tests tend to time out time\nto time due to reasons unknown at the moment, but only when they\nare run in virtualized or containerized environments, such as the\nCI for this repository or the Clouseau upstream CI [1].\n\nIncreasing the frequency of recurring commit checks seems to\noffer a way to mitigate the problem so that at least the\nresulting flakiness can be eliminated for now.\n\n[1] https://github.com/cloudant-labs/clouseau/pull/166\n"
    },
    {
      "commit": "c82fe8ffb3e5169d78be4cae6696ed0a3908b935",
      "tree": "3901e3e21823de90f8cd1da7d3667ece4eaf3af3",
      "parents": [
        "d7aefe0f7e599051cad25b8cb330709d264c457f"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Apr 29 04:14:10 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Apr 29 09:53:24 2026 -0400"
      },
      "message": "Make view compaction tests unflaky\n\nIt turns after we made view updates more efficient, some view compaction tests\nstarted to flake out because they relied on view builds batching inneficiently\nalways and creating garbage between the batches.\n\nTo fix it, do not rely on inneficient batching, instead just do another\nexplicit fresh and update, this should guarantee at least some extra garbage\nbeing created in the tree.\n"
    },
    {
      "commit": "d7aefe0f7e599051cad25b8cb330709d264c457f",
      "tree": "d514ff1f32d752474ac733bbd2907f183ba74a7a",
      "parents": [
        "2c4b6a138b981105b293d0e375adca1c72ec24b0"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Apr 29 01:55:15 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Apr 29 09:53:24 2026 -0400"
      },
      "message": "Use config:get_integer/3 in couch_mrview_updater\n\nThis avoids re-parsing the string values into integers when defaults are used\nevery time we run the check.\n"
    },
    {
      "commit": "2c4b6a138b981105b293d0e375adca1c72ec24b0",
      "tree": "0f5c271b70271572723b6cd9872188b06cc7316f",
      "parents": [
        "e979f7f8b448043b95f68214faf73790e4d2cfd1"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Apr 29 00:43:42 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Apr 29 09:53:24 2026 -0400"
      },
      "message": "Increase view queue size from 100KB to 10MB\n\n100KB was undersized given the 100 batch size used in the process_doc call.\n100 docs as small as 1KB will already start to get serialized and not take\nadvantage of the work queue buffering. Make it 10MB to fit about 10 batches of\n1MB each and be a bit under the min_writer_size default of 16MB.\n"
    },
    {
      "commit": "e979f7f8b448043b95f68214faf73790e4d2cfd1",
      "tree": "c38adf78a97150e71facbed77e0103887b722b98",
      "parents": [
        "7039e0be8a2487610e368066b72d20bd1ca65441"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Apr 29 00:25:30 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Apr 29 09:53:24 2026 -0400"
      },
      "message": "Do not run full GC after each doc update in the indexer\n\nRun it after 1000 docs, ensuring it still forced to run as a safe default.\nHowever, in OTP 27+ this should not be needed at all. So infinity is also a\npossible config setting, we may change to that in the future.\n\nComments from John Hogberg in OTP repo regarind behavior change in OTP 27:\n\nhttps://github.com/erlang/otp/issues/8229#issuecomment-1988858134\n\n\u003e the GC pressure of off-heap binaries (\"vheap\") was vastly under-counted prior\nto 24ef4cb [1]. In these tests this caused it to GC less often and, crucially, when\nthere was less live data to keep.\n\n[1]\nhttps://github.com/erlang/otp/commit/24ef4cbaeda9b9c26682cba75f2f15b0c58722aa\n"
    },
    {
      "commit": "7039e0be8a2487610e368066b72d20bd1ca65441",
      "tree": "449d4054e2a4d9bde90843e0c48c1948cf18753c",
      "parents": [
        "c88efca9ec17828521ad2c613a50f1a41de41155",
        "c4da1b8c765df85659209be8390d4f3d886b4e64"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Apr 27 22:38:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 22:38:26 2026 +0100"
      },
      "message": "Merge pull request #5984 from apache/disable-copilot-code-review\n\ndisable copilot code review"
    },
    {
      "commit": "c4da1b8c765df85659209be8390d4f3d886b4e64",
      "tree": "449d4054e2a4d9bde90843e0c48c1948cf18753c",
      "parents": [
        "c88efca9ec17828521ad2c613a50f1a41de41155"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Apr 27 21:05:57 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Apr 27 21:05:57 2026 +0100"
      },
      "message": "disable copilot code review\n"
    },
    {
      "commit": "c88efca9ec17828521ad2c613a50f1a41de41155",
      "tree": "999a5b7991bca2d1e65cb74cac4554e233975641",
      "parents": [
        "f7cb246cd54c2518a40df00e74b85996664a0402"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Apr 25 12:23:22 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Apr 25 17:47:14 2026 -0400"
      },
      "message": "Jiffy 2.0\n\nhttps://github.com/davisp/jiffy/releases/tag/2.0.0\n"
    },
    {
      "commit": "f7cb246cd54c2518a40df00e74b85996664a0402",
      "tree": "08d77872733cba0de3b31b9dbc32304e838eb318",
      "parents": [
        "ac042fbe6eaec3b1b60f41510eb8e17dc4b3b893",
        "05794a8976f501b44b54148c516d7a61eb2457dc"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Apr 22 16:50:57 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 16:50:57 2026 +0100"
      },
      "message": "Merge pull request #5978 from apache/find-threshold\n\nFind threshold"
    },
    {
      "commit": "05794a8976f501b44b54148c516d7a61eb2457dc",
      "tree": "08d77872733cba0de3b31b9dbc32304e838eb318",
      "parents": [
        "ac042fbe6eaec3b1b60f41510eb8e17dc4b3b893"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Apr 22 15:25:20 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Apr 22 16:03:15 2026 +0100"
      },
      "message": "fixes _find when over threshold\n\nfixed a typo also\n\ncloses https://github.com/apache/couchdb/issues/5977\n"
    },
    {
      "commit": "ac042fbe6eaec3b1b60f41510eb8e17dc4b3b893",
      "tree": "43445fc1f685134033065a32e347766c106e1ae4",
      "parents": [
        "6e51448e516cacc676e2e5711aead53b43c03676"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Apr 22 00:26:39 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Apr 22 09:57:29 2026 -0400"
      },
      "message": "Use errstr() instead of toSource() in nouveau js wrapper\n\n`toSource()` is a Spidermonkey special, use our `errstr()` warpper function which checks\nif `toSource()` is available, and if not,  it runs `toString()` instead\n"
    },
    {
      "commit": "6e51448e516cacc676e2e5711aead53b43c03676",
      "tree": "1d6e977eb27c59b3a28917b1acf1d703642ca17c",
      "parents": [
        "8491b4417bd7ff0fce80c09579f5c0d2ee590b33"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Wed Apr 22 09:42:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 09:42:20 2026 +0200"
      },
      "message": "Update CI badge URL in README.rst (#5974)"
    },
    {
      "commit": "8491b4417bd7ff0fce80c09579f5c0d2ee590b33",
      "tree": "7714e6b3bfe860838f84ea03cf1475707d76b491",
      "parents": [
        "df9b0135857695ee3bf3bd99c12443ef181fd229"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@apache.org",
        "time": "Tue Apr 21 23:10:26 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Apr 22 00:11:13 2026 -0400"
      },
      "message": "Use updated CI images\n\nLatest Erlang patches and NodeJS updated to 24\n\nUnfortunately Elixir stuck at 18.x for the time being there is an\nissue with hex and newer Erlang 28 builds for some reason.\n"
    },
    {
      "commit": "df9b0135857695ee3bf3bd99c12443ef181fd229",
      "tree": "f9658a2680ff73a082c2bfdc990422e041c5e9a2",
      "parents": [
        "a84d08c3f159980f308d0f005dc7788487235d4b"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Tue Apr 21 10:07:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 10:07:21 2026 +0200"
      },
      "message": "Fix Jenkins badge link in README (#5973)\n\nAfter a Jenkins upgrade we need to updated the badge link for the build job in README."
    },
    {
      "commit": "a84d08c3f159980f308d0f005dc7788487235d4b",
      "tree": "d53926899228c6294a244be23c81bca9b09f2572",
      "parents": [
        "48cc058643682a019325237b676ea6a490d41975"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Fri Apr 17 17:53:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 17:53:23 2026 +0200"
      },
      "message": "dev: Update devclean Makefile target (#5970)\n\nUpdate the Makefile target to remove all artifacts\nwhich are created during development."
    },
    {
      "commit": "48cc058643682a019325237b676ea6a490d41975",
      "tree": "487cece17fc01e22988a978088b74340c1472cb5",
      "parents": [
        "d0a509b3f215c0a8379cc1e22183e740ff435927"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Fri Apr 17 16:26:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:26:49 2026 +0200"
      },
      "message": "dev: Update Black to 26.3.1 (#5971)\n\nUpdate Python Black to 26.3.1 to support new Pythons."
    },
    {
      "commit": "d0a509b3f215c0a8379cc1e22183e740ff435927",
      "tree": "15259e3ede4f4f13242bb2bbee3c784d6a495226",
      "parents": [
        "f3a9695490ead62f35ae428f5c5176a55bffb934"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Thu Apr 16 16:13:30 2026 +0200"
      },
      "committer": {
        "name": "PÁLI Gábor János",
        "email": "pali.gabor@gmail.com",
        "time": "Thu Apr 16 20:33:41 2026 +0200"
      },
      "message": "dev/run: make creation of `couch.uri` independent of `--auto-ports`\n\nIntroduce a new flag, `--write-uri-file` that makes the script to\nconfigure CouchDB for laying down the `couch.uri` for each node.\nThis is implictly assumed when using `--auto-ports` because in\nthat case the presence of those files can contribute to easier\ndiscovery of the exposed ports.  But sometimes it may make sense\nto get the `couch.uri` files rendered even if the ports were\nallocated deterministically.  Also, make it sure that no `.uri`\nfiles are left behind when they are not in use.\n"
    },
    {
      "commit": "f3a9695490ead62f35ae428f5c5176a55bffb934",
      "tree": "ff98287d8e1c251be893a3fa9ee489c4f4bd9f7c",
      "parents": [
        "57964c2fd0a2b37fd84ecb0cde69966f81a35632",
        "1c290849e2fb52033f328dbed42fed8e72128d12"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Apr 16 08:32:46 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 08:32:46 2026 +0100"
      },
      "message": "Merge pull request #5967 from pgj/fix/dev/run/couch.uri_path\n\ndev/run: make file path for `couch.uri` absolute"
    },
    {
      "commit": "1c290849e2fb52033f328dbed42fed8e72128d12",
      "tree": "ff98287d8e1c251be893a3fa9ee489c4f4bd9f7c",
      "parents": [
        "57964c2fd0a2b37fd84ecb0cde69966f81a35632"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 15 13:51:48 2026 +0200"
      },
      "committer": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 15 14:53:50 2026 +0200"
      },
      "message": "dev/run: make file path for `couch.uri` absolute\n\nIn certain settings, CouchDB is made to run from a directory\ndifferent from that of its root.  That is why nodes may have\nproblems with finding the location for creating and populating\nthe `couch.uri` file with the information on the automatically\nassigned ports.  Address this by switching over an absolute path\non specifying the actual place of the file.\n"
    },
    {
      "commit": "57964c2fd0a2b37fd84ecb0cde69966f81a35632",
      "tree": "85543de2e1f9e9552d598f34862450be7d927c14",
      "parents": [
        "cbb1f99819db1cad145d0f60b96e66d338b40722",
        "e71c31d5a5019d8a00275888598997b3a2703f04"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Apr 15 10:14:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 10:14:26 2026 +0100"
      },
      "message": "Merge pull request #5964 from pgj/fix/dev/run/default.ini-vs-auto-ports\n\nfix(`dev/run`): use `couchdb.uri` only when auto-ports is enabled"
    },
    {
      "commit": "e71c31d5a5019d8a00275888598997b3a2703f04",
      "tree": "85543de2e1f9e9552d598f34862450be7d927c14",
      "parents": [
        "c99ab8540c631102be557abb668f9c0ffd3f024e"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 15 09:37:30 2026 +0200"
      },
      "committer": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 15 09:38:42 2026 +0200"
      },
      "message": "Clean up the `couch.uri` on `make devclean`\n\nLeftover versions of `couch.uri` may create confusion so it is\nbetter remove them alongside all the other node-specific local\ndata.\n"
    },
    {
      "commit": "c99ab8540c631102be557abb668f9c0ffd3f024e",
      "tree": "f6b454022abacfdcc235b8add3c1391da54fbadd",
      "parents": [
        "cbb1f99819db1cad145d0f60b96e66d338b40722"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 15 02:39:04 2026 +0200"
      },
      "committer": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Wed Apr 15 02:39:04 2026 +0200"
      },
      "message": "dev/run: use `couchdb.uri` only when auto-ports is enabled\n\nOn tweaking the `default.ini` for setting up the launch for the\nCouchDB cluster, the `couchdb.uri` file with information on the\npublished ports is being referenced even when it does not exist.\nIt is only created when the `--auto-ports` flag is set, so we will\nhave to make the reconfiguration of cluster consistent with that\nto avoid potential errors and making the startup fail.\n"
    },
    {
      "commit": "cbb1f99819db1cad145d0f60b96e66d338b40722",
      "tree": "4e440ec87bdef666e0005211fc331dd0e5bcb312",
      "parents": [
        "d3a7458ff875d362ff7b80768f8cc034047dc06b"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Apr 06 19:03:06 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Apr 07 10:26:42 2026 -0400"
      },
      "message": "Some stats for the auto-purge plugin\n\nAdd a few stats for the auto-purge plugin. We\u0027d like to know when is starts,\ncompletes, opens a db and how many purges it does.\n"
    },
    {
      "commit": "d3a7458ff875d362ff7b80768f8cc034047dc06b",
      "tree": "6128d42b0a7d82a2b52dd83cff7b71282d3da38f",
      "parents": [
        "72936f80eca5e99ce00426085f7608391862db3a",
        "910acdb94b91359d5632c99aa30bdd58ceb87d90"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 31 11:47:07 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 11:47:07 2026 +0100"
      },
      "message": "Merge pull request #5955 from apache/nouveau-fix-latestv\n\nfix isLatestVersion when field is missing"
    },
    {
      "commit": "910acdb94b91359d5632c99aa30bdd58ceb87d90",
      "tree": "6128d42b0a7d82a2b52dd83cff7b71282d3da38f",
      "parents": [
        "72936f80eca5e99ce00426085f7608391862db3a"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 31 10:35:06 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 31 10:35:06 2026 +0100"
      },
      "message": "fix isLatestVersion when field is missing\n"
    },
    {
      "commit": "72936f80eca5e99ce00426085f7608391862db3a",
      "tree": "c6de2fbefe9e8b60d5b46a15ca7881e278875f98",
      "parents": [
        "62c351c37df794db933797da1a5de1f451464472"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 16:01:39 2026 +0100"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 17:42:47 2026 +0100"
      },
      "message": "ci: Use deleteDir() (non Docker workers) to cleanup workspace directory\n\nWe can use deleteDir() at the end of the native stages.\nOn Windows the cleanup command doesn\u0027t work completely,\nreplace it with the provided Jenkins method. Use it\nat the other native CI workers too.\n"
    },
    {
      "commit": "62c351c37df794db933797da1a5de1f451464472",
      "tree": "155adfa7f9282ded168016e04340979dec1330c9",
      "parents": [
        "b2ad13e5e0c76aaa0c6bf0ae532ea6a526a9df73"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 13:34:52 2026 +0100"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 15:27:20 2026 +0100"
      },
      "message": "chore: Embellish configure.ps1\n"
    },
    {
      "commit": "b2ad13e5e0c76aaa0c6bf0ae532ea6a526a9df73",
      "tree": "7823f8a68bd43964fefdda0206967f49985bcdce",
      "parents": [
        "2800a94dc087b0790f91bcab1624f31a364ad580"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 13:31:14 2026 +0100"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 15:27:20 2026 +0100"
      },
      "message": "dev: Adapting the Clouseau download to the behaviour of Makefile\n"
    },
    {
      "commit": "2800a94dc087b0790f91bcab1624f31a364ad580",
      "tree": "abe2f39d0db6414c7402461dde73f9e341dd9519",
      "parents": [
        "c4e798f539c0fa92a5d4873d887f7b8e3ee60a05"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 13:27:34 2026 +0100"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 28 15:27:20 2026 +0100"
      },
      "message": "ci: Add a parameter to specify whether Nouveau is being used in CI\n"
    },
    {
      "commit": "c4e798f539c0fa92a5d4873d887f7b8e3ee60a05",
      "tree": "d903034fca4fc403826291052085880da9946bcb",
      "parents": [
        "2f2509562eb4ecf124c574f194e38ff255f0167f"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Mar 26 18:16:08 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Mar 26 20:45:44 2026 -0400"
      },
      "message": "Handle a bad_request triple in fabric_doc_update\n\nBesides the `{bad_request, Msg}` also handle the `{bad_request, Error,\nReason}` triple.  Design document validator can return those [1], for  instance.\n\nWhile at it add a test to cover both the tuple and the triple case.\n\n[1] https://github.com/apache/couchdb/blob/997deea76f4489e2e8702bb7dbf50eceffdd5650/src/couch/src/couch_db.erl#L984-L986\n"
    },
    {
      "commit": "2f2509562eb4ecf124c574f194e38ff255f0167f",
      "tree": "383c5aed24d565f299e4548e704d4a20ee495ef5",
      "parents": [
        "997deea76f4489e2e8702bb7dbf50eceffdd5650"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Mar 26 15:54:41 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Mar 26 18:59:27 2026 -0400"
      },
      "message": "Try to unflake auto-purge plugin tests\n\nNoticed some of these tests were failing in CI. It may be because the time we\nset is exactly -3h, and 3h is also the minimum granularity period, so to avoid\nfalling exaclty on the end of it use a larger time interval of -6h.\n"
    },
    {
      "commit": "997deea76f4489e2e8702bb7dbf50eceffdd5650",
      "tree": "e7b711059e31280e4e40afeb0ce92e7266ba12ef",
      "parents": [
        "3083d28a4478a23bba4294684782c662c2905e43"
      ],
      "author": {
        "name": "Jiahui Li",
        "email": "lijiahui702@gmail.com",
        "time": "Thu Mar 26 09:25:15 2026 -0500"
      },
      "committer": {
        "name": "Jiahui Li",
        "email": "lijiahui702@gmail.com",
        "time": "Thu Mar 26 12:13:28 2026 -0500"
      },
      "message": "CI: Enable xref checking for undefined functions\n\n`Xref` is a cross reference tool that  helps us find undefined functions,\nso add it to the CI.\n\nReference: https://www.erlang.org/doc/apps/tools/xref_chapter.html\n"
    },
    {
      "commit": "3083d28a4478a23bba4294684782c662c2905e43",
      "tree": "aac0fff53a684234344fe0990953d6d6fd945c07",
      "parents": [
        "322e55cf24bbefc3a4790d0e8a5c9dbd0bb8ec1b",
        "b58a68aa382f5a7689ee47802d0551e9d436157e"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Mar 26 09:54:13 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 09:54:13 2026 +0000"
      },
      "message": "Merge pull request #5942 from apache/nouveau-ken\n\nrestore nouveau_index_updater:outdated"
    },
    {
      "commit": "b58a68aa382f5a7689ee47802d0551e9d436157e",
      "tree": "aac0fff53a684234344fe0990953d6d6fd945c07",
      "parents": [
        "322e55cf24bbefc3a4790d0e8a5c9dbd0bb8ec1b"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Mar 26 08:16:35 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Mar 26 08:45:15 2026 +0000"
      },
      "message": "restore nouveau_index_updater:outdated\n\nUsed by ken...\n"
    },
    {
      "commit": "322e55cf24bbefc3a4790d0e8a5c9dbd0bb8ec1b",
      "tree": "5bdb4d688e57f0ea1d5b88d1250097b6ff9b0463",
      "parents": [
        "caaf84a626670ac3fe206c60186e7186202d60ed"
      ],
      "author": {
        "name": "Karthikeya1500",
        "email": "karukarthikeya1111@gmail.com",
        "time": "Thu Mar 26 01:40:14 2026 +0530"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Mar 25 22:31:57 2026 -0400"
      },
      "message": "Add eunit test coverage for invalid quickjs commands\n"
    },
    {
      "commit": "caaf84a626670ac3fe206c60186e7186202d60ed",
      "tree": "334c867692cce3fde398906d2b73b2140b79a418",
      "parents": [
        "fc236b7b388cfb75749504874fe374e6635c5514"
      ],
      "author": {
        "name": "Karthikeya1500",
        "email": "karukarthikeya1111@gmail.com",
        "time": "Wed Mar 25 10:59:34 2026 +0530"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Mar 25 22:31:57 2026 -0400"
      },
      "message": "Fix ReferenceError in QuickJS dispatch\n\nIf an unrecognized command is processed by globalThis.dispatch,\nthe error handler attempts to reference cmdkey without it\nbeing defined. This throws a ReferenceError instead of generating\nthe intended CouchDB fatal error array.\n\nThis commit assigns cmd.shift() to a const variable cmdkey before\nevaluating the switch statement.\n"
    },
    {
      "commit": "fc236b7b388cfb75749504874fe374e6635c5514",
      "tree": "0ab9b47318df4b42079ab8157769840cc0b8c898",
      "parents": [
        "02ec82bfa0cb13547d9a475e84e1d4184492d43c",
        "b074f4e7e63276ddfea040691046c1e4d4bd92fa"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Mar 25 09:45:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 09:45:06 2026 +0000"
      },
      "message": "Merge pull request #5940 from apache/nouveau-update-bundle\n\nNouveau update bundle"
    },
    {
      "commit": "b074f4e7e63276ddfea040691046c1e4d4bd92fa",
      "tree": "0ab9b47318df4b42079ab8157769840cc0b8c898",
      "parents": [
        "43d8e9e5bb5faa3e6d57849e2e80d9680907919e"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 21:34:23 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "commit purge seq update before returning\n"
    },
    {
      "commit": "43d8e9e5bb5faa3e6d57849e2e80d9680907919e",
      "tree": "0aa94d3458eaa4b59a4429864de85737046cc225",
      "parents": [
        "f15b5ff63fbdda8ea3482b67010a430240d3043f"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:40:15 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "initialise index purge seq from db purge seq\n"
    },
    {
      "commit": "f15b5ff63fbdda8ea3482b67010a430240d3043f",
      "tree": "cd71e13255277b8428ef1c05f69b6ddb018c6f10",
      "parents": [
        "278c5e3ab1fe67b4d6845831e13f18f05a0df91d"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 23:32:59 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "remove open_or_create_index/2\n"
    },
    {
      "commit": "278c5e3ab1fe67b4d6845831e13f18f05a0df91d",
      "tree": "07c988e86aab69e630dba5fc269fb6b777c340a7",
      "parents": [
        "17736dc95be77fb8f4f3cfd5ae82facfce6fc5c9"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 23:31:42 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "remove unused function\n"
    },
    {
      "commit": "17736dc95be77fb8f4f3cfd5ae82facfce6fc5c9",
      "tree": "ec84de86d34e61c65d89d87c441727b6dc16b951",
      "parents": [
        "9c536567c3561e65e69de00820524766fd9e06f7"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 20:27:47 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "convert Search api classes to records\n"
    },
    {
      "commit": "9c536567c3561e65e69de00820524766fd9e06f7",
      "tree": "893027443426bf6b81032851e536b30d06aa21e7",
      "parents": [
        "a95d3585c830f05298363dec6109323cfcf5dc78"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 15:22:24 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "convert api field classes to record\n"
    },
    {
      "commit": "a95d3585c830f05298363dec6109323cfcf5dc78",
      "tree": "d3334cb1ecf03dd645dcfa2100d6ced88a52a141",
      "parents": [
        "196ec15472b643d01bfd633e35dd56890d2fbb57"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 15:05:51 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "convert IndexDefinition to record\n"
    },
    {
      "commit": "196ec15472b643d01bfd633e35dd56890d2fbb57",
      "tree": "cfacc76d0ccdaeff0f10af4494e48da8be15567a",
      "parents": [
        "658859581501d6ddee21520c3e88d24dec5995e4"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 10:19:55 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "convert Document api classes to records\n"
    },
    {
      "commit": "658859581501d6ddee21520c3e88d24dec5995e4",
      "tree": "e17d648c6ef5d1b78903a5bf6cb35183934452a0",
      "parents": [
        "421c71f50e80c427d2cd87dca8e89ec7ddffb736"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 10:06:37 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "improve annotations in BulkUpdateRequest\n"
    },
    {
      "commit": "421c71f50e80c427d2cd87dca8e89ec7ddffb736",
      "tree": "98274688ee97f8235c1413ddce401793b19928fe",
      "parents": [
        "d69bf58313e51dc5a72ec418dae8f4d04e906a39"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 10:04:13 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "convert IndexInfo{Request,Response} to record\n"
    },
    {
      "commit": "d69bf58313e51dc5a72ec418dae8f4d04e906a39",
      "tree": "889e228a460ddf7e27f30e4e2d757f0d479b7aeb",
      "parents": [
        "99f16a0076967348f30fa0c8a890e3ce54ad6a61"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 09:53:10 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "convert Analyze{Request,Response} to record\n"
    },
    {
      "commit": "99f16a0076967348f30fa0c8a890e3ce54ad6a61",
      "tree": "5aa68aa0a47013089bee6725491f29d0d223d927",
      "parents": [
        "bc6ece14ce182d2679af5738f79248cad8ce4219"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 09:46:33 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "use StandardCharsets.UTF_8\n"
    },
    {
      "commit": "bc6ece14ce182d2679af5738f79248cad8ce4219",
      "tree": "435ba119cbbdf5a2aa1fb537ecee371f7834b04b",
      "parents": [
        "02ec82bfa0cb13547d9a475e84e1d4184492d43c"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Sat Mar 21 09:42:34 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 22:45:57 2026 +0000"
      },
      "message": "upgrade to Lucene 10.4.0\n"
    },
    {
      "commit": "02ec82bfa0cb13547d9a475e84e1d4184492d43c",
      "tree": "4b43ed8aa898910ab08bc694cce86f79df1a06e4",
      "parents": [
        "c0a967365e059faf6869bdda2da6ccd215155e56",
        "c2ddc5d89e44bbbfbd665215a8a56bc4ab0f8989"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 17:59:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 17:59:04 2026 +0000"
      },
      "message": "Merge pull request #5939 from apache/view-compaction-duration-fix\n\nfix view compaction duration logging"
    },
    {
      "commit": "c2ddc5d89e44bbbfbd665215a8a56bc4ab0f8989",
      "tree": "4b43ed8aa898910ab08bc694cce86f79df1a06e4",
      "parents": [
        "c0a967365e059faf6869bdda2da6ccd215155e56"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 11:50:24 2026 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Mar 24 15:25:50 2026 +0000"
      },
      "message": "fix view compaction duration logging\n"
    },
    {
      "commit": "c0a967365e059faf6869bdda2da6ccd215155e56",
      "tree": "8d9d4007e5e0b5331eefdc60b3c2bb810d1fed5e",
      "parents": [
        "03e02e1ba282a1f71bc2ac04f5f91735786dd4aa"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Mar 24 01:00:48 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Mar 24 06:42:07 2026 -0400"
      },
      "message": "Add jitter for scanner plugins\n\nAdd some jitter (10% by default) to scanner plugin periods. This should help\navoid a \"thundering heard\" effect on the cluster if plugins are set up to start\nat the same time on all the cluster nodes.\n\nJitter is configurable per-plugin. Config format is `$num_percent` or\n`$num_$timeunit`. The `$num_percent` format configures the maximum jitter value\nas a period percentage. For example 10% of `period \u003d 24_hours` would be 2.4\nhours. The `$num_$timeunit` is the same format as a period itself, so it can\ntake values like `5_min`, `2_hours`, etc.\n"
    },
    {
      "commit": "03e02e1ba282a1f71bc2ac04f5f91735786dd4aa",
      "tree": "4c3254f4df70ec48e9c1f7116f2ef40ac7d96e4c",
      "parents": [
        "83a5f867572625102c14b566377ef858c2c0ace8"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Mar 23 17:23:40 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Mar 23 19:55:24 2026 -0400"
      },
      "message": "Update QuickJS: bytecode size checks, memory fixes, test262\n\n* Test262 updated: 83341 -\u003e 83394 tests pass\n\n* Added JSON.parse source text access\nhttps://github.com/bellard/quickjs/commit/d7ae12ae71dfd6ab2997527d295014a8996fa0f9\n\n* Added basic protection against too large function in serialized bytecode\nhttps://github.com/bellard/quickjs/commit/a31dcef98c7d1d8927871ac169a1c24ad8875046\n\nFixes:\n\n * Use-after-free via re-entrant GC in FinalizationRegistry weak ref cleanup\n https://github.com/bellard/quickjs/commit/5022f2b76ab0e0c1f535224c796bef7bb1ab8e7d\n\n * Async generator lifecycle bug\n https://github.com/bellard/quickjs/commit/e7b9f217b46d567aed203918ba0c36f234d2bd3f\n\n * `RegExp.escape`\n https://github.com/bellard/quickjs/commit/4d16546cdf60cdec670ea6f033253140f861ba55\n\n * Buffer overflow in Atomics with resizable typed arrays\n https://github.com/bellard/quickjs/commit/46bd985b337b1a66597e30c38dd45c8e1f49feee\n\n * Memory leak in Iterator.prototype.map\n https://github.com/bellard/quickjs/commit/f1b63fc1ad0b62262c069b2e1615737b2bb63631\n\n * Stack underflow with generator in iterable\n https://github.com/bellard/quickjs/commit/69090b969fa9d01deeb05011a2bf8537ddf61266\n\n * TypedArray constructor semantics which removes a buffer overflow\n https://github.com/bellard/quickjs/commit/68caa5f226401a7e148fb8f7358d4688c71372aa\n\n * Buffer overflow when the fast array is resized\n https://github.com/bellard/quickjs/commit/0989d4cb4a1e26f12ba1d65e3d5963342211b1dd\n\n * GC traversal of uninitialized fast-array\n https://github.com/bellard/quickjs/commit/4c722cea4e709682003eb0da67b393ea38c56e5e\n"
    },
    {
      "commit": "83a5f867572625102c14b566377ef858c2c0ace8",
      "tree": "10fdb12711514b927e9dcb7a105f0d5fb0647985",
      "parents": [
        "4954282f0df66fe55a492dd0b6a4e5cbd694f8c6"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Mar 21 22:54:28 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Mar 22 03:04:21 2026 -0400"
      },
      "message": "Improve/fix jenkins workspace cleanup\n\nPreviously `${WORKSPACE}/.[a-zA-Z]` would only delete files names like `.a`,\n`.b`, `.A`.\n\nTo avoid repeating the command, including the \"UGH\" comment, make a function\nfor it and explain what the deal there. It turns out both issues (the original\nJira one and the GH one) are now stale and closed.\n"
    },
    {
      "commit": "4954282f0df66fe55a492dd0b6a4e5cbd694f8c6",
      "tree": "f3c0f8527930ed6852eaa7293d9f33beba19094a",
      "parents": [
        "ae2ae7dbffca22310bfd8b447e57b12c39c5f88a"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@apache.org",
        "time": "Sat Mar 21 17:57:11 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Mar 21 22:06:59 2026 -0400"
      },
      "message": "Improve CI performance by combining some stages\n\nCheck source and docs when building source and docs instead of a\nseparate stage. This way we avoid starting another docker job on a\ndifferent node possibly and reduce some churn.\n"
    },
    {
      "commit": "ae2ae7dbffca22310bfd8b447e57b12c39c5f88a",
      "tree": "32161facc802ad5f75a938a5c811d12f7e057b29",
      "parents": [
        "f0593080eb135c66aa9cd3eb93758c62ffd00259"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 21 14:32:53 2026 +0100"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Mar 21 19:50:48 2026 -0400"
      },
      "message": "ci: Full cleanup of Jenkins workspace\n\nHidden files were not deleted after a CI-run.\nRemove all files to have a clean start.\n"
    },
    {
      "commit": "f0593080eb135c66aa9cd3eb93758c62ffd00259",
      "tree": "0b0d09138a3eab3ac969bc4fa0561a88e3eb532f",
      "parents": [
        "bf1bf83133fcbd3e6c2df1b8f0d97e1b5dc1a581"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Mar 21 10:15:11 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 10:15:11 2026 +0100"
      },
      "message": "dev: Update .gitattributes for Nouveau (#5862)"
    },
    {
      "commit": "bf1bf83133fcbd3e6c2df1b8f0d97e1b5dc1a581",
      "tree": "e17fdd26d15d7e184a6c9fc230aa0d85500a2e5d",
      "parents": [
        "e273f702bf96be540d2ef4b9fcd02a2d680c4007"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Mar 20 19:38:01 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Mar 21 02:07:37 2026 -0400"
      },
      "message": "Don\u0027t need to set verify_peer any longer\n\nAs of OTP 26 it\u0027s the new default.\n\n[1] https://www.erlang.org/doc/apps/ssl/ssl.html#t:client_option_cert/0\n\u003e The default for Verify was changed to verify_peer in Erlang/OTP 26.\n"
    },
    {
      "commit": "e273f702bf96be540d2ef4b9fcd02a2d680c4007",
      "tree": "0e40758ce722947e6debe7d7727d71645ce0b5b2",
      "parents": [
        "04ec067cfdd093be766e622562281a562a7eeef7"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Mar 12 17:24:15 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Mar 20 11:07:54 2026 -0400"
      },
      "message": "Handle cases when dreyfus checkpoint is out-of-sync with the index\n\nCurrently, there are two places where the index purge seq is tracked: in the\nindex and in the db local doc checkpoints. Purge sequence folding should never\nstart below the value in the checkpoint document as that could raise an\n`invalid_start_purge_seq`. Normally both sequences should match, but if they\ndon\u0027t try to be explicit about what should happen:\n\n * Index pseq \u003e checkpoint pseq. Index somehow got ahead of the checkpoint. Use\n the checkpoint seq and re-process some purges through the index. This will do\n extra work but should be safe.\n\n * Index pseq \u003c checkpoint pseq. Index somehow got behind the checkpoint and it\n looks like it could have skipped purges. For views we reset the index, and\n arguably that\u0027s the most correct solution. However, we never really had a\n reset facility for clouseau, so instead choose to emit an error log and let\n the user intervene manually but otherwise keep updating the index.\n\nWhen updating the purge sequence in clouseau, save an rpc call if we\u0027re not\nadvancing clouseau\u0027s purge sequence. Clouseau as of recently already has a\ncheck to return `ok` right away if new purge_seq is somehow less or equal to\nthe current one, but it\u0027s still nice not have to do an extra round-trip.\n\nIt was a bit surprising to discover that we had a bunch of nice dreyfus eunit purge\ntests around but they never actually ran. The test functions there were not\ndiscoverably by EUnit. Switching them to be discoverable still wouldn\u0027t work as\nthe test suite would need clouseau running during EUnit tests. Since we don\u0027t\nreally have a framework for that, let\u0027s switch them to Elixir test and run them\nalongside other search tests.\n"
    },
    {
      "commit": "04ec067cfdd093be766e622562281a562a7eeef7",
      "tree": "50accef948dd34356a95370a8bdf93cdf58605e4",
      "parents": [
        "05dffb9a62f624dc282eac7b34db6cb9519cbb82"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Mar 18 17:47:06 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Mar 18 19:25:27 2026 -0400"
      },
      "message": "Upgrade rebar3 and erlfmt\n\nAnd also add pins to Windows\u0027 configure file well\n"
    },
    {
      "commit": "05dffb9a62f624dc282eac7b34db6cb9519cbb82",
      "tree": "1f01bb945cb7fc25a257eca1c999ac135b3fccdf",
      "parents": [
        "219ed263b89a814d4a0907adf6582dcbde6eafe6",
        "66703ea4095c2c5d3252704559552e0df87caa0d"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Wed Mar 18 16:57:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 16:57:35 2026 +0100"
      },
      "message": "Merge pull request #5869 from neighbourhoodie/faster-norm-fields\n\nFaster selector execution by pre-parsing fields"
    }
  ],
  "next": "66703ea4095c2c5d3252704559552e0df87caa0d"
}
