# 1.2. 3.1.x Branch

- Version 3.1.2
- Version 3.1.1
- Version 3.1.0

## 1.2.1. Version 3.1.2

This is a security release for a low severity vulnerability. Details of the issue will be published one week after this release. See the CVE database for details at a later time.

## 1.2.2. Version 3.1.1

### 1.2.2.1. Features and Enhancements

- #3102, #1600, #2877, #2041: When a client disconnects unexpectedly, CouchDB will no longer log a “`normal : unknown`” error. Bring forth the rainbows.

- #3109: Drilldown parameters for text index searches may now be specified as a list of lists, to avoid having to define this redundantly in a single query. (Some languages don’t have this facility.)
- #3132: The new `[chttpd] buffer_response` option can be enabled to delay the start of a response until the end has been calculated. This increases memory usage, but simplifies client error handling as it eliminates the possibility that a response may be deliberately terminated midway through, due to a timeout. This config value may be changed at runtime, without impacting any in-flight responses.

### 1.2.2.2. Performance

### 1.2.2.3. Bugfixes

- #2935: The replicator now correctly picks jobs to restart during rescheduling, where previously with high load it may have failed to try to restart crashed jobs.
- #2981: When handling extremely large documents (≥50MB), CouchDB can no longer time out on a `gen_server:call` if bypassing the IOQ.
- #2941: CouchDB will no longer fail to compact databases if it finds files from a 2.x compaction process (prior to an upgrade) on disk.
- #2955 CouchDB now sends the correct CSP header to ensure Fauxton operates correctly with newer browsers.
- #3061, #3080: The couch_index server won’t crash and log errors if a design document is deleted while that index is building, or when a ddoc is added immediately after database creation.
- #3078: CouchDB now checks for and complains correctly about invalid parameters on database creation.
- #3090: CouchDB now correctly encodes URLs correctly when encoding the `atts_since` query string.
- #2953: Some parameters not allowed for text-index queries on partitioned database are now properly validated and rejected.
- #3118: Text-based search indexes may now be cleaned up correctly, even if the design document is now invalid.
- #3121: `fips` is now only reported in the welcome message if FIPS mode was enabled at boot (such as in `vm.args`).
- #3128: Using COPY to copy a document will no longer return a JSON result with two `ok` fields.
- #3138: Malformed URLs in replication requests or documents will no longer throw an error.

### 1.2.2.4. Other

- JS tests skip faster now.
- More JS tests ported into elixir: `reader_acl`, `reduce_builtin`, `reduce_false`, `rev_stemming`, `update_documents`, `view_collation_raw`, `view_compaction`, all the `view_multi_key` tests, `view_sandboxing`, `view_update_seq`.

## 1.2.3. Version 3.1.0

### 1.2.3.1. Features and Enhancements

- #2648: Authentication via JSON Web Token (JWT). Full documentation is at the friendly link.

- #2770: CouchDB now supports linking against SpiderMonkey 68, the current Mozilla SpiderMonkey ESR release. This provides direct support for packaging on the latest operating system variants, including Ubuntu 20.04 “Focal Fossa.”

- A new Fauxton release is included, with updated dependencies, and a new optional

    CouchDB news page.

### 1.2.3.2. Performance

- #2754: Optimized compactor performance, resulting in a 40% speed improvement when document revisions approach the `revs_limit`. The fixes also include additional metrics on size tracking during the sort and copy phases, accessible via the :get:`GET /_active_tasks </active_tasks>` endpoint.

- A big bowl of candy! OK, no, not really. If you got this far…thank you for reading.