You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2025/03/07 10:14:29 UTC
(couchdb) 01/03: feat(doc): 3.5.0 release notes
This is an automated email from the ASF dual-hosted git repository.
jan pushed a commit to branch docs/release-notes-3.5.0
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 94c70ac5d081644ca183bce0bee7de42546cb4a8
Author: Jan Lehnardt <ja...@apache.org>
AuthorDate: Thu Feb 27 16:46:58 2025 +0100
feat(doc): 3.5.0 release notes
---
src/docs/src/whatsnew/3.4.rst | 8 +-
src/docs/src/whatsnew/3.5.rst | 172 ++++++++++++++++++++++++++++++++++++++++
src/docs/src/whatsnew/index.rst | 1 +
version.mk | 4 +-
4 files changed, 179 insertions(+), 6 deletions(-)
diff --git a/src/docs/src/whatsnew/3.4.rst b/src/docs/src/whatsnew/3.4.rst
index 287a65976..14c5ff305 100644
--- a/src/docs/src/whatsnew/3.4.rst
+++ b/src/docs/src/whatsnew/3.4.rst
@@ -51,8 +51,8 @@ Features
* :ghissue:`5294`: Return time spent waiting to update Nouveau index
before query starts.
-Bufixes
--------
+Bugfixes
+--------
* :ghissue:`5274`: Use normal Lucene syntax for unbounded ranges in
Nouveau.
* :ghissue:`5270`: Do not generate conflicts from the replicator
@@ -85,8 +85,8 @@ Highlights
* :ghissue:`5255`: Set ``upgrade_hash_on_auth`` to ``false`` to disable
automatic password hashing upgrades.
-Bufixes
--------
+Bugfixes
+--------
* :ghissue:`5254`: Handle the case when the QuickJS scanner has no
valid views.
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 650ac4c41..2a199c9ff 100644
--- a/version.mk
+++ b/version.mk
@@ -1,3 +1,3 @@
vsn_major=3
-vsn_minor=4
-vsn_patch=2
+vsn_minor=5
+vsn_patch=0