CouchDB
  1. CouchDB
  2. COUCHDB-487

Pause write requests to allow compaction to complete

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Database Core
    • Labels:
      None
    • Skill Level:
      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

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Robert Newson
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development