Allow patch level mismatch between Kibana and Elasticsearch

Kibana should be able to run against Elasticsearch nodes that are at the
same minor version regardless of whether they are at the same patch
version. In the event that their patch versions differ, we render a
warning.
This commit is contained in:
Court Ewing 2016-11-04 17:28:46 -04:00
parent bc118d9474
commit 79ea67f4c9
4 changed files with 11 additions and 17 deletions

View file

@ -32,7 +32,7 @@ _Note: The version numbers below are only examples, meant to illustrate the rela
| ES patch number is newer. | 5.1.__2__ | 5.1.__5__ | ⚠️ Logged warning |
| ES minor number is newer. | 5.__1__.2 | 5.__5__.0 | ⚠️ Logged warning |
| ES major number is newer. | __5__.1.2 | __6__.0.0 | 🚫 Fatal error |
| ES patch number is older. | 5.1.__2__ | 5.1.__0__ | 🚫 Fatal error |
| ES patch number is older. | 5.1.__2__ | 5.1.__0__ | ⚠️ Logged warning |
| ES minor number is older. | 5.__1__.2 | 5.__0__.0 | 🚫 Fatal error |
| ES major number is older. | __5__.1.2 | __4__.0.0 | 🚫 Fatal error |

View file

@ -17,10 +17,6 @@ describe('plugins/elasticsearch', () => {
it('when majors are equal, but ES minor is less than Kibana minor', () => {
expect(isEsCompatibleWithKibana('1.0.0', '1.1.0')).to.be(false);
});
it('when majors and minors are equal, but ES patch is less than Kibana patch', () => {
expect(isEsCompatibleWithKibana('1.1.0', '1.1.1')).to.be(false);
});
});
describe('returns true', () => {
@ -35,6 +31,10 @@ describe('plugins/elasticsearch', () => {
it('when majors and minors are equal, and ES patch is greater than Kibana patch', () => {
expect(isEsCompatibleWithKibana('1.1.1', '1.1.0')).to.be(true);
});
it('when majors and minors are equal, but ES patch is less than Kibana patch', () => {
expect(isEsCompatibleWithKibana('1.1.0', '1.1.1')).to.be(true);
});
});
});
});

View file

@ -5,7 +5,6 @@
import _ from 'lodash';
import esBool from './es_bool';
import semver from 'semver';
import isEsCompatibleWithKibana from './is_es_compatible_with_kibana';
/**
@ -37,9 +36,9 @@ module.exports = function checkEsVersion(server, kibanaVersion) {
return incompatibleNodes.push(esNode);
}
// It's acceptable if ES is ahead of Kibana, but we want to prompt users to upgrade Kibana
// to match it.
if (semver.gt(esNode.version, kibanaVersion)) {
// It's acceptable if ES and Kibana versions are not the same so long as
// they are not incompatible, but we should warn about it
if (esNode.version !== kibanaVersion) {
warningNodes.push(esNode);
}
});
@ -65,9 +64,9 @@ module.exports = function checkEsVersion(server, kibanaVersion) {
lastWarnedNodesForServer.set(server, warningNodeNames);
server.log(['warning'], {
tmpl: (
`You're running Kibana ${kibanaVersion} with some newer versions of ` +
'Elasticsearch. Update Kibana to the latest version to prevent compatibility issues: ' +
warningNodeNames
`You're running Kibana ${kibanaVersion} with some different versions of ` +
'Elasticsearch. Update Kibana or Elasticsearch to the same ' +
`version to prevent compatibility issues: ${warningNodeNames}`
),
kibanaVersion,
nodes: simplifiedNodes,

View file

@ -29,10 +29,5 @@ export default function isEsCompatibleWithKibana(esVersion, kibanaVersion) {
return false;
}
// Reject older patch versions of ES.
if (esVersionNumbers.patch < kibanaVersionNumbers.patch) {
return false;
}
return true;
}