Navigation Menu

Skip to content

Commit

Permalink
Report GATEWAY TIMEOUT error after 1 minute
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 20, 2015
1 parent c444f64 commit de81429
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions lib/adapter/http.js
Expand Up @@ -4,8 +4,10 @@ var api = require('./api');
var ConsoleLogger = require('../console-logger').ConsoleLogger;

var CONNECTION_RETRY_INTERVAL = 1000;
var MAX_RETRY_COUNT = 60;

var ERROR_INTERNAL = 500;
var ERROR_GATEWAY_TIMEOUT = 504;

function createRequestResponseHandler(params) {
params = params || {};
Expand Down Expand Up @@ -41,7 +43,7 @@ function createRequestResponseHandler(params) {
}
}

var processRequest = function(error) {
var processRequest = function(error, retryCount) {
if (error) {
var errorBody = {
error: error.message
Expand All @@ -55,9 +57,15 @@ function createRequestResponseHandler(params) {
if (!connection) {
// When the cluster members are changing, we cannot get
// actual connection for a member, so retry later.
retryCount = retryCount || 0;
if (retryCount >= MAX_RETRY_COUNT) {
response.status(ERROR_GATEWAY_TIMEOUT).jsonp(null);
}
else {
setTimeout(function() {
processRequest();
processRequest(null, retryCount + 1);
}, CONNECTION_RETRY_INTERVAL);
}
return;
}
var wrappedConnection = new wrapper.DroongaProtocolConnectionWrapper(connection, callback, options);
Expand Down Expand Up @@ -97,7 +105,7 @@ function createGenericHandler(params) {
if (typeof timeout != 'undefined')
options.timeout = timeout;

var processRequest = function(error) {
var processRequest = function(error, retryCount) {
if (error) {
var errorBody = {
error: error.message
Expand All @@ -111,9 +119,15 @@ function createGenericHandler(params) {
if (!connection) {
// When the cluster members are changing, we cannot get
// actual connection for a member, so retry later.
retryCount = retryCount || 0;
if (retryCount >= MAX_RETRY_COUNT) {
response.status(ERROR_GATEWAY_TIMEOUT).jsonp(null);
}
else {
setTimeout(function() {
processRequest();
processRequest(null, retryCount + 1);
}, CONNECTION_RETRY_INTERVAL);
}
return;
}

Expand Down

0 comments on commit de81429

Please sign in to comment.