On 14 May 2009, at 03:17, Damien Katz wrote:

We have to both block and merge commits? It seems like we should only need to do one or the other, but not both.

We need block or merge a commit for any stable branch
(currently 0.9.x), depending on wether we like to have it
in the stable branch or not.

We could just not merge it, but explicitly blocking it makes
working with SVN and keeping track of unmerged and
unblocked commits easier. I.e. we can differentiate between
commits that have been considered to not be backported and
commits that have not been considered at all.

Cheers
Jan
--
Or a more geeky answer: A commit can be in one of three
states (for any given branch): Merged, blocked, and unprocessed.
A binary flag is not sufficient to record three states :)



-Damien

On May 13, 2009, at 8:54 PM, Jan Lehnardt wrote:

Hi Damien,

Can you take care of blocking / merging commits from / to
branches/0.9.x or should somebody else look after it? I'd
volunteer.

Cheers
Jan
--



On 13 May 2009, at 20:27, [email protected] wrote:

Author: damien
Date: Wed May 13 18:27:11 2009
New Revision: 774474

URL: http://svn.apache.org/viewvc?rev=774474&view=rev
Log:
Adding testing for GET /_changes?continuous=true by adding a GET / _sleep?time=Msecs call, which allows the browser to process the waiting data on the other async XHR request.

Modified:
couchdb/trunk/etc/couchdb/default.ini.tpl.in
couchdb/trunk/share/www/script/test/changes.js
couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl
couchdb/trunk/src/couchdb/couch_query_servers.erl

Modified: couchdb/trunk/etc/couchdb/default.ini.tpl.in
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/etc/couchdb/default.ini.tpl.in?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = ====================================================================
--- couchdb/trunk/etc/couchdb/default.ini.tpl.in (original)
+++ couchdb/trunk/etc/couchdb/default.ini.tpl.in Wed May 13 18:27:11 2009
@@ -60,6 +60,7 @@
_restart = {couch_httpd_misc_handlers, handle_restart_req}
_stats = {couch_httpd_stats_handlers, handle_stats_req}
_log = {couch_httpd_misc_handlers, handle_log_req}
+_sleep = {couch_httpd_misc_handlers, handle_sleep_req}

[httpd_db_handlers]
_compact = {couch_httpd_db, handle_compact_req}

Modified: couchdb/trunk/share/www/script/test/changes.js
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/changes.js?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = ====================================================================
--- couchdb/trunk/share/www/script/test/changes.js (original)
+++ couchdb/trunk/share/www/script/test/changes.js Wed May 13 18:27:11 2009
@@ -10,29 +10,85 @@
// License for the specific language governing permissions and limitations under
// the License.

+
couchTests.changes = function(debug) {
var db = new CouchDB("test_suite_db");
db.deleteDb();
db.createDb();
if (debug) debugger;

-
-  var req = CouchDB.newXhr();
-
-  req.open("GET", "/test_suite_db/_changes", false);
-  req.send("");
+  var req = CouchDB.request("GET", "/test_suite_db/_changes");
var resp = JSON.parse(req.responseText);

T(resp.results.length == 0 && resp.last_seq==0)

-  var doc = {_id:"foo", bar:1};
-  db.save(doc);
+  var docFoo = {_id:"foo", bar:1};
+  db.save(docFoo);

-  req.open("GET", "/test_suite_db/_changes", false);
-  req.send("");
+  req = CouchDB.request("GET", "/test_suite_db/_changes");
var resp = JSON.parse(req.responseText);

T(resp.results.length == 1 && resp.last_seq==1)
-  T(resp.results[0].changes[0].rev == doc._rev)
+  T(resp.results[0].changes[0].rev == docFoo._rev)
+
+  var xhr;
+
+  try {
+    xhr = CouchDB.newXhr();
+  } catch (err) {
+  }
+
+  if (xhr) {
+    // Only test the continuous stuff if we have a real XHR object
+    // with real async support.
+
+    var sleep = function(msecs) {
+ // by making a slow sync request, weallows the waiting XHR request data
+      // to be received.
+      var req = CouchDB.request("GET", "/_sleep?time=" + msecs);
+      T(JSON.parse(req.responseText).ok == true);
+    }
+
+    var parse_changes_line = function(line) {
+      if (line.charAt(line.length-1) == ",") {
+        line = line.substring(0, line.length-1);
+      }
+      return JSON.parse(line);
+    }
+
+ xhr.open("GET", "/test_suite_db/_changes?continuous=true", true);
+    xhr.send("");
+
+    var docBar = {_id:"bar", bar:1};
+    db.save(docBar);
+
+    sleep(100);
+    var lines = xhr.responseText.split("\n");
+
+    T(lines[0]='{"results":[');
+
+    var change = parse_changes_line(lines[1]);
+
+    T(change.seq == 1)
+    T(change.id == "foo")
+
+    change = parse_changes_line(lines[2]);
+
+    T(change.seq == 2)
+    T(change.id == "bar")
+    T(change.changes[0].rev == docBar._rev)
+
+    var docBaz = {_id:"baz", baz:1};
+    db.save(docBaz);
+
+    sleep(100);
+    var lines = xhr.responseText.split("\n");
+
+    change = parse_changes_line(lines[3]);
+
+    T(change.seq == 3);
+    T(change.id == "baz");
+    T(change.changes[0].rev == docBaz._rev);

+  }
};

Modified: couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = ==================================================================== --- couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl (original) +++ couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl Wed May 13 18:27:11 2009
@@ -15,7 +15,7 @@
-export([handle_welcome_req/2,handle_favicon_req/ 2,handle_utils_dir_req/2,
 handle_all_dbs_req/1,handle_replicate_req/1,handle_restart_req/1,
 handle_uuids_req/1,handle_config_req/1,handle_log_req/1,
-    handle_task_status_req/1]).
+    handle_task_status_req/1,handle_sleep_req/1]).

-export([increment_update_seq_req/2]).

@@ -56,6 +56,12 @@
handle_utils_dir_req(Req, _) ->
 send_method_not_allowed(Req, "GET,HEAD").

+handle_sleep_req(#httpd{method='GET'}=Req) ->
+    Time = list_to_integer(couch_httpd:qs_value(Req, "time")),
+    receive snicklefart -> ok after Time -> ok end,
+    send_json(Req, {[{ok, true}]});
+handle_sleep_req(Req) ->
+    send_method_not_allowed(Req, "GET,HEAD").

handle_all_dbs_req(#httpd{method='GET'}=Req) ->
 {ok, DbNames} = couch_server:all_databases(),

Modified: couchdb/trunk/src/couchdb/couch_query_servers.erl
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_query_servers.erl?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = ====================================================================
--- couchdb/trunk/src/couchdb/couch_query_servers.erl (original)
+++ couchdb/trunk/src/couchdb/couch_query_servers.erl Wed May 13 18:27:11 2009
@@ -278,7 +278,7 @@
 [{Pid, Lang}] ->
     case Status of
     normal -> ok;
- _ -> ?LOG_DEBUG("Linked process died abnromally: ~p (reason: ~p)", [Pid, Status]) + _ -> ?LOG_DEBUG("Linked process died abnormally: ~p (reason: ~p)", [Pid, Status])
     end,
     {ok, {
         Langs,







Reply via email to