1.3. 3.2.x Branch¶
1.3.1. Version 3.2.3¶
1.3.1.1. Features and Enhancements¶
#4529: In Javascript process manager, use a database tag in addition to a ddoc ID to quickly find processes. This should improve performance.
Fix for CVE-2023-26268.
1.3.2. Version 3.2.2¶
1.3.2.1. Bugfixes¶
Fix for CVE-2022-24706. This is a security release for a critical vulnerability.
#3963: Optimize compaction and doc updates for conflicted documents on Erlang versions higher than 21.
#3852: Add support for SpiderMonkey 91esr.
1.3.3. Version 3.2.1¶
1.3.3.1. Features and Enhancements¶
#3746:
couch_icu_drivercollation driver has been removed. ICU collation functionality is consolidated in the singlecouch_ejson_comparemodule. View performance might slightly increase as there are less corner cases when the C collation driver fails and falls back to Erlang.#3787: Update sequences generated from DB info and
_changes?since=now&limit=0now contain shard uuids as part of their internal, opaque, representation. As a result, there should be less chance of experiencing changes feed rewinds with these sequences.#3798: ICU driver and collator algorithm versions are returned in the
_node/{node-name}/_versionsresult.#3801: Users with the
_metricsrole can now read_prometheusmetrics.
1.3.3.2. Bugfixes¶
#3780: Avoid changes feed rewinds after shard moves.
#3779, #3785: Prevent deleted view file cleanup from crashing when database is deleted while the cleanup process is running.
#3789: Fix
badarith500 errors when[fabric] request_timeoutis set toinfinity.#3786: Fix off-by-one
limiterror for_all_dbs. Also, the auto-injected shard_dbsdesign doc is removed and replaced with an Erlang module.#3788: Minimize changes feeds rewinds when a node is down.
#3807: Enable
custodianapplication reporting. Previously,custodianwas accidentally left disabled as it used a hard-coded shards db name different than_dbs.#3805: Cluster setup correctly syncs admin passwords and uses the new (since 3.2.0)
[chttpd_auth]config section instead of the previous[couch_httpd_auth]section.#3810: Local development
dev/runscript now uses the[chttpd_auth]section inlocal.iniinstead of[couch_httpd_auth].#3773: Fix reduce view collation results for unicode equivalent keys.
1.3.4. Version 3.2.0¶
1.3.4.1. Features and Enhancements¶
#3364: CouchDB’s replicator now implements a Fair Share replication scheduler. Rather than using a round-robin scheduling mechanism, this update allows specifying the relative priority of jobs via different
_replicatordatabases. More information is available in the _replicator DB docs.
#3166: Allow custom JWT claims for roles, via the
[jwt_auth] roles_claim_nameconfig setting.#3296, #3312: CouchDB now includes
weatherreportand its dependencycustodian, a diagnostic app forked from Basho’sriaknostictool. More documentation is available in the Cluster Troubleshooting section.#2911, #3298, #3425: CouchDB now returns the version of SpiderMonkey to administrators in the
GET /_node/{node-name}/_versionsresponse.#3303: CouchDB now treats a
408response received by the replicator similar to any5xxerror (by retrying, as opposed to a permanent error). CouchDB will never return a408, but some reverse proxies in front of CouchDB may return this code.#3322:
_sessionnow accepts gzip encoding.#3254: The new
$keyMapMatchoperator allows Mango to query on the keys of a map. It is similar to the$elemMatchoperator, but instead of operating on the elements of array, it operates on the keys of a map.#3336: Developers now have access to a
.devcontainerconfiguration for the 3.x version of CouchDB, right in the source code repository.#3347: The default maximum attachment size has been reduced from
infinityto 1 GiB.#3361: Compaction process suspension now appears in the
active_tasksoutput, allowing administrators to verify that thestrict_windowvalue is being respected.#3378: The
[admins]section and the[replicator] passwordare now redacted from all logs. In addition, #3380 removes user credentials, user documents and design documents from logfiles as much as possible. Further, #3489 no longer logs all of the messages received by a terminated internal Erlang process.#3422: CouchDB now supports Erlang/OTP 23 and
error_loggerreports for Erlang/OTP >= 21.#3566: CouchDB now also supports Erlang/OTP 24.
#3571: CouchDB no longer supports Erlang/OTP 19.
#3643: Contribute a custom Erlang network protocol to CouchDB, users can specify nodes to use TCP or TLS.
#3472, #3473, #3609: Migrate some config options from
[httpd]to[chttpd], migrate some from[couch_httpd_auth]to[chttpd_auth], and comment all out in thedefault.ini.Config options moved from
[httpd]to[chttpd]:allow_jsonp,changes_timeout,config_whitelist,enable_cors,secure_rewrites,x_forwarded_host,x_forwarded_proto,x_forwarded_ssl,enable_xframe_options,max_http_request_size.Config options moved from
[couch_httpd_auth]to[chttpd_auth]:authentication_redirect,timeout,auth_cache_size,allow_persistent_cookies,iterations,min_iterations,max_iterations,password_scheme,proxy_use_secret,public_fields,secret,users_db_public,x_auth_roles,x_auth_token,x_auth_username,cookie_domain,same_site
#3586: We added a new way of specifying basic auth credentials which can include various characters previously not allowed to be included in the url info part of endpoint urls.
#3483: We added a way of specifying requirements for new user passwords using a list of regular expressions.
#3506, #3416, #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 Prometheus API endpoint summary.#3697, COUCHDB-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 = truesetting. In CouchDB 4.x, this is going to be an opt-out policy.#3724: CouchDB now has new CSP settings for attachments and show/list functions. This deprecates the old
[csp] enableand[csp] header_valuesettings, replacing them with the new[csp] utils_enableand[csp] utils_header_valuesettings respectively. In addition, new settings forattachments_enable,attachments_header_value,showlist_enableandshowlist_header_valuenow are available. Documentation is in thedefault.inifile.#3734, #3733: Users with databases that have low
qandnvalues would often receive theNo DB shards could be openederror 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.
1.3.4.2. Performance¶
#3337: Developer nodes now start faster when using the
dev/runscript.#3366: The monolithic
couch_serverprocess has been sharded for performance. Previously, as a singlegen_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_systemoutput. ( #3370 )#3208: CouchDB now uses the latest ibrowse 4.4.2 client for the replicator.
#3600, #3047, #3019: The default
slackchannel 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).#3711: Changes feeds may no longer rewind after shard moves, assuming the node and range specified by the changes feed nonce can still match an existing node’s shard.
1.3.4.3. Bugfixes¶
Complete retirement of the JavaScript test suite - replaced by Elixir. Hooray!
#3165: Allow configurability of JWT claims that require a value. Also fixes #3232. Further, #3392 no longer validates claims provided that CouchDB does not require.
#3160, #3161: The
run_queuestatistic now returns valid information even when using Erlang BEAM dirty CPU and IO queues.#3162: Makefiles updated to include local configs & clean configs when running
make devclean.#3195: The
max_document_sizeparameter now has a clearer explanation indefault.ini.#3212: Base and extra headers are properly combined when making replicator requests that contain duplicate headers.
#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
trueandfalsefor thestableparameter, in addition to"true"and"false". comment in#1988: Attachment operations
PUT /db/docandPOST /dbnow perform consistent attachment name validation.#3249: Documents with lots of conflicts no longer blow up couchjs if the user calls
_changeswith a JS filter and withstyle=all_docs.#3144: Respawning compaction jobs to catch up with intervening changes are now handled correctly by the smoosh monitor.
#3252: CouchDB now exports the
couch_util:json_decode/2function to support maps instead of the default data structure.#3255, #2558: View files that have incorrect
db_headersnow reset the index forcing a rebuild.#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.
#3277:
req_bodyrequests that havereq_bodyset already now properly return the field without parsing.#3279: Some default headers were missing from some responses in replication, including
X-CouchDB-Body-TimeandX-Couch-Request-ID.#3329, #2962: CouchDB no longer returns broken couchjs processes to the internal viewserver process pool.
#3340, #1943:
PUTsofmultipart/relatedattachments now support aTransfer-Encodingvalue ofchunked. Hooray!#2858, #3359: The cluster setup wizard no longer fails when a request to
/is not made before a request tofinish_cluster.#3368: Changing the
max_dbs_openconfiguration setting correctly ensures that each newcouch_server_Xproperty receives1/num_servers()of it.#3373: Requests to
{db}/_changeswith 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.#3409: The internal
chttpd_external:json_req_obj/2function now reads the cachedpeerbefore falling back to a socket read operation.#3335, #3617, #3708: The
COUCHDB_FAUXTON_DOCROOTenvironment variable is now introduced to allow its explicit overriding at startup.#3471: http clients should no longer receive stacktraces unexpectedly.
#3491: libicu tests no longer fail on older OS releases such as CentOS 6 and 7.
#3541: Usernames and passwords can now contain @ and not break the CouchDB replicator.
#3545: The
dreyfus_index_managerprocess now supports offheap message queues.#3551: The replication worker pool now properly cleans up worker processes as they are done via the
worker_trap_exits = falsesetting.#3633, #3631: All code paths for creating databases now fully respect db creation options, including partitioning options.
#3424, #3362: When using
latest=trueand an old revision with conflicting children as rev is specified, CouchDB no longer returns an"error": "case_clause"response.#3673: Non-existent attachments now return a
404when the attachment is missing.#3698: The
dev/rundevelopment script now allows clusters wheren > 5.#3700: The
maybe_closemessage is now sent to the correct internal process.#3183: The smoosh operator guide now recommends to use the
rpc:multicallfunction.#3712: Including a payload within a
DELETEoperation no longer hangs the next request made to the same mochiweb acceptor.#3715: For clusters with databases where
n > [cluster] n, attachments chunks are longer dropped on quorum writes.#3507: If a file is truncated underneath CouchDB, CouchDB will now log the filename if it finds this situation with a
file_truncate_error.#3739: Shards with large purge sequences no longer fail to split in a shard splitting job.
#3754: Always return views meta info when
limit=0andsorted=true.#3757: Properly sort
descending=trueview results with akeyslist.#3763: Stabilize view row sorting order when they are merged by the coordinator.
1.3.4.4. Other¶
Donuts for everyone! Er, not really - thank you for reading the 3.2 release notes.