This is an automated email from the ASF dual-hosted git repository. wohali pushed a commit to branch 3.2-relnotes in repository https://gitbox.apache.org/repos/asf/couchdb-documentation.git
commit 65b03fd577fc9d9e7b4fe2b1d330775bd5c7c566 Author: Joan Touzet <jo...@atypical.net> AuthorDate: Mon Sep 13 23:54:29 2021 -0400 CouchDB 3.2 release notes - first pass --- images/fair-enough.png | Bin 0 -> 49634 bytes src/conf.py | 4 +- src/whatsnew/3.2.rst | 196 ++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 196 insertions(+), 4 deletions(-) diff --git a/images/fair-enough.png b/images/fair-enough.png new file mode 100755 index 0000000..0894022 Binary files /dev/null and b/images/fair-enough.png differ diff --git a/src/conf.py b/src/conf.py index 3f7996a..73aa6f6 100644 --- a/src/conf.py +++ b/src/conf.py @@ -33,8 +33,8 @@ source_suffix = ".rst" nitpicky = True # should be over-written using rebar-inherited settings -version = "3.1" -release = "3.1.1" +version = "3.2" +release = "3.2.0" project = u"Apache CouchDB\u00ae" diff --git a/src/whatsnew/3.2.rst b/src/whatsnew/3.2.rst index 9d0b421..b44fd6d 100644 --- a/src/whatsnew/3.2.rst +++ b/src/whatsnew/3.2.rst @@ -28,6 +28,62 @@ Version 3.2.0 Features and Enhancements ------------------------- +* :ghissue:`3364`: CouchDB's replicator now implements a Fair Share replication + scheduler. Rather than using a round-robin scheduling mechanism, this update allows to + specify the relative priority of jobs from different ``_replicator`` databases. + More information is available in the :ref:`_replicator DB docs <replicator>`. + +.. figure:: ../../images/fair-enough.png + :align: center + :alt: Robert Downey, Jr., thinks that's fair enough for him. + +* :ghissue:`3166`: Allow custom JWT claims for roles, via the ``[jwt_auth] + roles_claim_name`` config setting. + +* :ghissue:`3296`, :ghissue:`3312`: CouchDB now includes ``weatherreport`` and its + dependency ``custodian``, a diagnostic app forked from Basho's ``riaknostic`` tool. + More documentation is available in the :ref:`Cluster Troubleshooting + <cluster/troubleshooting>` section. + +* :ghissue:`2911`, :ghissue:`3298`, :ghissue:`3425`: CouchDB now returns the version of + SpiderMonkey to administrators in the ``GET /_node/{node-name}/_versions`` response. + +* :ghissue:`3303`: CouchDB now treates a ``408`` response received by the replicator + similar to any ``5xx`` error (by retrying, as opposed to a permanent error). CouchDB + will never return a ``408``, but some reverse proxies in front of CouchDB may return + this code. + +* :ghissue:`3322`: ``_session`` now accepts gzip encoding. + +* :ghissue:`3254`: The new ``$keyMapMatch`` operator allows Mango to query on the keys + of a map. It is similar to the ``$elemMatch`` operator, but instead of operating on + the elements of array, it operates on the keys of a map. + +* :ghissue:`3336`: Developers now have acess to a ``.devcontainer`` configuration for + the 3.x version of CouchDB, right in the source code repository.. + +* :ghissue:`3347`: The default maximum attachment size has been reduced from + ``infinity`` to 1 GiB. + +* :ghissue:`3361`: Compaction process suspension now appears in the ``active_tasks`` + output, allowing administrators to verify that the ``strict_window`` value is being + respected. + +* :ghissue:`3378`: The ``[admins]`` section and the ``[replicator] password`` are now + censored from all logs. In addition, :ghissue:`3380` removes user credentials, + user documents and design documents from logfiles as much as possible. Further, + :ghissue:`3489` no longer logs all of the messages received by a terminated internal + Erlang process. + +* :ghissue:`3421`, :ghissue:`3500`: CouchDB now supports SpiderMonkey 78 and 86. + +* :ghissue:`3422`: CouchDB now supports Erlang/OTP 23 and ``error_logger`` reports + for Erlang/OTP >= 21. + +* :ghissue:`3566`: CouchDB now also supports Erlang/OTP 24. + +* :ghissue:`3571`: CouchDB *no longer supports Erlang/OTP 19*. + * :ghissue:`3643`: Contribute a custom Erlang network protocol to CouchDB, users can specify nodes to use TCP or TLS. @@ -36,8 +92,8 @@ Features and Enhancements :alt: The SSL/TLS handshake enables the TLS client and server to establish the secret keys with which they communicate. -* :ghissue:`3472`, :ghissue:`3473`: Migrate some config options from [httpd] - to [chttpd], migrate some from [couch_httpd_auth] to [chttpd_auth], and +* :ghissue:`3472`, :ghissue:`3473`, :ghissue:`3609`: Migrate some config options from + [httpd] to [chttpd], migrate some from [couch_httpd_auth] to [chttpd_auth], and commented out in the default.ini. **Moved config options from [httpd] to [chttpd]:** @@ -57,4 +113,140 @@ Features and Enhancements which can include various characters previously not allowed to be included in the url info part of endpoint urls. +* :ghissue:`3506`, :ghissue:`3416`, :ghissue:`3377`: CouchDB now provides a Prometheus + compatible endpoint at ``GET /_node/{node-name}/_prometheus``. A configuration option + allows for scraping via a different port (17986) that does not require authentication, + if desired. More information is available at the :ref:`Prometheus API endpoint + <api/server/prometheus>` summary. + +* :ghissue:`3697`, :issue:`883` (JIRA): As an opt-in policy, CouchDB can now stop + encoding the plus sign ``+`` in non-query parts of URLs, in compliance with the + original CouchDB standards. The opt-in is via the ``[chttpd] decode_plus_to_space = + true`` setting. *In CouchDB 4.x, this is an opt-out policy.* + +* :ghissue:`3724`: CouchDB now has new CSP settings for attachments and show/list + functions. This deprecates the old ``[csp] enable`` and ``[csp] header_value`` + settings, replacing them with the new ``[csp] utils_enable`` and ``[csp] + utils_header_value`` settings respectively. In addition, new settings for + ``attachments_enable``, ``attachments_header_value``, ``showlist_enable`` and + ``showlist_header_value`` now are avialable. Documentation is in the ``default.ini`` + file. + +* :ghissue:`3734`, :ghissue:`3733`: Users with databases that have low ``q`` and ``n`` + values would often receive the ``No DB shards could be opened`` error when the cluster + is overloaded, due to a hard-coded 100ms timeout. CouchDB now calculates a more + reasonable timeout, based on the number of shards and the overall maximum fabric + request timeout limit, using a geometric series. + +Performance +----------- + +* :ghissue:`3337`: Developer nodes startup faster now when using the ``dev/run`` script. + +* :ghissue:`3366`: The monolithinc ``couch_server`` process has been sharded for + performance considerations. Previously, as a single ``gen_server``, the process would + have a finite throughput that, in busy clusters, is easily breached -- causing a + sizeable backlog in the message queue, ultimately leading to failure and errors. No + more! The aggregate message queue info is still available in the ``_system`` output. + ( :ghissue:`3370` ) + +* :ghissue:`3208`: CouchDB now uses the latest ibrowse 4.4.2 client for the replicator. + +* :ghissue:`3600`, :ghissue:`3047`, :ghissue:`3019`: The default ``slack`` channel for + smoosh auto-compaction has been increased to a more reasonable value, reducing load + on systems that would have normally been idle in CouchDB 2.x (where no auto-compaction + daemon exists). + +* :ghissue:`3711`: Changes feeds may no longer rewind after shard moves, assumimg the + node and range specified by the changes feed nonce can still match an existing node's + shard. + +Bugfixes +-------- + +* Complete retirement of the JavaScript test suite - replaced by Elixir. Hooray! +* :ghissue:`3165`: Allow configurability of JWT claims that require a value. Also fixes + :ghissue:`3232`. Further, :ghissue:`3392` no longer validates claims provided that + CouchDB does not require. +* :ghissue:`3160`, :ghissue:`3161`: The ``run_queue`` statistic now returns valid + information even when using Erlang BEAM dirty CPU and IO queues. +* :ghissue:`3162`: Makefiles updated to include local configs & clean configs when + running ``make devclean``. +* :ghissue:`3195`: The ``max_document_size`` parameter now has a clearer explanation in + ``default.ini``. +* :ghissue:`3207`, :ghissue:`2536`: Improve the ``INSTALL.Unix.md`` file. +* :ghissue:`3212`: Base and extra headers are properly combined when making replicator + requests that contain duplicate headers. +* :ghissue:`3201`: When using a POST with request body to pass parameters to a view-like + request, the boolean parameters are accepting only JSON strings, but not booleans. + Now, CouchDB accepts ``true`` and ``false`` for the ``stable`` parameter, in addition + to ``"true"`` and ``"false"``. + comment in +* :ghissue:`1988`: Attachment operations ``PUT /db/doc`` and ``POST /db`` now perform + consistent attachment name validation. +* :ghissue:`3249`: Documents with lots of conflicts no longer blow up couchjs if the + user calls ``_changes`` with a JS filter and with ``style=all_docs``. +* :ghissue:`3144`: Respawning compaction jobs to catch up with intervening changes are + now handled correctly by the smoosh monitor. +* :ghissue:`3252`: CouchDB now exports the ``couch_util:json_decode/2`` function to + support maps instead of the default data structure. +* :ghissue:`3255`, :ghissue:`2558`: View files that have incorrect ``db_headers`` + now reset the index forcing a rebuild. +* :ghissue:`3271`: Attachments that are stored uncompressed but later replicated to + nodes that compress the attachment no longer fail an internal md5 check that would + break eventual consistency between nodes. +* :ghissue:`3277`: ``req_body`` requests that have ``req_body`` set already now + properly return the field without parsing. +* :ghissue:`3279`: Some default headers were missing from some responses in replication, + including ``X-CouchDB-Body-Time`` and ``X-Couch-Request-ID``. +* :ghissue:`3329`, :ghissue:`2962`: CouchDB no longer returns broken couchjs processes + to the internal viewserver process pool. +* :ghissue:`3340`, :ghissue:`1943`: ``PUTs`` of ``multipart/related`` attachments now + support a ``Transfer-Encoding`` value of ``chunked``. Hooray! +* :ghissue:`2858`, :ghissue:`3359`: The cluster setup wizard no longer fails when a + request to ``/`` is not made before a request to ``finish_cluster``. +* :ghissue:`3368`: Changing the ``max_dbs_open`` configuration setting correctly + ensures that each new ``couch_server_X`` property receives ``1/num_servers()`` of it. +* :ghissue:`3373`: Requests to ``{db}/_changes`` with a custom filter no longer result + in a fabric request timeout if the request body is not available to additional cluster + nodes, resulting in a more descriptive exit message and proper JSON object validation + in the payload. +* :ghissue:`3409`: The internal ``chttpd_external:json_req_obj/2`` function now reads + the cached ``peer`` before falling back to a socket read operation. +* :ghissue:`3335`, :ghissue:`3617`, :ghissue:`3708`: The ``COUCHDB_FAUXTON_DOCROOT`` + environment variable is now introduced to allow its explicit overriding at startup. +* :ghissue:`3471`: http clients should no longer receive stacktraces unexpectedly. +* :ghissue:`3491`: libicu tests no longer fail on older OS releases such as CentOS 6 + and 7. +* :ghissue:`3541`: Usernames and passwords can now contain `@` and not break the + CouchDB replicator. +* :ghissue:`3545`: The ``dreyfus_index_manager`` process now supports offheap message + queues. +* :ghissue:`3551`: The replication worker pool now properly cleans up worker processes + as they are done via the ``worker_trap_exits = false`` setting. +* :ghissue:`3633`, :ghissue:`3631`: All code paths for creating databases now fully + respect db creation options, including partitioning options. +* :ghissue:`3424`, :ghissue:`3362`: When using ``latest=true`` and an old revision with + conflicting children as rev is specified, CouchDB no longer returns an ``"error": + "case_clause"`` response. +* :ghissue:`3673`: Non-existent attachments now return a ``404`` when the attachment + is missing. +* :ghissue:`3698`: The ``dev/run`` development script now allows clusters where ``n > + 5``. +* :ghissue:`3700`: The ``maybe_close`` message is now sent to the correct internal + process. +* :ghissue:`3183`: The smoosh operator guide now recommends to use the ``rpc:multicall`` + function. +* :ghissue:`3712`: Including a payload within a ``DELETE`` operation no longer hangs + the next request made to the same mochiweb acceptor. +* :ghissue:`3715`: For clusters with databases where ``n > [cluster] n``, attachments + chunks are longer dropped on quorum writes. +* :ghissue:`3507`: If a file is truncated underneath CouchDB, CouchDB will now log + if it finds this situation with a ``file_truncate_error``. +* :ghissue:`3739`: Shards with large purge sequences no longer fail to split in a + shard splitting job. + +Other +----- + * Thank you for reading.