Commits on Mar 26, 2012
  1. Error out on first failure

    davisp committed Mar 26, 2012
  2. Signficantly simplify the auth cache

    davisp committed Mar 26, 2012
    The old cache was overly complicated for doing what it does. This new
    version does introduce a race condition on cache invalidation because
    the update has to go through the even notification and then the changes
    feed needs to be processed. In the future we should generalize the db
    hook functions and turn it into a write through cache. Until then I just
    added a short wait in the tests.
  3. Update couch_file to batch read and write requests

    davisp committed Mar 10, 2012
    This uses a trick with gen_server timeouts to collect all of the
    messages in the mailbox before issuing IO requests. This allows us to
    dedupe read requests as well as make bulk read and write requests
    through the IO driver.
    By default the read bulk size is limited to 100 simultaneous requests
    and asyncronous writes are disabled completely. couch_file:open/2 now
    takes three new options `{read_buffer, N}`, `async`, and
    `{async_buffer, N}`. The `read_buffer` option determines the number of
    de-duped read requests to buffer at once. The `async_writes` option
    turns on async writes with a write buffer of 10MiB. The second form of
    the `async_buffer` option allows this buffer size to be configured by
    the client.
    Its also important to note that this buffering only takes effect under
    load when the couch_file gen_server has multiple messages in its
    mailbox. Ie, if you send a single read request to the couch_file it will
    return immediately with a response. Although, if a number of concurrent
    processes send a large number of messagse at once, these buffering rules
    will take effect and start processing messages faster.
  4. Refactor couch_file

    davisp committed Mar 10, 2012
    This patch makes zero behavior changes to couch_file operations and
    merely serves to clean up the code before some bigger behavior changes.
    Points of interest in this patch:
      * Zero behavior changes
      * Remove non-standard comments
      * Consistent white space
      * Sanitize function ordering to match both the exports
        and the public/gen_server/private pattern
      * Sanitize indentation on simpler functions
      * Corrected the gen_server boot to use proc_lib directly
  5. Refactor couch_server for performance

    davisp committed Mar 20, 2012
    This is a backport of a change in BigCouch that changes the behaviour of
    couch_server to be more performant as well as be more robust under heavy
    There are two main parts to this change. First, it removes the need to
    have synchronous message passing between the couch_server gen_server and
    every process that wants to open a database that is already open. It
    does this by using a protected ets table that is used to by pass having
    to talk directly to couch_server.
    The second major portion of this patch rewrites the LRU handling inside
    couch_server so that it doesn't turn into an N^2 loop when the
    max_dbs_limit is reached and all databases are in use.
  6. Remove couch_ref_counter and use process monitors

    davisp committed Mar 20, 2012
    This patch removes the ref counting code that used process links and a
    gen_server to manage when databases are idle. This is important ground
    work for the refactoring of couch_server which relies on having a sane
    interface to managing database.
    This code has two major parts. The first part removes the gen_server
    from couch_db.erl and instead relies on checking who's monitoring the
    database's couch_file gen_server. The database is idle when this list
    only includes the updater and possible the couch_stats_collector which
    monitors open databases.
    The second half is how couch_file's are managed by listening for who is
    monitoring them. If they're monitored by only zero or one process then
    they close themselves. This allows for the semantics of staying open
    long enough to handle any current connections while being replaced with
    a new couch_file (ie, due to compaction).
  7. Remove second fd from couch_db_updater

    davisp committed Mar 20, 2012
    This reverts the change to use a second file descriptor for
    couch_db_udpaters to split read and writes. This is ground work for the
    next few patches that change how databases are managed.
  8. Improve the CLI JavaScript stack formating

    davisp committed Mar 22, 2012
    This dresses up the output of the JavaScript tests by making sure the
    output is sane. Most of the issue was that the tracebak prints function
    arguments which can include the entire source of the test.
    This also tries to print the source file and line number nicely so that
    we can find right where errors have occurred. Its proven quite useful
    while fixing JavaScript tests.
  9. Fix race condition in the auth db creation

    davisp committed Mar 25, 2012
    This test deletes a database and then tries to go and write to it
    without ensuring that it exists. This is just a race with the auth cache
    code trying to recreate its own database. This addition just makes sure
    it exists by trying to create it and ignoring any 412 errors if the auth
    cache won the race.
  10. Fix random failures in replication.js test

    davisp committed Mar 25, 2012
    This should fix the random failures for the 'expected "25" got "31"
    error message that pops up occasionally. If my hunch is correct when we
    remove the two docs from the source db its possible to get the writes on
    the target out of order depending on a race condition.
    This just sleeps a bit in between the deletions to try and reduce that
    possibility. I haven't spotted this error after applying this patch.
