1.3. 3.3.x Branch
1.3.1. Version 3.3.3
1.3.1.1. Features and Enhancements
#4623: Handle replicator instance start time during upgrades better.
#4653: Fix the ability to use
;in config values.#4626: Fix purge infos replicating to the wrong shards during shard splitting.
#4669: Make it possible to override
[replicator] valid_socket_optionswith more than two items.#4670: Allow setting of some ibrowse replication options such as
{prefer_ipv6, true}.#4679: Fix multipart parser “attachment longer than expected” error. Previously there was a small chance attachments were not replicated.
#4680: Allow restarting failed shard splitting jobs.
#4722: Fix badmatch error when purge requests time out.
#4736: Stop client process and clean up if client disconnects when processing streaming requests.
#4758: Remove sensitive headers from the mochiweb request in process dictionary. This should prevent sensitive headers leaking into logs when a request process crashes.
#4784: Extract the correct node name from
ERL_FLAGSinremsh.#4794: Fix incorrect raising of
database_does_not_existerror.#4821: Wait for compacted indexes to flip. Previously, a timeout during compact file flips could lead to crashes and a subsequent recompaction.
#4837: Fix update bug in ets_lru.
#4847: Require auth for
_replicateendpoint.#4878: Add an option to scrub some sensitive headers from external json requests.
1.3.2. Version 3.3.2
1.3.2.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.
#4473: Avoid re-compiling filter view functions. This could speed up Javascript filter functions.
#4412: Remove Javascript json2 script and the try/except clause around seal.
#4513: Allow configurable timeouts for
_viewand_search. Search timeouts can be specified as[fabric] search_timeoutand[fabric] search_permsg. View per-message timeout can be configured as[fabric] view_permsg_timeout.#4438: Proxy auth can now use one of the configured hash algorithms from chttpd_auth/hash_algorithms to decode authentication tokens.
#4370: Ensure design docs are uploaded individually when replicating with
_bulk_get. This restores previous behavior before version 3.3.0.#4416: Allow
_localdoc writes to the replicator dbs. Previously this issue prevented replicating the replicator db itself, since checkpointing was not working properly.#4363: Fix replication
_scheduler/docs"total_rows"value.#4380: Be more defensive about SpiderMonkey location. An error should be emitted early if the Spidermonkey library cannot be found.
#4388: Bump recon to 2.5.3. See the changelog for more details.
#4476, #4515, #4490, #4350, #4379: Various documentation cleanups and fixes.
Fix for CVE-2023-26268.
1.3.3. Version 3.3.1
1.3.3.1. Features and Enhancements
#4343, #4344, #4345: Fix
undefwhen parsing replication doc body with auser_ctx.#4346: Add
maketarget to findundeferrors.#4347: Remove failed
couch_pluginsexperiment, fixes moreundeferrors.#4348: Fix
undeferror inweatherreport.#4353: Allow starting of more than one replication job. (D’OH!)
1.3.4. Version 3.3.0
1.3.4.1. Highlights
#4308: Replicator was optimized and should be faster. It now uses the _bulk_get endpoint on the source, and can statistically skip calling _revs_diff on the target. Benchmark tests replicating 1M documents, 10KB each, from UK to US East show a 3x speed improvement.
1.3.4.2. Features and Enhancements
#3766, #3970, #3972, #4093, #4102, #4104, #4110, #4111, #4114, #4245, #4246:, #4266: Add
smooshqueue persistence. This allows resumingsmooshoperations after a node restart. This is disabled by default and can be enabled with[smoosh] persist = true. Optimisesmooshoperations and increase test coverage to 90%.#3798: Add
libicuversion and collation algorithm version to/_node/{node-name}/_versions.#3837: The Erlang source tree is now auto-formatted with
erlfmt.#3845: Clean up the
couch_ejson_compareC-module and squash Microsoft compiler warnings.#3832: Add
GETvariant to_dbs_infoendpoint, used to bePOSTonly.#3864: Improve
erlang_lsconfiguration.#3853: Remove legacy
ddoc_cache_openergen_serverand speed up event routing.#3879: Remove use of
ERL_OPTSenvironment variable. All supported Erlang versions now useERL_COMPILER_OPTIONSfor the same purpose.#3883: Add support for SpiderMonkey 91.
#3889: Track
libicucollator versions in the view header.#3952: Make the timeout for receiving requests from attachment writers configurable.
#3927: Include index signature in
_search_info.#3963: Optimtize key tree stemming by using maps instead of sets. This greatly reduced memory usage for heavily conflicted docs in some situations.
#3974: Create new config options in
[couchdb]and[smoosh]sections to enable finer control of compaction logging levels.#3983, #3984, #3985, #3987, #4033: Add various functions to
couch_debugmodule.#4000: Ensure
Object.prototype.toSource()is always available.#4018: Update
jiffyto 1.1.1 andb64urlto 1.0.3.#4021: Reduce smoosh compaction log level to
debug.#4041: Allow and evaluate nested json claim roles in JWT token.
#4064: Enable replicating purge requests between nodes. Also avoid applying interactive purges more than once.
#4069, #4084: Drop support for Erlang < 23, update
vm.argssettings to match. Review this if you have customized yourvm.args.#4083: Support Elixir 13.
#4085: Add an option to let
custodianalways use[cluster] nvalue.#4095: Implement
winning_revs_onlyoption for the replicator. It replicates only the winning revisions from the source to the target, effectively discarding conflicts.#4135: Separate search IO from file IO.
#4140, #4162: Upgrade hash algorithm for cookie auth (sha1 -> sha256). This introduces a new config setting
hash_algorithms. New cookie values are hashed with sha256, sha1 hashes are still accepted. Admins can set this to sha256 only. Sha1 will be disallowed in the next major release. Show supported hash algorithms in/_node/{node-name}/_versionsendpoint.#4179: Don’t double-encode changes sequence strings in the replicator.
#4182: Explicitly maintain a fully connected cluster. Previously, it was possible for the nodes to disconnect, and for that state to persist until the nodes restarted.
#4198: Redact passwords in log file.
#4243: Update
mochiwebto 3.1.1.#4254: The
_dbs_infoaccess control is now configured with the[couchdb] admin_only_all_dbssetting. Defaults to true. This was a leftover from the 3.0.0 release.#4264:
activedatabase sizes is now limited to leaf nodes. Previously, it included intermediate tree nodes, which had the effect that deleting (large) documents did not decreaseactivedatabase size. In addition,smooshnow picks up databases where large documents are deleted for compaction more eagerly, reclaiming the deleted space quicker.#4270: Shard splitting now uses its own
reshardIO priority. It can be configured to be safely run in the background with production loads, or with maximum IO available, if admins prefer quicker progress.#4274: Improve validation of replicator job parameters & move
_replicatorVDU design doc to internal BDU.#4280: Add
CFLAGSandLDFLAGSto ICU build parameters.#4284: Remove all usage of global to avoid potential deadlocks in replication jobs.
#4287: Allow
=in config key names.#4306: Fauxton was updated to version v1.2.9. Changes since v1.2.8 can be found here
#4317: Write “Relax” welcome message to standard out on Windows.
1.3.4.3. Performance
#3860: Add sharding to
couch_index_server, similar to #3366, avoids processing bottlenecks on servers with a lot of concurrent view indexing going on.#3891: Avoid decoding JWT payloads when not necessary.
#4031: Default
[rexi] use_kill_alltotrue. This improves intra-cluster-node messaging. Set to false if you run a cluster with nodes that have a version <3.0.0.#4052: Optimise
couch_util:reorder_results/2,3, which speeds up_bulk_docsand_revs_diff.#4055: Avoid using
length/1guard for>0or==0tests incouch_key_tree.#4056: Optimise
couch_key_tree:find_missing/2. This speeds up_revs_diff.#4059: Reduce complexity of
possible_ancestorsfrom quadratic to linear. This speeds up working with heavily conflicted documents significantly.#4091: Optimise
couch_util:to_hex/1, this speeds up all operations that need to encode a revision id into JSON (this is most operations).#4106: Set
io_priorityin all IO paths. Introducessystemio_priority.#4144, #4172: Implement
_bulk_getsupport for the replicator. Backward compatibility is ensured. This speeds up all replications. Add option to disable new behaviour for legacy setups.#4163: Statistically skip
_revs_diffin the replicator. This improves performance for replications into empty targets.#4177: Remove the long deprecated
bigcouch 0.4change sequence support.#4238: Optimise
_bulk_getendpoint. This speeds up replication of 1M docs by ~2x. Individual_bulk_getrequests are up to 8x faster.#3517: Add experimental fix for reduce performance regression due to expensive repeated AST-transformations on newer SpiderMonkey versions. Set
COUCHDB_QUERY_SERVER_JAVASCRIPTenv var toCOUCHDB_QUERY_SERVER_JAVASCRIPT="/opt/couchdb/bin/couchjs /opt/couchdb/share/server/main-ast-bypass.js".#4262:
couchjsexecutable built against Spidermonkey >= 78 will return the detailedmajor.minor.patchas opposed to just themajorversion as previously.
1.3.4.4. Bugfixes
#3817: Fix undefined function call in
weatherreport.#3819: Return
400instead of500response code for known invalid_bulk_docswithnew_edits=falserequest.#3861: Add
SameSitesetting when clearing session cookies.#3863: Fix custom TLS distribution for Erlang 20.
#3870: Always send all cookie attributes.
#3886: Avoid changes feed rewind after shard move with no subsequent db updates.
#3888: Make
_statsendpoint resilient against nodes that go offline.#3901: Use db-creation time instead of
0forinstance_start_timeto help replicator recognise whether a peer database was deleted and recreated.#3909: Fix
new_edits:falseand VDUfunction_clause.#3934: Fix
replicated_changestypo for purge doc updates.#3940: Ensure the multipart parser always monitors the worker and make sure to wait for attachment uploads before responding.
#3950: Ignore responses from timed-out or retried
ibrowsecalls.#3969: Fix
skipandlimitfor_all_dbsand_dbs_info.#3979: Correctly respond with a
500code when document updates time out under heavy load.#3992: Show that Search is available if it was available before. Avoid Search availability disappearing just because a Search node was temporarily not available.
#3993: Return a
400error when decoding a JWT token fails, rather than crashing and not responding at all.#3990: Prevent creation of ddocs with no name through Mango index creation.
#4003: Improve index building during shard splitting.
#4016: Fix
function_clauseerror for replicated changes with a target VDU.#4020: Fix
maybe_handle_errorclauses.#4037: Fix ES{256,384,512} support for JWTs.
#4040: Handle
exit(shutdown)error inchttpd.#4043: Fix purge request timeouts (5s -> infinity).
#4146: The
devcontainerhas been updated.#4050: Handle
all_dbs_activeinfabric_doc_update.#4160: Return a proper
400error when an invalid object is sent to_bulk_get.#4070: Prevent
error:function_clauseincheck_security/3if roles claim is malformed.#4075: Fix
couch_debug:opened_files*functions.#4108: Trim
X-Auth-CouchDB-Rolesheader after reading.#4153: The
require_valid_usersetting is now underchttpd.#4161: Fix
content-typehandling in_session.#4176: Fix
eventsource_changesfeed.#4197: Support large (and impractical as-of-yet)
qvalues. Fix shard open timeouts forq > 64.#4199: Fix spurious unlock in
close_db_if_idle.#4230: Avoid refresh messages piling up in prometheus server.
#4240: Implement global password hasher process. This fixes a race-condition when setting new admin passwords in quick succession on a multicore server.
#4261, #4271: Clean up stale view checkpoints, improve purge client cleanup logging
#4272: Kill all
couch_server_Nifdatabase_dirchanges.#4313: Use
chttpdconfig section when patching local_replicateendpoints.#4321: Downgrade jiffy to allow building on Windows again.
1.3.4.5. Tests
#3825: Eliminate Elixir compiler warnings.
#3830: Reduce skipped Elixir integration tests.
#3890: Handle
not_foundlookups removing ddoc cache key.#3892: Use Debian Stable for CI, add Erlang 24 to CI.
#3898: Remove CI support for Ubuntu 16.04.
#3903, #3914: Refactor Jenkins to dynamically generate stages. Drop
MINIMUM_ERLANG_VERSIONto 20, drop the packagingERLANG_VERSIONto 23, add theweatherreport-testas a build step, and addARMandPOWERback into the matrix.#3921:, #3923: Execute various tests in clean
database_dirto avoid subsequent test flakiness.#3968: Ensure key tree rev stemming does’t take too much memory.
#3980: Upgrade Mango test dependency
nosetonoseand fix flaky-on-Windows tests.#4006: Remove CI support for Debian 9.
#4096: Fix flaky
validate_doc_updateElixir test.#4123: Fix
haproxy.cfg.#4126: Return a
400response for a singlenew_edits=falsedoc update without revision.#4129: Fix
proxyauth_testand removed it from skip list.#4132: Address race condition in
cpse_incref_decreftest.#4151: Refactor replication tests to use clustered endpoints.
#4178: Add test coverage to prevent junk in
eventsource.#4188: Enable eunit coverage for all applications instead of enabling it per-application.
#4202: Fix race condition in ddoc cache LRU test.
#4268: Improve flaky
_dbs_infotest.#4319: Fix offline
configureandmake release.#4328: Fix
eaddrnotavailin Elixir tests under Windows.#4330: Do not run source checks in main CI build.
1.3.4.6. Docs
1.3.4.7. Builds
1.3.4.8. Other
Added pumpkin spice to selected endpoints. — Thank you for reading the 3.3.0 release notes.