From e40b731c7808889d2ba44ca1db60158bf905d782 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 11 Apr 2017 11:50:25 -0700 Subject: [PATCH 1/3] Restrict build info loading to ES jar, not any jar This change makes the build info initialization only try to load a jar manifest if it is the elasticsearch jar. Anything else (eg a repackaged ES for use of transport client in an uber jar) will contain "Unknown" for the build info as it does for tests currently. --- core/src/main/java/org/elasticsearch/Build.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/elasticsearch/Build.java b/core/src/main/java/org/elasticsearch/Build.java index a05a412a87027..639fd408b3f08 100644 --- a/core/src/main/java/org/elasticsearch/Build.java +++ b/core/src/main/java/org/elasticsearch/Build.java @@ -43,8 +43,9 @@ public class Build { final String date; final boolean isSnapshot; + final String esPrefix = "elasticsearch-" + Version.CURRENT; final URL url = getElasticsearchCodebase(); - if (url.toString().endsWith(".jar")) { + if (url.toString().endsWith(esPrefix + ".jar") || url.toString().endsWith(esPrefix + "-SNAPSHOT.jar")) { try (JarInputStream jar = new JarInputStream(FileSystemUtils.openFileURLStream(url))) { Manifest manifest = jar.getManifest(); shortHash = manifest.getMainAttributes().getValue("Change"); From 10f374e3616a5cabb5decd660d8c3e01b5447322 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 11 Apr 2017 23:21:04 -0700 Subject: [PATCH 2/3] Add check for file url --- core/src/main/java/org/elasticsearch/Build.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/Build.java b/core/src/main/java/org/elasticsearch/Build.java index 639fd408b3f08..84a80bb324b35 100644 --- a/core/src/main/java/org/elasticsearch/Build.java +++ b/core/src/main/java/org/elasticsearch/Build.java @@ -45,7 +45,8 @@ public class Build { final String esPrefix = "elasticsearch-" + Version.CURRENT; final URL url = getElasticsearchCodebase(); - if (url.toString().endsWith(esPrefix + ".jar") || url.toString().endsWith(esPrefix + "-SNAPSHOT.jar")) { + final String urlStr = url.toString(); + if (urlStr.startsWith("file://") && (urlStr.endsWith(esPrefix + ".jar") || urlStr.endsWith(esPrefix + "-SNAPSHOT.jar"))) { try (JarInputStream jar = new JarInputStream(FileSystemUtils.openFileURLStream(url))) { Manifest manifest = jar.getManifest(); shortHash = manifest.getMainAttributes().getValue("Change"); @@ -55,7 +56,7 @@ public class Build { throw new RuntimeException(e); } } else { - // not running from a jar (unit tests, IDE) + // not running from the official elasticsearch jar file (unit tests, IDE, uber client jar, shadiness) shortHash = "Unknown"; date = "Unknown"; isSnapshot = true; From a53ebae09bff55e306057025eab06a13e36b7c15 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 11 Apr 2017 23:50:43 -0700 Subject: [PATCH 3/3] fix url prefix check --- core/src/main/java/org/elasticsearch/Build.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/elasticsearch/Build.java b/core/src/main/java/org/elasticsearch/Build.java index 84a80bb324b35..bef9fafe3ca70 100644 --- a/core/src/main/java/org/elasticsearch/Build.java +++ b/core/src/main/java/org/elasticsearch/Build.java @@ -46,7 +46,7 @@ public class Build { final String esPrefix = "elasticsearch-" + Version.CURRENT; final URL url = getElasticsearchCodebase(); final String urlStr = url.toString(); - if (urlStr.startsWith("file://") && (urlStr.endsWith(esPrefix + ".jar") || urlStr.endsWith(esPrefix + "-SNAPSHOT.jar"))) { + if (urlStr.startsWith("file:/") && (urlStr.endsWith(esPrefix + ".jar") || urlStr.endsWith(esPrefix + "-SNAPSHOT.jar"))) { try (JarInputStream jar = new JarInputStream(FileSystemUtils.openFileURLStream(url))) { Manifest manifest = jar.getManifest(); shortHash = manifest.getMainAttributes().getValue("Change");