Permalink
Commits on Jul 22, 2015
  1. Update README.md

    rnewson committed Jul 22, 2015
Commits on Jun 24, 2015
  1. smaller message, no irc

    rnewson committed Jun 24, 2015
  2. Update README.md

    rnewson committed Jun 24, 2015
Commits on Jan 31, 2013
  1. Bump mem3 to 3.2.2

    Robert Newson committed Jan 31, 2013
  2. Bump chttpd to 1.4.6

    Robert Newson committed Jan 31, 2013
Commits on Jan 23, 2013
  1. Pin chttpd to 1.4.5

    Robert Newson committed Jan 23, 2013
Commits on Dec 7, 2012
  1. quick fix for badmatch

    Robert Newson committed Dec 7, 2012
Commits on Nov 15, 2012
  1. remove dreyfus

    wohali committed Nov 15, 2012
  2. use chttpd/master during development

    Robert Newson committed Nov 15, 2012
  3. Add twig to path for etap tests

    Bob Dionne committed with Robert Newson Aug 23, 2012
    Required to run 030-doc-from-json.t
    
    BugzID: 14419
    
    Conflicts:
    	Makefile
  4. disable cover

    Robert Newson committed Nov 15, 2012
  5. Fix travis build?

    Robert Newson committed Nov 15, 2012
  6. Suppress duplicate access logs

    kocolosk committed with Robert Newson Mar 16, 2011
  7. Use twig for logging

    kocolosk committed with Robert Newson Mar 10, 2011
    Conflicts:
    	apps/couch/include/couch_db.hrl
    	apps/couch/src/couch_server_sup.erl
    	rebar.config
    	rel/reltool.config
  8. Add total_changes to view compaction status

    Robert Newson committed Sep 4, 2012
    Conflicts:
    	apps/couch/src/couch_view_compactor.erl
  9. Fix design_document inconsistency

    Robert Newson committed Sep 4, 2012
    Always report it as "design_document":"_design/foo"
    
    BugzID: 14562
    
    Conflicts:
    	apps/couch/src/couch_view_compactor.erl
  10. Backport new /_active_tasks API

    Robert Newson committed Nov 14, 2012
    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
Commits on Nov 14, 2012
  1. Don't touch the old couch_lru ets table

    kocolosk committed with Robert Newson Feb 17, 2012
    It doesn't exist.
    
    BugzID: 13299
  2. Allow 202 as a valid status code

    kocolosk committed with Robert Newson Jun 13, 2012
    BugzID: 13940
  3. Only close idle processes that have no client

    davisp committed with Robert Newson May 28, 2012
    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
  4. Remove the client ref when it dies

    davisp committed with Robert Newson Feb 9, 2012
    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.
  5. Two last bugs in couch_proc_manager

    davisp committed with Robert Newson Jan 18, 2012
    * Design doc languages are converted to lists
    * Make sure to monitor every client correctly
  6. Use a match_spec() instead of a match_pattern()

    davisp committed with Robert Newson Jan 18, 2012
    I misread the docs on what was expected for ets:select_receive/3.
  7. Avoid scanning the entire table of procs

    davisp committed with Robert Newson Dec 19, 2011
    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.
  8. Mark proc as unused in ret_proc

    kocolosk committed with Robert Newson Dec 15, 2011
    Otherwise we'll never reuse it
  9. Trigger a GC when OS process is returned

    kocolosk committed with Robert Newson Dec 3, 2011
  10. Allow processes to idle before exiting

    davisp committed with Robert Newson Dec 3, 2011
    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
  11. Fork new OS processes outside proc_manager loop

    kocolosk committed with Robert Newson Dec 2, 2011
  12. Add an index keyed on LRU for faster candidate ID

    kocolosk committed with Robert Newson Feb 7, 2012
    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
  13. Expose latest=true option in calls to retrieve revisions

    Bob Dionne committed with Robert Newson Aug 7, 2012
    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
  14. Skip ddoc pull, use middleman for validation reset

    kocolosk committed with Robert Newson Dec 30, 2011
    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
  15. Fix spurious declarations of new merge conflicts

    kocolosk committed with Robert Newson Jan 31, 2011
    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
  16. Support jsonp in externals.

    Robert Newson committed Oct 18, 2011
    Allow ?callback= for any external that returns json (i.e,
    uses "json":{} instead of "data":"data".
    
    BugzID: 12748
  17. Bump dependencies

    Robert Newson committed Nov 14, 2012