Skip to content
This repository was archived by the owner on Oct 17, 2022. It is now read-only.

Commit 1223083

Browse files
wohalinickva
authored andcommitted
CouchDB 3.2 release notes
1 parent 9a2b735 commit 1223083

File tree

3 files changed

+209
-17
lines changed

3 files changed

+209
-17
lines changed

images/fair-enough.png

48.5 KB
Loading

src/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
nitpicky = True
3434

3535
# should be over-written using rebar-inherited settings
36-
version = "3.1"
37-
release = "3.1.1"
36+
version = "3.2"
37+
release = "3.2.0"
3838

3939
project = u"Apache CouchDB\u00ae"
4040

src/whatsnew/3.2.rst

Lines changed: 207 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,62 @@ Version 3.2.0
2828
Features and Enhancements
2929
-------------------------
3030

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+
3187
* :ghissue:`3643`: Contribute a custom Erlang network protocol to CouchDB,
3288
users can specify nodes to use TCP or TLS.
3389

@@ -36,25 +92,161 @@ Features and Enhancements
3692
:alt: The SSL/TLS handshake enables the TLS client and server to establish
3793
the secret keys with which they communicate.
3894

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``.
4298

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``.
48104

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``
55111

56112
* :ghissue:`3586`: We added a new way of specifying basic auth credentials
57113
which can include various characters previously not allowed to be included
58114
in the url info part of endpoint urls.
59115

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

Comments
 (0)