Uploaded image for project: 'CouchDB'
  1. CouchDB
  2. COUCHDB-487

Pause write requests to allow compaction to complete

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • None
    • None
    • Database Core
    • None
    • Committers Level (Medium to Hard)

    Description

      Continuous writes will currently indefinitely prevent the compaction process from flipping over to the .compact file.

      Here's a small patch that adds a new db flag called 'write_available' which becomes false the first time compaction completes but fails to flip over because of concurrent writes. Subsequent calls to update_docs then sleep for 1/2 a second and throw retry.

      I ran 'ab -p json -n 1000000 http://localhost:5984/db1' in one window. Without this patch, I get a long sequence of;

      [info] [<0.64.0>] Compaction file still behind main file (update seq=1848. compact update seq=1845). Retrying.

      and compaction never completes.

      With the patch, I get this;

      [info] [<0.369.0>] 127.0.0.1 - - 'POST' /db1 201
      [info] [<0.65.0>] Compaction file still behind main file (update seq=2140. compact update seq=2092). Retrying.
      [info] [<0.65.0>] Blocking writes to complete compaction.
      [info] [<0.65.0>] Compaction for db "db1" completed.
      [info] [<0.370.0>] 127.0.0.1 - - 'POST' /db1 201

      Attachments

        Activity

          People

            Unassigned Unassigned
            rnewson Robert Newson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: