[Groonga-commit] groonga/gcs [master] Abort on Throttling

アーカイブの一覧に戻る

Yoji SHIDARA null+****@clear*****
Wed Nov 14 13:42:07 JST 2012


Yoji SHIDARA	2012-11-14 13:42:07 +0900 (Wed, 14 Nov 2012)

  New Revision: 42585167dfadb47b80f61de36a94b91b3364a30e
  https://github.com/groonga/gcs/commit/42585167dfadb47b80f61de36a94b91b3364a30e

  Log:
    Abort on Throttling

  Modified files:
    tools/run-scenarios
    tools/scenario-runner.js

  Modified: tools/run-scenarios (+5 -0)
===================================================================
--- tools/run-scenarios    2012-11-14 13:28:07 +0900 (7146f57)
+++ tools/run-scenarios    2012-11-14 13:42:07 +0900 (7546723)
@@ -125,4 +125,9 @@ runner.on('all:finish', function(event) {
 runner.on('error:status_unknown', function(event) {
   runner.client.raiseFatalError('Unknown status code ' + event.statusCode);
 });
+
+runner.on('error:throttling', function() {
+  runner.client.raiseFatalError('Hit rate limit. Further responses will be unreliable.');
+});
+
 runner.run(scenarios);

  Modified: tools/scenario-runner.js (+10 -0)
===================================================================
--- tools/scenario-runner.js    2012-11-14 13:28:07 +0900 (7997de4)
+++ tools/scenario-runner.js    2012-11-14 13:42:07 +0900 (f644109)
@@ -1,5 +1,6 @@
 var Client = require(__dirname + '/../lib/client').Client;
 var EventEmitter = require('events').EventEmitter;
+var xml2js = require('xml2js');
 
 var statusCodeTable = {
   500: 'Inetnal Server Error',
@@ -85,6 +86,15 @@ Runner.prototype._processScenario = function(scenario, callback) {
     var response = error || result;
 
     var statusCode = response.StatusCode;
+    if (statusCode == 400) {
+      var parser = new xml2js.Parser({explicitRoot: true});
+      parser.parseString(response.Body, function(error, result) {
+        var errorCode = result.ErrorResponse.Error.Code;
+        if (errorCode === 'Throttling') {
+          self.emit('error:throttling');
+        }
+      });
+    }
     if (!statusCodeTable[statusCode]) {
       self.emit('error:status_unknown', {statusCode: statusCode});
       if (callback)
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る