@@ -28,6 +28,62 @@ Version 3.2.0
28
28
Features and Enhancements
29
29
-------------------------
30
30
31
+ * :ghissue: `3364 `: CouchDB's replicator now implements a Fair Share replication
32
+ scheduler. Rather than using a round-robin scheduling mechanism, this update allows
33
+ specifying the relative priority of jobs via different ``_replicator `` databases.
34
+ More information is available in the :ref: `_replicator DB docs <replicator >`.
35
+
36
+ .. figure :: ../../images/fair-enough.png
37
+ :align: center
38
+ :alt: Robert Downey, Jr., thinks that's fair enough for him.
39
+
40
+ * :ghissue: `3166 `: Allow custom JWT claims for roles, via the ``[jwt_auth]
41
+ roles_claim_name `` config setting.
42
+
43
+ * :ghissue: `3296 `, :ghissue: `3312 `: CouchDB now includes ``weatherreport `` and its
44
+ dependency ``custodian ``, a diagnostic app forked from Basho's ``riaknostic `` tool.
45
+ More documentation is available in the :ref: `Cluster Troubleshooting
46
+ <cluster/troubleshooting>` section.
47
+
48
+ * :ghissue: `2911 `, :ghissue: `3298 `, :ghissue: `3425 `: CouchDB now returns the version of
49
+ SpiderMonkey to administrators in the ``GET /_node/{node-name}/_versions `` response.
50
+
51
+ * :ghissue: `3303 `: CouchDB now treats a ``408 `` response received by the replicator
52
+ similar to any ``5xx `` error (by retrying, as opposed to a permanent error). CouchDB
53
+ will never return a ``408 ``, but some reverse proxies in front of CouchDB may return
54
+ this code.
55
+
56
+ * :ghissue: `3322 `: ``_session `` now accepts gzip encoding.
57
+
58
+ * :ghissue: `3254 `: The new ``$keyMapMatch `` operator allows Mango to query on the keys
59
+ of a map. It is similar to the ``$elemMatch `` operator, but instead of operating on
60
+ the elements of array, it operates on the keys of a map.
61
+
62
+ * :ghissue: `3336 `: Developers now have access to a ``.devcontainer `` configuration for
63
+ the 3.x version of CouchDB, right in the source code repository.
64
+
65
+ * :ghissue: `3347 `: The default maximum attachment size has been reduced from
66
+ ``infinity `` to 1 GiB.
67
+
68
+ * :ghissue: `3361 `: Compaction process suspension now appears in the ``active_tasks ``
69
+ output, allowing administrators to verify that the ``strict_window `` value is being
70
+ respected.
71
+
72
+ * :ghissue: `3378 `: The ``[admins] `` section and the ``[replicator] password `` are now
73
+ redacted from all logs. In addition, :ghissue: `3380 ` removes user credentials,
74
+ user documents and design documents from logfiles as much as possible. Further,
75
+ :ghissue: `3489 ` no longer logs all of the messages received by a terminated internal
76
+ Erlang process.
77
+
78
+ * :ghissue: `3421 `, :ghissue: `3500 `: CouchDB now supports SpiderMonkey 78 and 86.
79
+
80
+ * :ghissue: `3422 `: CouchDB now supports Erlang/OTP 23 and ``error_logger `` reports
81
+ for Erlang/OTP >= 21.
82
+
83
+ * :ghissue: `3566 `: CouchDB now also supports Erlang/OTP 24.
84
+
85
+ * :ghissue: `3571 `: CouchDB *no longer supports Erlang/OTP 19 *.
86
+
31
87
* :ghissue: `3643 `: Contribute a custom Erlang network protocol to CouchDB,
32
88
users can specify nodes to use TCP or TLS.
33
89
@@ -36,25 +92,161 @@ Features and Enhancements
36
92
:alt: The SSL/TLS handshake enables the TLS client and server to establish
37
93
the secret keys with which they communicate.
38
94
39
- * :ghissue: `3472 `, :ghissue: `3473 `: Migrate some config options from [httpd]
40
- to [chttpd], migrate some from [couch_httpd_auth] to [chttpd_auth], and
41
- commented out in the default.ini.
95
+ * :ghissue: `3472 `, :ghissue: `3473 `, :ghissue: ` 3609 `: Migrate some config options from
96
+ `` [httpd] `` to `` [chttpd] `` , migrate some from `` [couch_httpd_auth] `` to
97
+ `` [chttpd_auth] ``, and comment all out in the `` default.ini `` .
42
98
43
- ** Moved config options from [httpd] to [chttpd]: **
44
- ` allow_jsonp `, `changes_timeout `, `config_whitelist `,
45
- ` enable_cors `, `secure_rewrites `, `x_forwarded_host `,
46
- ` x_forwarded_proto `, `x_forwarded_ssl `,
47
- ` enable_xframe_options `, `max_http_request_size `.
99
+ * Config options moved from `` [httpd] `` to `` [chttpd] ``:
100
+ `` allow_jsonp `` , `` changes_timeout `` , `` config_whitelist ` `,
101
+ `` enable_cors `` , `` secure_rewrites `` , `` x_forwarded_host ` `,
102
+ `` x_forwarded_proto `` , `` x_forwarded_ssl ` `,
103
+ `` enable_xframe_options `` , `` max_http_request_size ` `.
48
104
49
- ** Moved config options from [couch_httpd_auth] to [chttpd_auth]: **
50
- ` authentication_redirect `, `require_valid_user `, `timeout `, `auth_cache_size `,
51
- ` allow_persistent_cookies `, `iterations `, `min_iterations `, `max_iterations `,
52
- ` password_scheme `, `proxy_use_secret `, `public_fields `, `secret `,
53
- ` users_db_public `, `x_auth_roles `, `x_auth_token `, `x_auth_username `,
54
- ` cookie_domain `, `same_site `
105
+ * Config options moved from `` [couch_httpd_auth] `` to `` [chttpd_auth] ``:
106
+ `` authentication_redirect `` , `` require_valid_user `` , `` timeout `` , `` auth_cache_size ` `,
107
+ `` allow_persistent_cookies `` , `` iterations `` , `` min_iterations `` , `` max_iterations ` `,
108
+ `` password_scheme `` , `` proxy_use_secret `` , `` public_fields `` , `` secret ` `,
109
+ `` users_db_public `` , `` x_auth_roles `` , `` x_auth_token `` , `` x_auth_username ` `,
110
+ `` cookie_domain `` , `` same_site ` `
55
111
56
112
* :ghissue: `3586 `: We added a new way of specifying basic auth credentials
57
113
which can include various characters previously not allowed to be included
58
114
in the url info part of endpoint urls.
59
115
60
- * Thank you for reading.
116
+ * :ghissue: `3506 `, :ghissue: `3416 `, :ghissue: `3377 `: CouchDB now provides a Prometheus
117
+ compatible endpoint at ``GET /_node/{node-name}/_prometheus ``. A configuration option
118
+ allows for scraping via a different port (17986) that does not require authentication,
119
+ if desired. More information is available at the :ref: `Prometheus API endpoint
120
+ <api/server/prometheus>` summary.
121
+
122
+ * :ghissue: `3697 `, :issue: `883 ` (JIRA): As an opt-in policy, CouchDB can now stop
123
+ encoding the plus sign ``+ `` in non-query parts of URLs, in compliance with the
124
+ original CouchDB standards. The opt-in is via the ``[chttpd] decode_plus_to_space =
125
+ true `` setting. *In CouchDB 4.x, this is going to be an opt-out policy. *
126
+
127
+ * :ghissue: `3724 `: CouchDB now has new CSP settings for attachments and show/list
128
+ functions. This deprecates the old ``[csp] enable `` and ``[csp] header_value ``
129
+ settings, replacing them with the new ``[csp] utils_enable `` and ``[csp]
130
+ utils_header_value `` settings respectively. In addition, new settings for
131
+ ``attachments_enable ``, ``attachments_header_value ``, ``showlist_enable `` and
132
+ ``showlist_header_value `` now are available. Documentation is in the ``default.ini ``
133
+ file.
134
+
135
+ * :ghissue: `3734 `, :ghissue: `3733 `: Users with databases that have low ``q `` and ``n ``
136
+ values would often receive the ``No DB shards could be opened `` error when the cluster
137
+ is overloaded, due to a hard-coded 100ms timeout. CouchDB now calculates a more
138
+ reasonable timeout, based on the number of shards and the overall maximum fabric
139
+ request timeout limit, using a geometric series.
140
+
141
+ Performance
142
+ -----------
143
+
144
+ * :ghissue: `3337 `: Developer nodes now start faster when using the ``dev/run `` script.
145
+
146
+ * :ghissue: `3366 `: The monolithic ``couch_server `` process has been sharded for
147
+ performance. Previously, as a single ``gen_server ``, the process would
148
+ have a finite throughput that, in busy clusters, is easily breached -- causing a
149
+ sizeable backlog in the message queue, ultimately leading to failure and errors. No
150
+ more! The aggregate message queue info is still available in the ``_system `` output.
151
+ ( :ghissue: `3370 ` )
152
+
153
+ * :ghissue: `3208 `: CouchDB now uses the latest ibrowse 4.4.2 client for the replicator.
154
+
155
+ * :ghissue: `3600 `, :ghissue: `3047 `, :ghissue: `3019 `: The default ``slack `` channel for
156
+ smoosh auto-compaction has been increased to a more reasonable value, reducing load
157
+ on systems that would have normally been idle in CouchDB 2.x (where no auto-compaction
158
+ daemon exists).
159
+
160
+ * :ghissue: `3711 `: Changes feeds may no longer rewind after shard moves, assuming the
161
+ node and range specified by the changes feed nonce can still match an existing node's
162
+ shard.
163
+
164
+ Bugfixes
165
+ --------
166
+
167
+ * Complete retirement of the JavaScript test suite - replaced by Elixir. Hooray!
168
+ * :ghissue: `3165 `: Allow configurability of JWT claims that require a value. Also fixes
169
+ :ghissue: `3232 `. Further, :ghissue: `3392 ` no longer validates claims provided that
170
+ CouchDB does not require.
171
+ * :ghissue: `3160 `, :ghissue: `3161 `: The ``run_queue `` statistic now returns valid
172
+ information even when using Erlang BEAM dirty CPU and IO queues.
173
+ * :ghissue: `3162 `: Makefiles updated to include local configs & clean configs when
174
+ running ``make devclean ``.
175
+ * :ghissue: `3195 `: The ``max_document_size `` parameter now has a clearer explanation in
176
+ ``default.ini ``.
177
+ * :ghissue: `3207 `, :ghissue: `2536 `: Improve the ``INSTALL.Unix.md `` file.
178
+ * :ghissue: `3212 `: Base and extra headers are properly combined when making replicator
179
+ requests that contain duplicate headers.
180
+ * :ghissue: `3201 `: When using a POST with request body to pass parameters to a view-like
181
+ request, the boolean parameters are accepting only JSON strings, but not booleans.
182
+ Now, CouchDB accepts ``true `` and ``false `` for the ``stable `` parameter, in addition
183
+ to ``"true" `` and ``"false" ``.
184
+ comment in
185
+ * :ghissue: `1988 `: Attachment operations ``PUT /db/doc `` and ``POST /db `` now perform
186
+ consistent attachment name validation.
187
+ * :ghissue: `3249 `: Documents with lots of conflicts no longer blow up couchjs if the
188
+ user calls ``_changes `` with a JS filter and with ``style=all_docs ``.
189
+ * :ghissue: `3144 `: Respawning compaction jobs to catch up with intervening changes are
190
+ now handled correctly by the smoosh monitor.
191
+ * :ghissue: `3252 `: CouchDB now exports the ``couch_util:json_decode/2 `` function to
192
+ support maps instead of the default data structure.
193
+ * :ghissue: `3255 `, :ghissue: `2558 `: View files that have incorrect ``db_headers ``
194
+ now reset the index forcing a rebuild.
195
+ * :ghissue: `3271 `: Attachments that are stored uncompressed but later replicated to
196
+ nodes that compress the attachment no longer fail an internal md5 check that would
197
+ break eventual consistency between nodes.
198
+ * :ghissue: `3277 `: ``req_body `` requests that have ``req_body `` set already now
199
+ properly return the field without parsing.
200
+ * :ghissue: `3279 `: Some default headers were missing from some responses in replication,
201
+ including ``X-CouchDB-Body-Time `` and ``X-Couch-Request-ID ``.
202
+ * :ghissue: `3329 `, :ghissue: `2962 `: CouchDB no longer returns broken couchjs processes
203
+ to the internal viewserver process pool.
204
+ * :ghissue: `3340 `, :ghissue: `1943 `: ``PUTs `` of ``multipart/related `` attachments now
205
+ support a ``Transfer-Encoding `` value of ``chunked ``. Hooray!
206
+ * :ghissue: `2858 `, :ghissue: `3359 `: The cluster setup wizard no longer fails when a
207
+ request to ``/ `` is not made before a request to ``finish_cluster ``.
208
+ * :ghissue: `3368 `: Changing the ``max_dbs_open `` configuration setting correctly
209
+ ensures that each new ``couch_server_X `` property receives ``1/num_servers() `` of it.
210
+ * :ghissue: `3373 `: Requests to ``{db}/_changes `` with a custom filter no longer result
211
+ in a fabric request timeout if the request body is not available to additional cluster
212
+ nodes, resulting in a more descriptive exit message and proper JSON object validation
213
+ in the payload.
214
+ * :ghissue: `3409 `: The internal ``chttpd_external:json_req_obj/2 `` function now reads
215
+ the cached ``peer `` before falling back to a socket read operation.
216
+ * :ghissue: `3335 `, :ghissue: `3617 `, :ghissue: `3708 `: The ``COUCHDB_FAUXTON_DOCROOT ``
217
+ environment variable is now introduced to allow its explicit overriding at startup.
218
+ * :ghissue: `3471 `: http clients should no longer receive stacktraces unexpectedly.
219
+ * :ghissue: `3491 `: libicu tests no longer fail on older OS releases such as CentOS 6
220
+ and 7.
221
+ * :ghissue: `3541 `: Usernames and passwords can now contain `@ ` and not break the
222
+ CouchDB replicator.
223
+ * :ghissue: `3545 `: The ``dreyfus_index_manager `` process now supports offheap message
224
+ queues.
225
+ * :ghissue: `3551 `: The replication worker pool now properly cleans up worker processes
226
+ as they are done via the ``worker_trap_exits = false `` setting.
227
+ * :ghissue: `3633 `, :ghissue: `3631 `: All code paths for creating databases now fully
228
+ respect db creation options, including partitioning options.
229
+ * :ghissue: `3424 `, :ghissue: `3362 `: When using ``latest=true `` and an old revision with
230
+ conflicting children as rev is specified, CouchDB no longer returns an ``"error":
231
+ "case_clause" `` response.
232
+ * :ghissue: `3673 `: Non-existent attachments now return a ``404 `` when the attachment
233
+ is missing.
234
+ * :ghissue: `3698 `: The ``dev/run `` development script now allows clusters where ``n >
235
+ 5 ``.
236
+ * :ghissue: `3700 `: The ``maybe_close `` message is now sent to the correct internal
237
+ process.
238
+ * :ghissue: `3183 `: The smoosh operator guide now recommends to use the ``rpc:multicall ``
239
+ function.
240
+ * :ghissue: `3712 `: Including a payload within a ``DELETE `` operation no longer hangs
241
+ the next request made to the same mochiweb acceptor.
242
+ * :ghissue: `3715 `: For clusters with databases where ``n > [cluster] n ``, attachments
243
+ chunks are longer dropped on quorum writes.
244
+ * :ghissue: `3507 `: If a file is truncated underneath CouchDB, CouchDB will now log
245
+ the filename if it finds this situation with a ``file_truncate_error ``.
246
+ * :ghissue: `3739 `: Shards with large purge sequences no longer fail to split in a
247
+ shard splitting job.
248
+
249
+ Other
250
+ -----
251
+
252
+ * Donuts for everyone! Er, not really - thank you for reading the 3.2 release notes.
0 commit comments