Skip to content
Branch: master
Go to file
Code

Latest commit

janl committed 0eedd8b Jul 3, 2020
fix: set gen_server:call() timeout to infinity on ioq bypass
Before the bypass existed, ioq would call `gen_server:call()`
on hehalf of it calling module with the queueing logic in between.

Commit e641a74 introduced a way to bypass any queues, but the
delegated `gen_server:call()` there was added without a timeout
parameter, leading to a default timeout of 5000ms.

A problem manifests here when operations that are sent through
ioq that take longer than that 5000ms timeout. In practice, these
operations should be very rare and this timeout should be a help
on overloaded systems. However, one sure-fire way to cause an issue
on an otherwise idle machine is raise the max_document_size and
store unreasonably large documents, think 50MB+ of raw JSON).

Not that we recommend this, but folks have run this fine on 2.x
before the ioq changes and it isn’t too hard to support here.

By adding an `infinity` timeout delegated `gen_server:call()` in
the queue bypasse case, this no longer applies.

Thanks to Joan @woahli Touzet, Bob @rnewson Newson and
Paul @davisp Davis for helping to track this down.

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
May 17, 2020
Sep 24, 2019

README.rst

Apache CouchDB README

1

Installation

For a high-level guide to Unix-like systems, inc. Mac OS X and Ubuntu, see:

INSTALL.Unix

For a high-level guide to Microsoft Windows, see:

INSTALL.Windows

Follow the proper instructions to get CouchDB installed on your system.

If you're having problems, skip to the next section.

Documentation

We have documentation:

http://docs.couchdb.org/

It includes a changelog:

http://docs.couchdb.org/en/latest/whatsnew/

For troubleshooting or cryptic error messages, see:

http://docs.couchdb.org/en/latest/install/troubleshooting.html

For general help, see:

http://couchdb.apache.org/#mailing-list

We also have an IRC channel:

http://webchat.freenode.net/?channels=couchdb

The mailing lists provide a wealth of support and knowledge for you to tap into. Feel free to drop by with your questions or discussion. See the official CouchDB website for more information about our community resources.

Verifying your Installation

Run a basic test suite for CouchDB by browsing here:

http://127.0.0.1:5984/_utils/#verifyinstall

Getting started with developing

For more detail, read the README-DEV.rst file in this directory.

Basically you just have to install the needed dependencies which are documented in the install docs and then run ./configure && make.

You don't need to run make install after compiling, just use ./dev/run to spin up three nodes. You can add haproxy as a caching layer in front of this cluster by running ./dev/run --with-haproxy --haproxy=/path/to/haproxy . You will now have a local cluster listening on port 5984.

For Fauxton developers fixing the admin-party does not work via the button in Fauxton. If you run ./dev/run, an admin user root with a random password is generated (see the output of the script). If you want to set an admin user, start with the admin flag, e.g. ./dev/run --admin=username:password. If you want to have an admin-party, run ./dev/run --with-admin-party-please. To see all available options, please check ./dev/run --help.

Contributing to CouchDB

You can learn more about our contributing process here:

https://github.com/apache/couchdb/blob/master/CONTRIBUTING.md

Cryptographic Software Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See <http://www.wassenaar.org/> for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

CouchDB includes a HTTP client (ibrowse) with SSL functionality.

You can’t perform that action at this time.