| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
The encryption object contains a boolean "enabled"
property. Additional properties might be added by the key manager
which will appear in the "key_manager" sub-object.
|
|\
| |
| | |
Remove '--production' flag when building Fauxton
|
|/
|
|
|
|
|
| |
Since https://github.com/apache/couchdb-fauxton/pull/1299 only runtime
dependencies are installed when using 'npm install --production'.
To correctly build the Fauxton release, one must install all dependencies
with 'npm install'.
|
| |
|
|
|
|
|
|
|
|
|
| |
Too many parallel attempts to insert the same keys can result in
`{erlfdb_error, 1020}`, which translates to:
"Transaction not committed due to conflict with another transaction"
This attempts to mitigate the problem by using a snapshot to read the
primary key during insertion.
|
|
|
|
| |
Fix specs to eliminate dialyzer warnings.
|
|\
| |
| | |
Fix semantics of total_rows
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The `total_rows` field suppose to be a number of documents in the database/view.
See https://docs.couchdb.org/en/stable/api/ddoc/views.html.
When new pagination API was introduced the meaning of `total_rows` field was
changed to number of rows in the query results. The PR reverts this
accidental change.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Before this change a reduce call that contained no rows would end up
returning the "default" value of the given reduce function which is
whatever it would return when given an empty array as input. This
changes the behavior to return `{"rows": []"}` when there are no
rows in the requested range.
|
| |
| |
| | |
Co-authored-by: Joan Touzet <wohali@users.noreply.github.com>
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This changes allows administators to disable custom JavaScript reduce
functions. Custom reduce functions are notoriously difficult to write
correctly and most of the time when written correctly would be more
efficiently done using an builtin reduce.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
`Headers1` is not used anywhere
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously we subtly relied on one set of headers being sorted, then sorted the
other set of headers, and ran `lists:ukeymerge/3`. That function, however,
needs both arguments to be sorted in order for it to work as expected. If one
argument wasn't sorted we could get duplicate headers easily, which is what was
observed in testing.
A better fix than just sorting both sets of keys, is to use an actual header
processing library to combine them so we can account for case insensitivity as
well.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously there was an attempt to shortcut some of the job initialization if
replication ID in the job data and the newly computed one matched. However,
that logic was wrong as it skipped over the job data state update.
The effect was that if a job was in a pending state, and it re-initialized, say
when a node restarted, its job data would still indicate it as "pending" until
the next checkpoint. If the job is continuous, and there are no more updates on
the source, the state of the job would stay in "pending" indefinitely.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Some elixir test cases don't have actual module tag. Add tags to
help include or exclude them in CI test.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This value is emitted in _active_tasks and was previously emitting `null`
values from the state record's defaults.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously there was an attempt to keep backwards compatibility with 3.x
replicator plugins by transforming the auth into a proplist with
`maps:to_list/1`. However, that didn't account for nested properties, so we
could have ended up with a top level of props with maps for some values.
Instead of making things too complicating, and doing a nested transform to
proplists, just keep the auth object as a map and let the plugins handle the
compatibility issue.
|
| |
| |
| |
| |
| |
| | |
This is mainly for compatibility with CouchDB 3.x
Ref: https://docs.couchdb.org/en/stable/api/server/common.html#scheduler-jobs
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Don't unnecessarily unwrap the fetch error since `error_info/1` can already
handle the current shape. Also, make sure to translate the reason to binary for
consistency with the other filter fetching errors in the
`couch_replicator_filters` module.
Add a test to ensure we return the `filter_fetch_error` term as that is
explicitly turned into a 404 error in chttpd, so we try to maintain
compatibility with CouchDB <= 3.x code.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Make sure to handle both `finished` and `pending` states when waiting for a
transient jobs. A transient job will go to the `failed` state if it cannot
fetch the filter from the source endpoint. For completeness, we also account
for `pending` states in there in the remote chance the job get rescheduled
again.
|
| |
| |
| |
| |
| | |
These are a few micro optimizations to avoid unnecessary work when
reading from a single reduce function during a view read.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|/
|
|
| |
This fixes compilation if CouchDB is used as a dependency.
|
|
|
|
|
| |
Caught during Elixir tests. I've added a unit test to `ebtree.erl` to
ensure we don't regress in the future.
|
|
|
|
|
| |
Job exits are asynchronous so we ensure we wait for exit signals to be handled
before checking the state.
|