Upgrading ElasticSearch can be quite challenging(at least for me it was). I talked about some other issues I had while upgrading before. Let's add another one to the list...
After installing ElasticSearch 8.1 I couldn’t get it started. Here is the error I got instead:
12:31:34 » Exception in thread "main" java.lang.RuntimeException: starting java failed with [1] 12:31:34 » output: 12:31:34 » 12:31:34 » error: 12:31:34 » Unrecognized VM option 'UseConcMarkSweepGC' 12:31:34 » Error: Could not create the Java Virtual Machine. 12:31:34 » Error: A fatal exception has occurred. Program will exit. 12:31:34 » at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:118) 12:31:34 » at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:86) 12:31:34 » at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59) 12:31:34 » at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:92)
This error refers to the following setting in my jvm.options
file.
But I didn’t do any changes to this file and I was using the OpenJDK distributation that was included with ElasticSearch itself!?
I did multiple attempts to fix this issue:
- I removed this line from the
jvm.options
file. - I added another options file to the
jvm.options.d
folder.
None of them made a difference. Finally I found the reason of this error…
I mentioned in the beginning that I was upgrading an ElasticSearch instance. As part of the previous installation an ES_PATH_CONF
environment variable was set that is used by ElasticSearch to specify where the configuration should be loaded from.
This environment variable was still pointing to the previous configuration folder(which I didn’t remove yet). The jvm.options file there was valid for the original JDK version but not for the one I was using now as part of the ElasticSearch 8.1 upgrade.
I updated the ES_PATH_CONF
environment variable to the correct location and finally the error disappeared.