| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Closes #1746
|
|\
| |
| |
| |
| | |
cloudant/84736-handle-db-deletion-in-load_validation_funs
handle db deletion in load validation funs
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously there were quite a few problems with load_validation_funs
in the case when clustered database is deleted.
- the calls to load_validation_funs were failing with `internal_server` error [1]
- the deleted database stayed opened because:
- the caller of the load_validation_funs (update_doc) stayed alive
- the main_pid of the deleted database wasn't killed either
- there was an infinite loop in ddoc_cache_entry trying to recover ddoc from deleted database
The solution is:
- do not call `recover` for deleted database
- close `main_pid`
- use `erlang:error` to crash the caller
[1] - The stack trace was:
```
{database_does_not_exist,[
{mem3_shards,load_shards_from_db,"bailey/meta",[
{file,"src/mem3_shards.erl"},{line,394}]},
{mem3_shards,load_shards_from_disk,1,[
{file,"src/mem3_shards.erl"},{line,369}]},
{mem3_shards,for_db,2,[
{file,"src/mem3_shards.erl"},{line,54}]},
{fabric_view_all_docs,go,5,[
{file,"src/fabric_view_all_docs.erl"},{line,24}]},
{ddoc_cache_entry_validation_funs,recover,1,[
{file,"src/ddoc_cache_entry_validation_funs.erl"},{line,33}]},
{ddoc_cache_entry,do_open,1,[
{file,"src/ddoc_cache_entry.erl"},{line,294}]}]}
```
|
|\
| |
| | |
Fix total_rows value for queries on `_design_docs` handler
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This adds a new fabric provider for getting a counter for design docs
in a database. It allows for a valid query for total_rows when _design_docs
handler queried with an array of keys.
|
|/ |
|
|
|
|
| |
extra field in the header.
|
|\
| |
| | |
Remove unnecessary setting on chttpd_view_test
|
|/ |
|
|\
| |
| | |
Add query server to eunit, Makefile.win
|
|/ |
|
| |
|
|\
| |
| | |
Avoid badmatch when getting fabric timeout
|
|/
|
|
|
|
|
| |
- Avoid badmatch when putting set_purge_infos_limit
and getting fabric timeout
COUCHDB-3326
|
|\
| |
| | |
Fix nasty 500 error on POST to /_config
|
|/ |
|
| |
|
|\
| |
| | |
Test suite fixes for Windows
|
| | |
|
| |
| |
| |
| |
| |
| | |
"It's the test suite, it can't be DNS!"
"It's ALWAYS DNS."
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unfortuantely, os:timestamp() on Windows only has millisecond
accuracy. That means that the two Mango tests checking for a positive
value of execution_time fail, since these tests appear to be running
in <1ms on my test setup (a rather anemic Windows VM!)
This change disables only the check for execution_time in two tests,
and leaves the remainder of the execution_stats checks in place
on Windows.
It also introduces a convenience "make.cmd" file so you can
"make check" without typing "make -f Makefile.win check" all the time.
|
| |
|
|\
| |
| | |
Feature flags
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
| |
* Reformat mix.lock
* Suppress elixir 1.7 warnings
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enable cluster auto-assembly through a seedlist
This introduces a new config setting which allows an administrator to
configure an initial list of nodes that should be contacted when a node
boots up:
[cluster]
seedlist = couchdb@node1.example.com,couchdb@node2.example.com,couchdb@node3.example.com
If configured, CouchDB will add every node in the seedlist to the _nodes
DB automatically, which will trigger a distributed Erlang connection and
a replication of the internal system databases to the local node. This
eliminates the need to explicitly add each node using the HTTP API.
We also modify the /_up endpoint to reflect the progress of the initial seeding
of the node. If a seedlist is configured the endpoint will return 404 until the
local node has updated its local replica of each of the system databases from
one of the members of the seedlist. Once the status flips to "ok" the endpoint
will return 200 and it's safe to direct requests to the new node.
|
|
|
|
|
|
|
|
|
|
|
| |
* Fix bug in epoch millisecond calculation
* Include timeout milliseconds in exception message
* Support assertions in retry_until
Previously, retry_until would only work with boolean conditions.
This change supports assertions in code being retried, which requires
fewer changes to wrap existing code containing assertions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously stats counts between job runs were reset. So if a job was stopped
and restarted by the scheduler, its docs_written, docs_read, doc_write_failures,
etc., counts would go back to 0. For doc_write_failures this was especially bad
as it hid the fact that some documents were not replicated to the target
because either a VDU failed or one of the limits were hit.
This change preserves stats across job runs. Everytime active tasks is updated,
the stats object in rep record of each job in scheduler's ets table will be
updated asynchronously. On next job start the job will reinitialize from last
saved stats.
Relates somewhat to issue #1159
|
| |
|
|
|
|
|
| |
The previous configuration `[daemons] httpsd = {chttpd, start_link, [https]}`
is also sill supported for backwards cmpatibility reasons.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CouchDB ships with two default query_servers (javascript and coffeescript)
as well as one default native_query_server (query aka mango). These used
to be configured in default.ini in these sections:
```
[query_servers]
javascript = {{prefix}}/bin/couchjs {{prefix}}/share/server/main.js
coffeescript = {{prefix}}/bin/couchjs {{prefix}}/share/server/main-coffee.js
; enable mango query engine
[native_query_servers]
query = {mango_native_proc, start_link, []}
; erlang query server
; erlang = {couch_native_process, start_link, []}
```
This allowed end-users post-install and even runtime-changes to which
query servers are enabled and where their binaries live.
This patch changes things, so only a post-install, but not at-runtime
changes are possible from now on.
This still allows people to configure their CouchDB to run a third-
party query server like the somewhat popular Python query server,
but it changes the way the setup is done.
Query Servers
The javascript and coffeescript query servers continue to be enabled
by default. Setup differences have been moved from default.ini to
the couchdb and couchdb.cmd start scripts respectively.
Additional query servers can now be configured using environment
variables:
```
export COUCHDB_QUERY_SERVER_PYTHON="/path/to/python/query/server.py with args"
couchdb
```
Where the last segment in the environment variable matches the usual
lowercase(!) query language in the design doc `language` field.
Multiple query servers can be configured by using more environment
variables.
Native Query Servers
The mango query server continues to be enabled by default. The erlang
query server continues to be disabled by default. This patch adds
a `[native_query_servers] enable_erlang_query_server = BOOL` setting
(defaults to `"false"`) to enable the erlang query server.
If the legacy configuration for enabling the query server is detected,
that is counted as a `true` setting as well, so existing configurations
continue to work just fine.
Windows
Since the setting of the `./configure` time `PREFIX` happens during
`make release`, I had to adapt the `couchdb` and `couchdb.cmd` scripts
to have the correct env vars set and the `PREFIX` replaced there.
I did this to the best of my abilities and research, but this needs
review from the Windows team (Hi Joan! :).
OS Daemons
Although deprecated in 2.2.0, we’re keeping support for this until 3.x,
but the configuration changes analogous to query servers.
Previously, configuration looked like this:
```
[os_daemons]
name = /path/to/daemon with args
```
With this patch, setup looks like this:
```
COUCHDB_OS_DAEMON_NAME="/path/to/daemon with args"
couchdb
```
Multiple OS Daemons can be started with multiple env vars. The final
segment in the env var becomes the daemon identifier inside CouchDB
as lowercase(!).
|
| |
|