diff options
| -rw-r--r-- | share/www/script/test/stats.js | 19 | ||||
| -rw-r--r-- | src/couchdb/couch_db_updater.erl | 12 | 
2 files changed, 25 insertions, 6 deletions
| diff --git a/share/www/script/test/stats.js b/share/www/script/test/stats.js index cf2581e9..6e37e741 100644 --- a/share/www/script/test/stats.js +++ b/share/www/script/test/stats.js @@ -80,9 +80,24 @@ couchTests.stats = function(debug) {      var testFun = function() {        var pre_dbs = getStat("couchdb", "open_databases").current || 0;        var pre_files = getStat("couchdb", "open_os_files").current || 0; -       +      +      // We have to make sure that as we open the max'th database +      // that we've waited for more than 1 second since opening +      // the first database so that any delayed commits will be +      // flushed. +      var times = [];        for(var i = 0; i < max*2; i++) { -        newDb("test_suite_db_" + i, true); +        if(i >= max) { +          var msecs = (new Date()).getTime() - times[i-max]; +          if(msecs < 1000) { +            CouchDB.request("GET", "/_sleep?time=" + (msecs+250)); +          } +        } +        db = newDb("test_suite_db_" + i, true); +        times.push((new Date()).getTime()); +         +        // Trigger a delayed commit +        db.save({_id: "" + i, "lang": "Awesome!"});        }        var open_dbs = getStat("couchdb", "open_databases").current; diff --git a/src/couchdb/couch_db_updater.erl b/src/couchdb/couch_db_updater.erl index 94414f2e..1da07326 100644 --- a/src/couchdb/couch_db_updater.erl +++ b/src/couchdb/couch_db_updater.erl @@ -656,8 +656,10 @@ commit_data(#db{fd=Fd,header=OldHeader,fsync_options=FsyncOptions}=Db, Delay) ->      if OldHeader == Header ->          Db;      Delay and (Db#db.waiting_delayed_commit == nil) -> -        Db#db{waiting_delayed_commit= -                erlang:send_after(1000, self(), delayed_commit)}; +        Db2 = Db#db{waiting_delayed_commit= +                erlang:send_after(1000, self(), delayed_commit)}, +        ok = gen_server:call(Db2#db.main_pid, {db_updated, Db2}), +        Db2;      Delay ->          Db;      true -> @@ -680,9 +682,11 @@ commit_data(#db{fd=Fd,header=OldHeader,fsync_options=FsyncOptions}=Db, Delay) ->          _    -> ok          end, -        Db#db{waiting_delayed_commit=nil, +        Db2 = Db#db{waiting_delayed_commit=nil,              header=Header, -            committed_update_seq=Db#db.update_seq} +            committed_update_seq=Db#db.update_seq}, +        %ok = gen_server:call(Db2#db.main_pid, {db_updated, Db2}), +        Db2      end. | 
