mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 01:45:44 +03:00
client/fingerprint/java: improve java version string regex matching
This PR improves the regular expression used for matching the java version string, which varies a lot depending on the java vendor and version. These are the example strings we now test for: java version "1.7.0_80" openjdk version "11.0.1" 2018-10-16 openjdk version "11.0.1" 2018-10-16 java version "1.6.0_36" openjdk version "1.8.0_192" openjdk 11.0.11 2021-04-20 LTS The last one is a new test added on behalf of #6081, which is still broken on today's CentOS 7 default JDK package. openjdk 11.0.11 2021-04-20 LTS OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing) ==> Evaluation "21c6caf7" finished with status "complete" but failed to place all allocations: Task Group "example" (failed to place 1 allocation): * Constraint "${driver.java.version} >= 11.0.0": 1 nodes excluded by filter Evaluation "2b737d48" waiting for additional capacity to place remainder Fixes #6081
This commit is contained in:
@@ -50,6 +50,10 @@ func javaVersionInfo() (version, runtime, vm string, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
javaVersionRe = regexp.MustCompile(`([.\d_]+)`)
|
||||
)
|
||||
|
||||
func parseJavaVersionOutput(infoString string) (version, runtime, vm string) {
|
||||
infoString = strings.TrimSpace(infoString)
|
||||
|
||||
@@ -65,8 +69,7 @@ func parseJavaVersionOutput(infoString string) (version, runtime, vm string) {
|
||||
|
||||
versionString := strings.TrimSpace(lines[0])
|
||||
|
||||
re := regexp.MustCompile(`version "([^"]*)"`)
|
||||
if match := re.FindStringSubmatch(lines[0]); len(match) == 2 {
|
||||
if match := javaVersionRe.FindStringSubmatch(versionString); len(match) == 2 {
|
||||
versionString = match[1]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user