Commits on Mar 13, 2012
  1. [docs] bring README, THANKS, AUTHORS up to date for 1.2.0

    dch committed Mar 13, 2012
    - correct Firefox test suite usage notes
  2. Remove unused imports

    bitdiddle committed Mar 13, 2012
Commits on Mar 12, 2012
  1. update NEWS and CHANGES

    janl committed Mar 12, 2012
  2. Whitespace

    bitdiddle committed Mar 12, 2012
Commits on Mar 8, 2012
  1. Add 100ms sleep to etap:end_tests() to prevent hanging

    bitdiddle committed Mar 8, 2012
    It's not clear if this is etap, escript, prove, or couchdb.
    This needs further investigation.
  2. Whitespace

    bitdiddle committed Mar 8, 2012
  3. [docs] compression is enabled by default and bumps on-disk version

    dch committed Mar 8, 2012
    - updated NEWS and CHANGES
Commits on Mar 3, 2012
  1. update NEWS & CHANGES

    janl committed Mar 3, 2012
Commits on Mar 2, 2012
  1. Make icu_driver compatible with interface changes in R15B.

    janl committed Feb 27, 2012
    Erlang R15B redefines* the signature for the driver control callback to
    use its own special ssize_t type. This just adds a conditional based on
    the definition of ERL_DRV_EXTENDED_MAJOR_VERSION to pick the right type.
Commits on Feb 29, 2012
  1. Move myself from THANKS to AUTHORS

    Jason Smith (air)
    Jason Smith (air) committed Feb 29, 2012
Commits on Feb 22, 2012
  1. Improving README

    nslater committed Feb 22, 2012
  2. Make sure doubles parse as doubles

    davisp committed Feb 22, 2012
    Simple check that doubles are serialized in such a way that they'll by
    parsed as doubles by most implementations.
  3. Fix fold reduce with non-inclusive end key

    fdmanana committed Feb 18, 2012
    Fold reducing a btree with with end_key_gt was not producing
    the correct values. For example, for view queries with startkey
    and starkey_docid and/or endkey and endkey_docid and inclusive_end
    set to false, the doc ID component of the view keys was not
    Example query:
    Closes COUCHDB-1413
Commits on Feb 21, 2012
  1. make /_users/_changes admin-only

    janl committed Feb 16, 2012
Commits on Feb 18, 2012
  1. COUCHDB-1381 - Don't call alert() from jquery.couch.js

    sbisbee authored and rnewson committed Feb 18, 2012
    jquery.couch.js is a javascript library and should not assume it's
    running inside a browser. Particularly, it should not call
    alert(). Instead it should throw an exception.
Commits on Feb 16, 2012
  1. Update CoffeeScript to 1.2.0

    janl committed Feb 16, 2012
Commits on Feb 13, 2012
  1. Add artificial delay to admin-creation to work around WebKit

    janl committed Feb 13, 2012
    WebKit browsers seem to execute the success callback too fast for
    CouchDB to complete the _config PUT for creating admins. We'll
    be waiting for 200ms to let CouchDB catch up.
  2. fix whitespace

    janl committed Feb 13, 2012
Commits on Feb 9, 2012
  1. JSON encode start seq number in _changes requests

    fdmanana committed Feb 9, 2012
    This ensures replication from BigCouch 0.4 works.