| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
Occasionally it's possible to lose track of our RPC workers in the main
multipart parsing code. This change monitors each worker process and
then exits if all workers have exited before the parser considers itself
finished.
Fixes part of #745
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some cases the higher level code from `couch_replicator_api_wrap` needs to
handle retries explicitly and cannot cope with retries happening in the lower
level http client. In such cases it sets `retries = 0`.
For example:
https://github.com/apache/couchdb/blob/master/src/couch_replicator/src/couch_replicator_api_wrap.erl#L271-L275
The http client then should avoid unconditional retries and instead consult
`retries` value. If `retries = 0`, it shouldn't retry and instead bubble the
exception up to the caller.
This bug was discovered when attachments were replicated to a target cluster
and the target cluster's resources were constrainted. Since attachment `PUT`
requests were made from the context of an open_revs `GET` request, `PUT`
request timed out, and they would retry. However, because the retry didn't
bubble up to the `open_revs` code, the second `PUT` request would die with a
`noproc` error, since the old parser had exited by then. See issue #745 for
more.
|
| |
|
|
|
|
| |
This knocks out a few dialyzer errors
|
| |
|
|
|
|
|
|
|
| |
It depends on and uses `config`. Obviously it still works without it, but this
eliminates Dialyzer errors such as:
`Callback info about the config_listener behaviour is not available`
|
| |
|
| |
|
|\
| |
| | |
Remove queries for _all_docs, _design_docs and _local_docs
|
|/
|
|
| |
issue 820
|
|
|
|
| |
* make javascript, test-cluster-with[out]-quorum and mango tests dependent of devclean target
|
| |
|
|
|
|
|
|
|
|
| |
Add degrade-cluster option for cluster testing
Add tests for different cluster conditions with/without quorum
Add test-cluster-with-quorum and test-cluster-without-quorum tasks
|
|\
| |
| | |
Introduce new _dbs_info endpoint to get info of a list of databases
|
|/
|
|
| |
Fixes #822
|
|
|
|
| |
Fixes #1100
|
| |
|
|
|
|
| |
Fixes #977
|
|
|
|
|
|
| |
- don't display credential information for user who
just wants to check replication status. In basic authentication,
the credential information is available in header field of doc
|
|
|
|
|
| |
We removed the Dockerfile in 6e57c43a and moved all Docker-related
materials to apache/couchdb-docker, but we never cleaned up the
Makefile targets or developer documentation.
|
|
|
|
| |
Fixes #876
|
|\
| |
| |
| |
| | |
apache/fix-create_delete_database_continuously-test
Set eunit timeout on a whole test object
|
|/ |
|
|
|
|
| |
Fixes #820
|
| |
|
|\
| |
| | |
Return update_seq and offset when update_seq is true and keys is set
|
|/
|
|
| |
issue 969
|
|
|
|
|
| |
Fix a random mashup of test object generators
with normal assertions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The existing `couchdb` start script hard-codes the arguments to
`-args_file` and `-config`. Although it is possible to copy this
script and modify it, or modify it in place, that is less than ideal
and can lead to all kinds of difficulties.
This PR adds the following environment variables:
- `ARGS_FILE`: By default, set to the existing hard-coded value.
- `SYSCONFIG_FILE`: By default, set to the existing hard-coded value.
- `COUCHDB_ARGS_FILE`: If non-empty, overrides `ARGS_FILE`.
- `COUCHDB_SYSCONFIG_FILE`: If non-empty, overrides `SYSCONFIG_FILE`.
By changing the script to use these environment variables, it makes it easily
possible to use different settings without tinkering with the pristine
installed CouchDB environment.
|
|
|
|
|
|
|
|
| |
Change runtime choice between `erl_scan:token_info`
and `erl_scan:line` to compilation conditional one.
This is getting rid of compilation deprecation warning
and also should speed up things a bit.
|
|
|
|
|
|
|
| |
Avoid starting 4 applications (config, couch_log, ioq and couch_epi) just to
handle a call to config:get. Instead just mock the config directly.
This also speeds up the test suite a bit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mango text indexes historically supported partial indexes
defined via a "selector" field. This was renamed to
"partial_filter_selector" in b98de40 but the fallback
code did not correctly handle the case where
a "selector" existed alongside a "partial_filter_selector".
This situation can occur when a the _index endpoint is
used to create a text index with a "selector". The resulting
design document contains an empty "partial_filter_selector"
field *and* the "selector" field that was passed in. The
previous implementation of the fallback would detect the
presence of "partial_filter_selector" and use the empty
value (match all docs) instead of faling back to the
"selector" field.
This commit changes the behaviour so that a "selector"
will be used even if an empty "partial_filter_selector"
is present. A secondary fix would be to change the index
creation so that we never use "selector" in the underlying
index design document, even if it is passed to the _index
API.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Return friendly error message when creating user with invalid password
- Return friendly error message instead of returning unknown_error
and function_clause when creating a use with non-string password.
issue 1051
* Add check for salt
issue 1051
|
|\
| |
| | |
Make sure mango tests's recreate fun creates db
|
|/
|
|
|
|
|
|
|
|
| |
Rapid same database deletion/creation is a known
antipattern prone to a race condition, especially
on slow VMs.
This fix modifies mango test's helper function
used for db recreation to ensure that we are actually
starting tests when a database created and empty.
|
|\
| |
| | |
Use uuid in tmp db names in unit tests
|
|/
|
|
|
|
|
|
|
|
| |
This changes naming of temporary eunit databases
and files from using unique_monotonic_integer to
couch_uuids:random to remove performance penalty
and normalize naming across erlang releases.
Also getting rid of unnecessary inter-types
convertion.
|
|\
| |
| | |
Cleanup data dirs in eunit_plugin before test run
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We use `unique_monotonic_integer` to name
the test databases in unit testing.
That means that on erlang R > 18 we are always
creating databases with same names.
When unit tests crashing or don't properly
cleaning up on teardown, they are leaving behind
old database files, son on a next run tests'
setup fails with `database exists` exception.
This fix cleans up old database files
making sure we are always running unit tests
from same blank state.
|
|\
| |
| | |
Refactor couch_log.erl
|
|/
|
|
| |
issue 832
|
|
|
|
|
|
|
|
|
|
| |
Don't crash on receiving cast stop
When soft limit is reached couch_proc_manager
evicts idle processes by casting on them `stop`
message. Since mango_native_proc doesn't handle
this message it results to its crash with
`invalid_cast` reason.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
01252f97 introduced a "catch-all" feature to Mango that allowed
queries to fall back on a full database scan (_all_docs) when
no valid index was available.
This worked by creating a special index range representing
the full database scan.
For example, a selector:
{ "_id": "foo" }
would be translated into a field range of:
[{ "startkey": "foo", "endkey": "foo"}]
then prepending the catch-all field range, we would have:
[
{ "startkey": null, "endkey": max_json_value},
{ "startkey": "foo", "endkey": "foo"}
]
This set gets passed into
mango_cursor_view:choose_best_index to determine most selective
index and field range combination to use. Unfortunately, in
the event that we have one possible index (all_docs) and multiple
valid ranges, it just chooses the first range it finds -
the full index scan in this case.
This commit makes the catch-all field range the last
available option, ensuring we use the more selective
range where available.
|
|
|
|
|
|
| |
- `stats scope .` ends up blocking all backends
- Renaming endpoint from `_stats` to `_haproxy_stats` so that it doesn't collide with CouchDB's `_stats` endpoint
- Added a commented out stats auth line so that you can easily password protect
|
|
|
| |
issue #832
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since #816, mango JSON index on compound fields can be
selected only if the selector make sure that all the fields
listed in the index are always present.
This adds a special case where all clauses of an `$or` can
ensure that a field is present.
For instance, if I had an index:
[A, B]
is_usable would now return true for the selector:
{
"A": "foo",
"$or": {
"B": "bar",
"B": "baz"
}
}
but false for:
{
"A": "foo",
"$or": {
"B": "bar",
"C": "bar"
}
}
|
|
|
|
| |
issue 875
|