Well done Joan. On 7 August 2017 at 21:47, William Edney <[email protected]> wrote:
> Congrats to all, but especially to Joan whose hard work and undying > persistence made this release happen! > > As a "basic" user of CouchDB, this release fixed a number of bugs for me > and is going to allow me to use the Couch 2.X series for my clients and > company. If there's ever any doubt to anyone on the committer team that > your efforts make an impact, let me put that to rest - this release is > making a huge difference for me! > > Cheers, > > - Bill > > On Mon, Aug 7, 2017 at 2:14 PM, Benjamin Anderson <[email protected]> wrote: > > > > but a big and special thanks to Joan Touzet who made it her mission to > > get this done and succeeded. > > > > Indeed. Thanks, Joan! > > > > -- > > b > > > > On Mon, Aug 7, 2017 at 11:53 AM, Robert Samuel Newson > > <[email protected]> wrote: > > > > > > Thanks to everyone for the amazing efforts exerted to get here but a > big > > and special thanks to Joan Touzet who made it her mission to get this > done > > and succeeded. > > > > > > Best, > > > B. > > > > > >> On 7 Aug 2017, at 19:09, Joan Touzet <[email protected]> wrote: > > >> > > >> Dear community, > > >> > > >> Apache CouchDB 2.1.0 has been released and is available for > > >> download. > > >> > > >> CouchDB is a database that completely embraces the web. Store your > data > > >> with JSON documents. Access your documents with your web browser, via > > >> HTTP. Query, combine, and transform your documents with JavaScript. > > >> CouchDB works well with modern web and mobile apps. You can distribute > > >> your data, efficiently using CouchDB’s incremental replication. > CouchDB > > >> supports master-master setups with automatic conflict detection. > > >> > > >> CouchDB comes with a suite of features, such as on-the-fly document > > >> transformation and real-time change notifications, that make web > > >> development a breeze. It even comes with an easy to use web > > >> administration console, served directly out of CouchDB! We care a lot > > >> about distributed scaling. CouchDB is highly available and partition > > >> tolerant, but is also eventually consistent. And we care a lot about > > >> your data. CouchDB has a fault-tolerant storage engine that puts the > > >> safety of your data first. > > >> > > >> Download your copy here: > > >> > > >> https://couchdb.apache.org/#download > > >> > > >> Pre-built convenience binaries for Windows, macOS, Debian/Ubuntu and > > >> RHEL/CentOS are available. > > >> > > >> CouchDB 2.1.0 is a feature release, and was originally published on > > >> 2017-08-07. > > >> > > >> The community would like to thank all contributors for their part in > > >> making this release, from the smallest bug report or patch to major > > >> contributions in code, design, or marketing, we couldn’t have done it > > >> without you! > > >> > > >> The release notes follow. A formatted version of them can be viewed > > >> at http://docs.couchdb.org/en/2.1.0/whatsnew/2.1.html > > >> > > >> On behalf of the CouchDB PMC, > > >> Joan Touzet > > >> > > >> --- > > >> > > >> Version 2.1.0 > > >> > > >> The Mango _find endpoint supports a new combination operator, > > $allMatch, which matches and returns all documents that contain an array > > field with all its elements matching all the specified query criteria. > > >> > > >> New scheduling replicator. The core of the new replicator is a > > scheduler which allows running a large number of replication jobs by > > switching between them, stopping some and starting others periodically. > > Jobs which fail are backed off exponentially. There is also an improved > > inspection and querying API: _scheduler/jobs and _scheduler/docs: > > >> _scheduler/jobs : This endpoint shows active replication jobs. > > These are jobs managed by the scheduler. Some of them might be running, > > some might be waiting to run, or backed off (penalized) because they > > crashed too many times. Semantically this is somewhat equivalent to > > _active_tasks but focuses only on replications. Jobs which have completed > > or which were never created because of malformed replication documents > will > > not be shown here as they are not managed by the scheduler. _replicate > > replications, started form _replicate endpoint not from a document in a > > _replicator db, will also show up here. > > >> _scheduler/docs : This endpoint is an improvement on having to > > go back and read replication documents to query their state. It > represents > > the state of all the replications started from documents in _replicator > db. > > Unlike _scheduler/jobs it will also show jobs which have failed or have > > completed. > > >> > > >> By default, scheduling replicator will not update documents with > > transient states like triggered or error anymore, instead _scheduler/docs > > API should be used to query replication document states. > > >> > > >> Other scheduling replicator improvements > > >> > > >> Network resource usage and performance was improved by > > implementing a shared connection pool. This should help in cases of a > large > > number of connections to the same sources or target. Previously > connection > > pools were shared only withing a single replication job. > > >> Improved request rate limit handling. Replicator requests will > > auto-discover rate limit capacity on targets and sources based on a > proven > > Additive Increase / Multiplicative Decrease feedback control algorithm. > > >> Improved performance by having exponential backoff for all > > replication jobs failures. Previously there were some scenarios were > > failure led to continuous repeated retries, consuming CPU and disk > > resources in the process. > > >> Improved recovery from long but temporary network failure. > > Currently if replications jobs fail to start 10 times in a row, they will > > not be retried anymore. This is sometimes desirable, but in some cases, > for > > example, after a sustained DNS failure which eventually recovers, > > replications reach their retry limit, stop retrying and never recover. > > Previously it required user intervention to continue. Scheduling > replicator > > will never give up retrying a valid scheduled replication job and so it > > should recover automatically. > > >> Better handling of filtered replications. Failing user filter > > code fetches from the source will not block replicator manager and stall > > other replications. Failing filter fetches will also be backed off > > exponentially. Another improvement is when filter code changes on the > > source, a running replication will detect that and restart itself with a > > new replication ID automatically. > > >> > > >> The 2.1.0 release also includes the following minor improvements: > > >> > > >> COUCHDB-1946: Hibernate couch_stream after each write (up to 70% > > reduction in memory usage during replication of DBs with large > attachments) > > >> COUCHDB-2964: Investigate switching replicator manager change feeds > > to using “normal” instead of “longpoll” > > >> COUCHDB-2988: (mango) Allow query selector as changes and > > replication filter > > >> COUCHDB-2992: Add additional support for document size > > >> COUCHDB-3046: Improve reduce function overflow protection > > >> COUCHDB-3061: Use vectored reads to search for buried headers in > > .couch files. “On a modern linux system with SSD, we see improvements up > to > > 15x.” > > >> COUCHDB-3063: “stale=ok” option replaced with new “stable” and > > “update” options. > > >> COUCHDB-3180: Add features list in the welcome message > > >> COUCHDB-3203: Make auth handlers configurable (in ini files) > > >> COUCHDB-3234: Track open shard timeouts with a counter instead of > > logging > > >> COUCHDB-3242: Make get view group info timeout in couch_indexer > > configurable > > >> COUCHDB-3249: Add config to disable index all fields (text indexes) > > >> COUCHDB-3251: Remove hot loop usage of filename:rootname/1 > > >> COUCHDB-3284: 8Kb read-ahead in couch_file causes extra IO and > > binary memory usage > > >> COUCHDB-3298: Optimize writing btree nodes > > >> COUCHDB-3302: (Improve) Attachment replication over low bandwidth > > network connections > > >> COUCHDB-3307: Limit calls to maybe_add_sys_db_callbacks to once per > > db open > > >> COUCHDB-3318: bypass couch_httpd_vhost if there are none > > >> COUCHDB-3323: Idle dbs cause excessive overhead > > >> COUCHDB-3324: Introduce couch_replicator_scheduler > > >> COUCHDB-3337: End-point _local_docs doesn’t conform to query params > > of _all_docs > > >> COUCHDB-3358: (mango) Use efficient set storage for field names > > >> COUCHDB-3425: Make _doc_ids _changes filter fast-path limit > > configurable > > >> #457: TeX/LaTeX/texinfo removed from default docs build chain > > >> #469: (mango) Choose index based on fields match > > >> #483: couchup database migration tool > > >> #582: Add X-Frame-Options support to help protect against > > clickjacking > > >> #593: Allow bind address of 127.0.0.1 in _cluster_setup for single > > nodes > > >> #624: Enable compaction daemon by default > > >> #626: Allow enable node decom using string “true” > > >> (mango) Configurable default limit, defaults to 25. > > >> (mango) _design documents ignored when querying _all_docs > > >> (mango) add $allMatch selector > > >> Add local.d/default.d directories by default and document > > >> Improved INSTALL.* text files > > >> > > >> Fixed Issues > > >> > > >> The 2.1.0 release includes fixes for the following issues: > > >> > > >> COUCHDB-1447: X-Couch-Update-NewRev header is missed if custom > > headers are specified in response of _update handler (missed in 2.0 > merge) > > >> COUCHDB-2731: Authentication DB was not considered a system DB > > >> COUCHDB-3010: (Superceded fix for replication exponential backoff) > > >> COUCHDB-3090: Error when handling empty “Access-Control-Request- > Headers” > > header > > >> COUCHDB-3100: Fix documentation on require_valid_user > > >> COUCHDB-3109: 500 when include_docs=true for linked documents > > >> COUCHDB-3113: fabric:open_revs can return {ok, []} > > >> COUCHDB-3149: Exception written to the log if db deleted while > there > > is a change feed running > > >> COUCHDB-3150: Update all shards with stale=update_after > > >> COUCHDB-3158: Fix a crash when connection closes for _update > > >> COUCHDB-3162: Default ssl settings cause a crash > > >> COUCHDB-3164: Request fails when using _changes?feed=eventsource& > > heartbeat=30000 > > >> COUCHDB-3168: Replicator doesn’t handle well writing documents to a > > target db which has a small max_document_size > > >> COUCHDB-3173: Views return corrupt data for text fields containing > > non-BMP characters > > >> COUCHDB-3174: max_document_size setting can by bypassed by issuing > > multipart/related requests > > >> COUCHDB-3178: Fabric does not send message when filtering lots of > > documents > > >> COUCHDB-3181: function_clause error when adding attachment to doc > in > > _users db > > >> COUCHDB-3184: couch_mrview_compactor:recompact/1 does not handle > > errors in spawned process > > >> COUCHDB-3193: fabric:open_revs returns multiple results when one of > > the shards has stem_interactive_updates=false > > >> COUCHDB-3199: Replicator VDU function doesn’t acount for an already > > malformed document in replicator db > > >> COUCHDB-3202: (mango) do not allow empty field names > > >> COUCHDB-3220: Handle timeout in _revs_diff > > >> COUCHDB-3222: (Fix) HTTP code 500 instead of 400 for invalid key > > during document creation > > >> COUCHDB-3231: Allow fixing users’ documents (type and roles) > > >> COUCHDB-3232: user context not passed down in fabric_view_all_docs > > >> COUCHDB-3238: os_process_limit documentation wrong > > >> COUCHDB-3241: race condition in couch_server if delete msg for a db > > is received before open_result msg > > >> COUCHDB-3245: Make couchjs -S option take effect again > > >> COUCHDB-3252: Include main-coffee.js in release artifact (broken > > CoffeeScript view server) > > >> COUCHDB-3255: Conflicts introduced by recreating docs with > > attachments > > >> COUCHDB-3259: Don’t trap exits in couch_file > > >> COUCHDB-3264: POST to _all_docs does not respect conflicts=true > > >> COUCHDB-3269: view response can ‘hang’ with filter and limit > > specified > > >> COUCHDB-3271: Replications crash with ‘kaboom’ exit > > >> COUCHDB-3274: eof in couch_file can be incorrect after error > > >> COUCHDB-3277: Replication manager crashes when it finds _replicator > > db shards which are not part of a mem3 db > > >> COUCHDB-3286: Validation function throwing unexpected json crashes > > with function_clause > > >> COUCHDB-3289: handle error clause when calling fabric:open_revs > > >> COUCHDB-3291: Excessively long document IDs prevent replicator from > > making progress > > >> COUCHDB-3293: Allow limiting length of document ID (for CouchDB > > proper) > > >> COUCHDB-3305: (mango) don’t crash with invalid input to built in > > reducer function > > >> COUCHDB-3362: DELETE attachment on non-existing document creates > the > > document, rather than returning 404 > > >> COUCHDB-3364: Don’t crash compactor when compacting process fails. > > >> COUCHDB-3367: Require server admin user for db/_compact and > > db_view_cleanup endpoints > > >> COUCHDB-3376: Fix mem3_shards under load > > >> COUCHDB-3378: Fix mango full text detection > > >> COUCHDB-3379: Fix couch_auth_cache reinitialization logic > > >> COUCHDB-3400: Notify couch_index_processes on all shards when ddoc > > updated > > >> COUCHDB-3402: race condition in mem3 startup > > >> #511: (mango) Return false for empty list > > >> #595: Return 409 to PUT attachment with non-existent rev > > >> #623: Ensure replicator _active_tasks entry reports recent pending > > changes value > > >> #627: Pass UserCtx to fabric’s all_docs from mango query > > >> #631: fix couchdb_os_proc_pool eunit timeouts > > >> #644: Make couch_event_sup:stop/1 synchronous > > >> #645: Pass db open options to fabric_view_map for _view and _list > > queries on _users DB > > >> #648: Fix couch_replicator_changes_reader:process_change > > >> #649: Avoid a race when restarting an index updater > > >> #667: Prevent a terrible race condition > > >> #677: Make replication filter fetch error for _replicate return a > 404 > > >> Fix CORS max_age configuration parameter via Access-Control-Max-Age > > >> Chunk missing revisions before attempting to save on target > > (improves replication for very conflicted, very deep revision tree > > documents) > > >> Allow w parameter for attachments > > >> Return “Bad Request” when count in /_uuids exceeds max > > >> Fix crashes when replicator db is deleted > > >> Skip internal replication if changes already replicated > > >> Fix encoding issues on _update/../doc_id and PUT attachments > > >> > > >> Upgrade Notes > > >> > > >> The deprecated (and broken) OAuth 1.0 implementation has been > > removed. > > >> If user code reads or manipulates replicator document states, > > consider using the [replicator] update_docs = true compatibility > parameter. > > In that case replicator will continue updating documents with transient > > replication states. However, that will incure a performance cost. > Consider > > instead switching using _scheduler/docs HTTP endpoint. > > >> The stale parameter for views and _find has been deprecated in > > favour of two new parameters: stable and update. The old stale=ok > behaviour > > is equivalent to stable=true&update=false, and the old stale=update_after > > behaviour is equivalent to stable=true&update=lazy. The deprecated stale > > parameter will be removed in CouchDB 3.0. > > >> The [couchdb] max_document_size configuration parameter was renamed > > to [httpd] max_http_request_size to reflect its actual implementation. It > > has been enhanced by a new [couchdb] single_max_doc_size setting. Both > are > > documented in the shipped default.ini file. > > > > > > John Le Brasseur
