summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorAdam Kocoloski <kocolosk@apache.org>2009-08-15 01:55:32 +0000
committerAdam Kocoloski <kocolosk@apache.org>2009-08-15 01:55:32 +0000
commitbff8b7d9751fad8319124fbfa238446170885b21 (patch)
tree0e0883ab715ddda6a132eb247240a7d9f0a0f370 /share
parent3180e5aa8541d7969c95296607989c88056b598e (diff)
delayed commits are now a config option, off by default. Closes COUCHDB-449
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@804427 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'share')
-rw-r--r--share/www/script/test/delayed_commits.js106
1 files changed, 58 insertions, 48 deletions
diff --git a/share/www/script/test/delayed_commits.js b/share/www/script/test/delayed_commits.js
index 27ef24c8..80d345b1 100644
--- a/share/www/script/test/delayed_commits.js
+++ b/share/www/script/test/delayed_commits.js
@@ -16,79 +16,86 @@ couchTests.delayed_commits = function(debug) {
db.createDb();
if (debug) debugger;
- // By default, couchdb doesn't fully commit documents to disk right away,
- // it waits about a second to batch the full commit flush along with any
- // other updates. If it crashes or is restarted you may lose the most
- // recent commits.
+ run_on_modified_server(
+ [{section: "couchdb",
+ key: "delayed_commits",
+ value: "true"}],
- T(db.save({_id:"1",a:2,b:4}).ok);
- T(db.open("1") != null);
+ function () {
+ // By default, couchdb doesn't fully commit documents to disk right away,
+ // it waits about a second to batch the full commit flush along with any
+ // other updates. If it crashes or is restarted you may lose the most
+ // recent commits.
- restartServer();
+ T(db.save({_id:"1",a:2,b:4}).ok);
+ T(db.open("1") != null);
- T(db.open("1") == null); // lost the update.
- // note if we waited > 1 sec before the restart, the doc would likely
- // commit.
+ restartServer();
+ T(db.open("1") == null); // lost the update.
+ // note if we waited > 1 sec before the restart, the doc would likely
+ // commit.
- // Retry the same thing but with full commits on.
- var db2 = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"true"});
+ // Retry the same thing but with full commits on.
- T(db2.save({_id:"1",a:2,b:4}).ok);
- T(db2.open("1") != null);
+ var db2 = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"true"});
- restartServer();
+ T(db2.save({_id:"1",a:2,b:4}).ok);
+ T(db2.open("1") != null);
- T(db2.open("1") != null);
+ restartServer();
- // You can update but without committing immediately, and then ensure
- // everything is commited in the last step.
+ T(db2.open("1") != null);
- T(db.save({_id:"2",a:2,b:4}).ok);
- T(db.open("2") != null);
- T(db.ensureFullCommit().ok);
- restartServer();
+ // You can update but without committing immediately, and then ensure
+ // everything is commited in the last step.
- T(db.open("2") != null);
+ T(db.save({_id:"2",a:2,b:4}).ok);
+ T(db.open("2") != null);
+ T(db.ensureFullCommit().ok);
+ restartServer();
- // However, it's possible even when flushed, that the server crashed between
- // the update and the commit, and you don't want to check to make sure
- // every doc you updated actually made it to disk. So record the instance
- // start time of the database before the updates and then check it again
- // after the flush (the instance start time is returned by the flush
- // operation). if they are the same, we know everything was updated
- // safely.
+ T(db.open("2") != null);
- // First try it with a crash.
+ // However, it's possible even when flushed, that the server crashed between
+ // the update and the commit, and you don't want to check to make sure
+ // every doc you updated actually made it to disk. So record the instance
+ // start time of the database before the updates and then check it again
+ // after the flush (the instance start time is returned by the flush
+ // operation). if they are the same, we know everything was updated
+ // safely.
- var instanceStartTime = db.info().instance_start_time;
+ // First try it with a crash.
- T(db.save({_id:"3",a:2,b:4}).ok);
- T(db.open("3") != null);
+ var instanceStartTime = db.info().instance_start_time;
- restartServer();
+ T(db.save({_id:"3",a:2,b:4}).ok);
+ T(db.open("3") != null);
- var commitResult = db.ensureFullCommit();
- T(commitResult.ok && commitResult.instance_start_time != instanceStartTime);
- // start times don't match, meaning the server lost our change
+ restartServer();
- T(db.open("3") == null); // yup lost it
+ var commitResult = db.ensureFullCommit();
+ T(commitResult.ok && commitResult.instance_start_time != instanceStartTime);
+ // start times don't match, meaning the server lost our change
- // retry with no server restart
+ T(db.open("3") == null); // yup lost it
- var instanceStartTime = db.info().instance_start_time;
+ // retry with no server restart
- T(db.save({_id:"4",a:2,b:4}).ok);
- T(db.open("4") != null);
+ var instanceStartTime = db.info().instance_start_time;
- var commitResult = db.ensureFullCommit();
- T(commitResult.ok && commitResult.instance_start_time == instanceStartTime);
- // Successful commit, start times match!
+ T(db.save({_id:"4",a:2,b:4}).ok);
+ T(db.open("4") != null);
- restartServer();
+ var commitResult = db.ensureFullCommit();
+ T(commitResult.ok && commitResult.instance_start_time == instanceStartTime);
+ // Successful commit, start times match!
- T(db.open("4") != null);
+ restartServer();
+
+ T(db.open("4") != null);
+ });
// Now test that when we exceed the max_dbs_open, pending commits are safely
// written.
@@ -96,6 +103,9 @@ couchTests.delayed_commits = function(debug) {
var max = 2;
run_on_modified_server(
[{section: "couchdb",
+ key: "delayed_commits",
+ value: "true"},
+ {section: "couchdb",
key: "max_dbs_open",
value: max.toString()}],