Arlolra has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/171638

Change subject: Document the expected behaviour for the timeouts
......................................................................

Document the expected behaviour for the timeouts

Change-Id: I98145179a3828f0606167f88e392d377635609cf
---
M api/routes.js
1 file changed, 20 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/38/171638/1

diff --git a/api/routes.js b/api/routes.js
index 4c2f35f..f9edd4f 100644
--- a/api/routes.js
+++ b/api/routes.js
@@ -33,7 +33,24 @@
 var routes = {};
 
 
-// Helpers
+/**
+ * Timeouts
+ *
+ * The request timeout is a simple node timer that should fire first and catch
+ * most cases where we have long running requests to optimize.
+ *
+ * The CPU timeout handles the case where a child process is starved in a CPU
+ * bound task for too long and doesn't give node a chance to fire the above
+ * timer. At the beginning of each request, the child sends a message to the
+ * cluster master containing a request id. If the master doesn't get a second
+ * message from the child with the corresponding id by by CPU_TIMEOUT, it will
+ * send the SIGKILL signal to the child process.
+ *
+ * The above is susceptible false positives. Node spins one event loop, so
+ * multiple asynchronous requests will interfere with each others' timing.
+ *
+ * The CPU timeout is set to match the Varnish request timeout at 5 minutes.
+ */
 
 // Should be less than the CPU_TIMEOUT
 var REQ_TIMEOUT = 4 * 60 * 1000;  // 4 minutes
@@ -74,6 +91,8 @@
        });
 };
 
+// Helpers
+
 var promiseTemplateReq = function( env, target, oldid ) {
        return new Promise(function( resolve, reject ) {
                var tpr = new TemplateRequest( env, target, oldid );

-- 
To view, visit https://gerrit.wikimedia.org/r/171638
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I98145179a3828f0606167f88e392d377635609cf
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to