This is an automated email from the ASF dual-hosted git repository. vatamane pushed a commit to branch merge-3.4.3 in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit c3933340b8c41a6b2da661611d51bc33a4e25008 Author: Jan Lehnardt <[email protected]> AuthorDate: Thu Feb 27 16:46:58 2025 +0100 feat(doc): 3.5.0 release notes --- src/docs/src/whatsnew/3.5.rst | 172 ++++++++++++++++++++++++++++++++++++++++ src/docs/src/whatsnew/index.rst | 1 + version.mk | 2 +- 3 files changed, 174 insertions(+), 1 deletion(-) diff --git a/src/docs/src/whatsnew/3.5.rst b/src/docs/src/whatsnew/3.5.rst new file mode 100644 index 000000000..95bfa2df1 --- /dev/null +++ b/src/docs/src/whatsnew/3.5.rst @@ -0,0 +1,172 @@ +.. Licensed under the Apache License, Version 2.0 (the "License"); you may not +.. use this file except in compliance with the License. You may obtain a copy of +.. the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +.. License for the specific language governing permissions and limitations under +.. the License. + +.. _release/3.5.x: + +============ +3.5.x Branch +============ + +.. contents:: + :depth: 1 + :local: + +.. _release/3.5.0: + +Version 3.5.0 +============= + +Highlights +---------- + +* :ghissue:`5399`, :ghissue:`5441`, :ghissue:`5443`: Implement parallel + ``pread`` calls: lets clients issue concurrent ``pread`` calls without blocking + each other or having to wait for all writes and ``fsync`` calls. This is + enabled by default and can be disabled with ``[couchdb] use_cfile = false`` in + the configuration. + + CouchDB already employs a multiple-parallel-read and concurrent serial-write + design at the database engine layer, but below that in the storage engine, + each file representing a database shard is required to route all read / write + / sync requests through a single Erlang process that owns the file descriptor + (fd). + + An Erlang process can at most execute at the speed of a single CPU core. Two + scenarios can lead to a starvation of the fd-owning Erlang process message + inbox: + + - 1000s concurrent read requests with a constant stream of writes per shard, + or: + - a high latency storage devices like network block storage. + + Parallel preads re-implements the Erlang ``file`` module in parts as + ``couch_cfile`` to allow multiple ``dup()``’d file descriptors to be used for + reading and writing. Writes continue to be serialised at the database engine + layer, but reads now are no longer blocked by writes waiting to commit. + + Comes with an extensive test suite that includes property testing to ensure + ``couch_cfile`` behaves exactly like Erlang’s ``file`` in all other cases. + + Performance is always equal or better than before. These scenarios show + preliminary improvements: + + - random document reads: 15% more throughput + - read ``_all_docs``: 15% more throughput + - read ``_all_docs`` with ``include_docs=true``: 25% more throughput + - read ``_changes``: 4% more throughput + - single document writes: 8% more throughput + - 2000x concurrent clients, random document reads on a 12 node cluster: 30% more + throughput + - concurrent constant document writes and concurrent single document reads on + a single shard: 40% more throughput. + + This feature is not available on Windows. + +* :ghissue:`5435`: Improve default ``chttpd_server`` options. This helps with + faster processing of many concurrent TCP connections. + +* :ghissue:`5347`: Fix attachment size calculation. This could lead to shards + not being scheduled for compaction correctly. + +Performance +----------- + +* :ghissue:`5417`: Fix ``atts_since`` functionality for document ``GET`` + requests. + Avoids re-replicating attachment bodies on doc updates. +* :ghissue:`5389`: Save 1 ``write`` for each committing data to disk by using + ``fdatasync`` while keeping the same level of storage reliability. + +Features +-------- + +* :ghissue:`5429`: Nouveau: upgrade ``dropwizard`` to 4.0.12. +* :ghissue:`5429`: Add ``simple+pbkdf2`` migration password scheme. +* :ghissue:`5424`: Scanner: reduce log noise, fix QuickJS plugin mocks, + gracefully handle broken search indexes. +* :ghissue:`5421`: Nouveau: upgrade Lucene to 9.12.1. +* :ghissue:`5414`: Remove unused ``multi_workers`` option from + ``couch_work_queue``. +* :ghissue:`5402`: Remove unused, undocumented and detrimental idle check + timeout feature. +* :ghissue:`5359`: Remove unused, undocumented and unreliabele ``pread_limit`` + feature from ``couch_file``. +* :ghissue:`5385`: Clean up ``fabric_doc_update`` by introducing an ``#acc`` + record. +* :ghissue:`5372`: Upgrade to Elixir 1.17. +* :ghissue:`5338`: Clouseau: show version in ``/_version`` endpoint. +* :ghissue:`5338`: Scanner: add Nouveau and Clouseau design doc validation. +* :ghissue:`5335`: Nouveau: support reading older Lucene 9x indexes. +* :ghissue:`5327`, :ghissue:`5329`, :ghissue:`5419`: Allow switching JavaScript + engines at runtime. +* :ghissue:`5326`, :ghissue:`5328`: Allow clients to specify HTTP request ID, + including UUIDs. +* :ghissue:`5321`, :ghissue:`5366`, :ghissue:`5413`: Add support for + SpiderMonkey versions 102, 115 and 128. +* :ghissue:`5317`: Add `quickjs` to the list of welcome features. + +Bugfixes +-------- + +* :ghissue:`5447`: Fix arithmetic mean in ``_prometheus``. +* :ghissue:`5440`: Fix ``_purged_infos`` when exceeding ``purged_infos_limit``. +* :ghissue:`5431`: Restore the ability to return ``Error`` objects from `map()`. +* :ghissue:`5417`: Clouseau: add a version check to ``connected()`` function to + reliably detect if a Clouseau node is ready to be used. +* :ghissue:`5416`: Ensure we always map the documents in order in + ``couch_mrview_updater``. While views still built correctly, this behaviour + simplifies debugging. +* :ghissue:`5373`: Fix checksumming in ``couch_file``, consolidate similar + functions and bring test coverage from 66% to 90%. +* :ghissue:`5367`: Scanner: be more resilient in the face of non-deterministic + functions. +* :ghissue:`5345`: Scanner: be more resilient in the face of incomplete sample + data. +* :ghissue:`5344`: Scanner: allow empty doc fields. +* :ghissue:`5341`: Improve Mango test reliability. +* :ghissue:`5337`: Prevent a broken ``mem3`` app from permanently failing + replication. +* :ghissue:`5334`: Fix QuickJS scanner ``function_clause`` error. +* :ghissue:`5332`: Skip deleted documents in the scanner. +* :ghissue:`5331`: Skip validation for design docs in the scanner. +* :ghissue:`5330`: Prevent inserting illegal design docs via Mango. + +Docs +---- + +* :ghissue:`5433`: Mango: document Nouveau index type. +* :ghissue:`5433`: Nouveau: document Mango index type. +* :ghissue:`5428`: Fix wrong link in example in ``CONTRIBUTING.md``. +* :ghissue:`5400`: Clarify RHEL9 installation caveats. +* :ghissue:`5380`, :ghissue:`5404`: Fix various typos. +* :ghissue:`5338`: Clouseau: document version in ``/_version`` endpoint. +* :ghissue:`5340`, :ghissue:`5412`: Nouveau: document search cleanup API. +* :ghissue:`5316`, :ghissue:`5325`, :ghissue:`5426`, :ghissue:`5442`, + :ghissue:`5445`: Document various JavaScript engine incompatibilities, + including SpiderMonkey 1.8.5 vs. newer SpiderMonkey and SpiderMonkey vs. + QuickJS. +* :ghissue:`5320`, :ghissue:`5374`: Improve auto-lockout feature documentation. +* :ghissue:`5323`: Nouveau: improve install instructions. + +Tests +_____ + +* :ghissue:`5397`: Fix negative-steps error in Elixir tests. + +Builds +------ +* :ghissue:`5360`: Use ``brew --prefix`` to find ICU paths on macOS. + +Other +----- + +TODO Insert Closing diff --git a/src/docs/src/whatsnew/index.rst b/src/docs/src/whatsnew/index.rst index 2d0649dc5..bb4f58095 100644 --- a/src/docs/src/whatsnew/index.rst +++ b/src/docs/src/whatsnew/index.rst @@ -20,6 +20,7 @@ Release Notes :glob: :maxdepth: 2 + 3.5 3.4 3.3 3.2 diff --git a/version.mk b/version.mk index 067e9be31..196e48e10 100644 --- a/version.mk +++ b/version.mk @@ -1,3 +1,3 @@ vsn_major=3 -vsn_minor=4 +vsn_minor=5 vsn_patch=3
