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.
################################################################ | |
## Expert settings | |
################################################################ | |
## | |
## All settings below here are considered expert settings. Do | |
## not adjust them unless you understand what you are doing. Do | |
## not edit them in this file; instead, create a new file in the | |
## jvm.options.d directory containing your adjustments. | |
## | |
################################################################ | |
## GC configuration | |
8-13:-XX:+UseConcMarkSweepGC | |
8-13:-XX:CMSInitiatingOccupancyFraction=75 | |
8-13:-XX:+UseCMSInitiatingOccupancyOnly |
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.