From bdf70d34869389e68380a65732696e831cecb7f9 Mon Sep 17 00:00:00 2001 From: Rashid Khan Date: Tue, 28 Apr 2015 12:03:18 -0700 Subject: [PATCH] Fix 100ms ping timeout. Closes #3643 --- src/server/config/index.js | 28 ++++++++++++++++++---------- src/server/config/kibana.yml | 3 +++ src/server/lib/waitForEs.js | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/server/config/index.js b/src/server/config/index.js index 296d601d897bfa..f5b3cc8bfcfe11 100644 --- a/src/server/config/index.js +++ b/src/server/config/index.js @@ -16,6 +16,17 @@ function checkPath(path) { } } +// Set defaults for config file stuff +kibana.port = kibana.port || 5601; +kibana.host = kibana.host || '0.0.0.0'; +kibana.elasticsearch_url = kibana.elasticsearch_url || 'http://localhost:9200'; +kibana.maxSockets = kibana.maxSockets || Infinity; +kibana.log_file = kibana.log_file || null; + +kibana.request_timeout = kibana.startup_timeout == null ? 0 : kibana.request_timeout; +kibana.ping_timeout = kibana.ping_timeout == null ? kibana.request_timeout : kibana.ping_timeout; +kibana.startup_timeout = kibana.startup_timeout == null ? 5000 : kibana.startup_timeout; + // Check if the local public folder is present. This means we are running in // the NPM module. If it's not there then we are running in the git root. var public_folder = path.resolve(__dirname, '..', 'public'); @@ -33,13 +44,10 @@ try { packagePath = path.resolve(__dirname, '..', '..', '..', 'package.json'); } -var requestTimeout = kibana.request_timeout || 0; -var pingTimeout = kibana.ping_timeout == null ? requestTimeout : kibana.ping_timeout; - var config = module.exports = { - port : kibana.port || 5601, - host : kibana.host || '0.0.0.0', - elasticsearch : kibana.elasticsearch_url || 'http://localhost:9200', + port : kibana.port, + host : kibana.host, + elasticsearch : kibana.elasticsearch_url, root : path.normalize(path.join(__dirname, '..')), quiet : false, public_folder : public_folder, @@ -49,10 +57,10 @@ var config = module.exports = { package : require(packagePath), htpasswd : htpasswdPath, buildNum : '@@buildNum', - maxSockets : kibana.maxSockets || Infinity, - log_file : kibana.log_file || null, - request_timeout : requestTimeout, - ping_timeout : pingTimeout + maxSockets : kibana.maxSockets, + log_file : kibana.log_file, + request_timeout : kibana.request_timeout, + ping_timeout : kibana.ping_timeout }; config.plugins = listPlugins(config); diff --git a/src/server/config/kibana.yml b/src/server/config/kibana.yml index 55db3f185abc4e..bbbfd5b976d0fe 100644 --- a/src/server/config/kibana.yml +++ b/src/server/config/kibana.yml @@ -45,6 +45,9 @@ request_timeout: 300000 # Set to 0 to disable. shard_timeout: 0 +# Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying +# startup_timeout: 5000 + # Set to false to have a complete disregard for the validity of the SSL # certificate. verify_ssl: true diff --git a/src/server/lib/waitForEs.js b/src/server/lib/waitForEs.js index 1b8c96366c8d37..52a4e830761b44 100644 --- a/src/server/lib/waitForEs.js +++ b/src/server/lib/waitForEs.js @@ -6,7 +6,7 @@ var logger = require('./logger'); var config = require('../config'); function waitForPong() { - return client.ping() + return client.ping({requestTimeout: config.kibana.startup_timeout}) .catch(function (err) { if (!(err instanceof NoConnections)) throw err;