summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-01-31Bump mem3 to 3.2.2HEADmasterRobert Newson
2013-01-31Bump chttpd to 1.4.6Robert Newson
2013-01-23Pin chttpd to 1.4.5Robert Newson
2012-12-07quick fix for badmatchRobert Newson
2012-11-15remove dreyfuswohali
2012-11-15Update couchjs for static build option, eliminate eval()wohali
2012-11-15use chttpd/master during developmentRobert Newson
2012-11-15Add twig to path for etap testsBob Dionne
Required to run 030-doc-from-json.t BugzID: 14419 Conflicts: Makefile
2012-11-15disable coverRobert Newson
2012-11-15Fix travis build?Robert Newson
2012-11-15Suppress duplicate access logsAdam Kocoloski
2012-11-15Use twig for loggingAdam Kocoloski
Conflicts: apps/couch/include/couch_db.hrl apps/couch/src/couch_server_sup.erl rebar.config rel/reltool.config
2012-11-15Add total_changes to view compaction statusRobert Newson
Conflicts: apps/couch/src/couch_view_compactor.erl
2012-11-15Fix design_document inconsistencyRobert Newson
Always report it as "design_document":"_design/foo" BugzID: 14562 Conflicts: apps/couch/src/couch_view_compactor.erl
2012-11-15Backport new /_active_tasks APIRobert Newson
Improved _active_tasks API Tasks are now free to set any properties they wish (as an Erlang proplist). Different tasks can have different properties and the status string doesn't exist anymore - instead client applications can build it using more granular properties from _active_tasks. Some of these properties are: 1) "progress" (an integer percentage, for all tasks) 2) "database" (for compactions and indexer tasks) 3) "design_document" (for indexer and view compaction tasks) 4) "source" and "target" (for replications) 5) "docs_read", "docs_written", "doc_write_failures", "missing_revs_found", "missing_revs_checked", "source_seq", "checkpointed_source_seq" and "continuous" for replications BugzID: 14269 Conflicts: apps/couch/src/couch_db_updater.erl apps/couch/src/couch_rep.erl apps/couch/src/couch_task_status.erl apps/couch/src/couch_view_compactor.erl apps/couch/src/couch_view_updater.erl
2012-11-14Don't touch the old couch_lru ets tableAdam Kocoloski
It doesn't exist. BugzID: 13299
2012-11-14Allow 202 as a valid status codeAdam Kocoloski
BugzID: 13940
2012-11-14Only close idle processes that have no clientPaul J. Davis
Previously we didn't check if an os_process was in use by a process before closing it. This ended up generating noproc errors in the couch_view_updaters which would then spider out to the couch_view_group processes causing client errors and resetting compaction. BugzId: 13798
2012-11-14Remove the client ref when it diesPaul J. Davis
We have observed periods of couchjs processes spiking into the hundreds and thousands for short periods of time since the new couch_proc_manager was released. Today I happened to catch one in the act and poked at couch_proc_manager's ets table. There seemed to be a few more couchjs processes with clients than I would have expected so I skimmed the code looking for a place where we didn't clear the client value (which would prevent it from being reused so that it would eventually just timeout). I found a case where if the Pid that checked out the process dies without the OS process dying, we were forgetting to clear the client in the ets table. This patch refactors the two places we return processes into a single function call which clears the OS process client.
2012-11-14Two last bugs in couch_proc_managerPaul J. Davis
* Design doc languages are converted to lists * Make sure to monitor every client correctly
2012-11-14Use a match_spec() instead of a match_pattern()Paul J. Davis
I misread the docs on what was expected for ets:select_receive/3.
2012-11-14Avoid scanning the entire table of procsPaul J. Davis
For large numbers of os processes its possible that we have a slowdown when requesting a new process. The old code matches all possible processes out of the table to find an appropriate candidate. We avoid the issue by using ets:select_reverse to also prefer keeping newer processes and releasing longer lived processes. Length of life is based on the implicit sorting of pids having newer pids sorting larger.
2012-11-14Mark proc as unused in ret_procAdam Kocoloski
Otherwise we'll never reuse it
2012-11-14Trigger a GC when OS process is returnedAdam Kocoloski
2012-11-14Allow processes to idle before exitingPaul J. Davis
When system load exceeds the ability of os_process_soft_limit to keep up with demand we enter a fork-use-kill (FUK) cycle. The constant spawning and destruction os these processes thrashes system resources and causes general instability. This patch changes the behavior from killing each process as its returned to letting it idle for a configurable amount of time (default five minutes) which allows it to be reused by other clients. This way we can avoid adding unnecessary load when demand for couchjs processes exceeds os_process_soft_limit. As a happy benefit this should also allow os_process_soft_limit to be set much lower since the number of processes will now more closely follow actual demand (instead of provisioning for the worst case scenario). Conflicts: apps/couch/src/couch_os_process.erl apps/couch/src/couch_proc_manager.erl Conflicts: apps/couch/src/couch_os_process.erl
2012-11-14Fork new OS processes outside proc_manager loopAdam Kocoloski
2012-11-14Add an index keyed on LRU for faster candidate IDAdam Kocoloski
Our current implementation for closing an LRU DB involves a full scan of a public ets table. This scan blocks all other activity in couch_server and can become a serious bottleneck when the LRU cache hit rate drops too low. In the worst-case all_dbs_active scenario we end up with O(N**2) algorithmic complexity. This patch adds a new index keyed on LRU for faster access to the least recently used databases. It also moves the ets table to a dict on the couch_server heap. The downside is an increased message rate inbound on the couch_server, as clients are no longer allowed to update the LRU data structures without sending a message. BugzID: 12879 Conflicts: apps/couch/src/couch_server.erl
2012-11-14Expose latest=true option in calls to retrieve revisionsBob Dionne
When a call is made to retrieve a specific revision, latest=true will retrieve any descendent leaves instead. This enables the replicator to better keep up with edits that occur whilst it's retrieving revisions BugzID: 14241
2012-11-14Skip ddoc pull, use middleman for validation resetAdam Kocoloski
We were pulling a list of design documents and then ignoring the result when the #db was a partition of a clustered database. Also, the call to fabric:reset_validation_funs/1 can occasionally cause a stray rexi_EXIT message to arrive in the db_updater mailbox (and subsequently kill the server) if a worker fails. I don't think that's desired behavior, though it's a debatable point. This patch spawns a middleman process to act as a sink for those stray messages. BugzID: 13087
2012-11-14Fix spurious declarations of new merge conflictsAdam Kocoloski
This patch also adds extra tests of the key tree merging logic as well as edoc-formatted documentation for the module and a few of the merge functions. Closes COUCHDB-902. Thanks Paul Davis, Bob Dionne, Klaus Trainer. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@1065471 13f79535-47bb-0310-9956-ffa450edef68
2012-11-14Support jsonp in externals.Robert Newson
Allow ?callback= for any external that returns json (i.e, uses "json":{} instead of "data":"data". BugzID: 12748
2012-11-14Bump dependenciesRobert Newson
2012-10-23don't delete view groups that fail to openRandall Leeds
...but log a message instead. Fixes COUCHDB-1445.
2012-10-03Support multiarch library paths on Linux.wohali
2012-09-18Bump dependenciesRobert Newson
2012-08-09Don't always require exactly N replies for an mp attachment PUTRobert Newson
It's not safe to assume we require, or will receive, exactly N replies (where N is read from the "n" key of the "cluster" section of the configuaration). This needs proper fabric-ification. This commit will at least allow replication tests with clusters of less than N nodes where the documents have attachments (which triggers the multipart code). BugzID: 14258
2012-08-08Bump dependenciesRobert Newson
2012-08-02Add _replication_statsRobert Newson
2012-06-19Bump couch_replicator to 0.1.2Robert Newson
2012-06-19Don't perform callbacks to couch_replicatorRobert Newson
2012-06-18Fix _replicator dbRobert Newson
2012-06-18Add a dummy replicate/3 for nowAdam Kocoloski
Conflicts: apps/couch/src/couch_rep.erl
2012-06-18Revert "allow replication callback module to be chosen at runtime."Robert Newson
This reverts commit faf9071260147275bbac1633b599e85b4a302e8b.
2012-06-16Fix URL for twigAdam Kocoloski
2012-06-16Fix deprecation warnings for port_compilerAdam Kocoloski
2012-06-16Update lots of dependenciesAdam Kocoloski
2012-06-16Bump rebar to version 2.0.0Adam Kocoloski
2012-04-25Merge pull request #105 from Asquera/fixes/gentoo-buildAdam Kocoloski
Allow building on Gentoo
2012-04-25Fix Build for GentooFelix Gilcher
Modify SConscript so that it recognizes the standard name for the mozjs/spidermonkey lib on gentoo.
2012-04-24WhitespaceBob Dionne