Multiple EWS or commit bots can pick up processing of the same patch
authorap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Sep 2014 23:33:04 +0000 (23:33 +0000)
committerap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Sep 2014 23:33:04 +0000 (23:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=136793

Reviewed by Ryosuke Niwa.

Change timeout from one hour to two hours. This will let bots finish, and in the
unlikely event of a bot being frozen, will only delay patch processing restart by
one hour.

* QueueStatusServer/app.yaml:
* QueueStatusServer/model/activeworkitems.py: (ActiveWorkItems.deactivate_expired):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@173587 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/QueueStatusServer/app.yaml
Tools/QueueStatusServer/model/activeworkitems.py

index a341cd4..97db2cd 100644 (file)
@@ -1,3 +1,17 @@
+2014-09-12  Alexey Proskuryakov  <ap@apple.com>
+
+        Multiple EWS or commit bots can pick up processing of the same patch
+        https://bugs.webkit.org/show_bug.cgi?id=136793
+
+        Reviewed by Ryosuke Niwa.
+
+        Change timeout from one hour to two hours. This will let bots finish, and in the
+        unlikely event of a bot being frozen, will only delay patch processing restart by
+        one hour.
+
+        * QueueStatusServer/app.yaml:
+        * QueueStatusServer/model/activeworkitems.py: (ActiveWorkItems.deactivate_expired):
+
 2014-09-11  Andy Estes  <aestes@apple.com>
 
         [WebKit2] WKImageCreateCGImage crashes when passed a null WKImage
index 3a0f48f..89215b4 100644 (file)
@@ -1,5 +1,5 @@
 application: webkit-queues
-version: 162358 # Bugzilla bug ID of last major change
+version: 173587 # Bugzilla bug ID of last major change
 runtime: python
 api_version: 1
 
index 023258a..bf34063 100644 (file)
@@ -79,8 +79,10 @@ class ActiveWorkItems(db.Model, QueuePropertyMixin):
         return db.run_in_transaction(self._expire_item, self.key(), item_id)
 
     def deactivate_expired(self, now):
-        one_hour_ago = time.mktime((now - timedelta(minutes=60)).timetuple())
-        nonexpired_pairs = [pair for pair in self._item_time_pairs() if pair[1] > one_hour_ago]
+        # If the patch is still active after this much time, then a bot must have frozen or rebooted,
+        # and dropped the patch on the floor. Let another bot pick it up.
+        two_hours_ago = time.mktime((now - timedelta(minutes=120)).timetuple())
+        nonexpired_pairs = [pair for pair in self._item_time_pairs() if pair[1] > two_hours_ago]
         self._set_item_time_pairs(nonexpired_pairs)
 
     def next_item(self, work_item_ids, now):