Thingworx Installer Error Handling
Hi,
although in theory the option to install and upgrade Thingworx with an installation-routine is great, it has some catches in reality. Especially for upgrades.
I'm talking about the installation routine for windows. I have no idea how similiar the Linux version is.
Scenario: Windows Server 2016 with Java 8 and Thingworx 9.0 (Installed with Installation routine)
Goal: Change Java 8 to OpenJDK Amazon Corretto 11 and Update TWX to 9.1
I've switched my Java Version to Corretto 11 and follow the instructions. After that I've try to start tomcat again and it fails. After a bit of reasearch I noticed that following Tomcat parameter caused the error:
-Xlog:gc:file=<path>/ThingWorxFoundation/tomcat/current/logs/gc.log:time,level,tags
After removing it the Tomcat service starts just fine and I leave it be.
Now I try to install the TWX 9.1 update:
Starting up the installation routine I get the error that my Java Version is too old and I should change it. I'm confused about that message but I bravely ignore it and continue. (This is totally my fault and will result in a failed installation, but I will come to the later on).
I'm getting informations about my current Thingworx Installation which are not correct, because I originally installed Thingworx with SSL disabled and enabled it afterwards on port 443. I also disabled port 8080. As far as I know the informations are taken out of the "twxfoundation_report.json". So I abort the installation process and try to correct the information there (adjust port number and set "sslEnabled" to true). After that I try to start the installation process again and now getting the error "error in xmlFileGet action". Great... so I reversed the changes, open port 8080 for the update process and restart the procedure.
Now to the issue at hand: The error handling of the installation routine is horrible.
The update routine is doing all necessary tasks and finally get to the point, where it tries to connect to Thingworx. And lo and behold... it failed. And now it will revert all the changes. WHY? Just give me the option to fix the problem myself. The data is already written, the database changed... just stop there! 😞
The reason was that the above mentioned Tomcat parameter is added again during installation and will prevent the tomcat process from starting.
Due to the fact that the installer complained about the Java version at the beginning I switched back to my previous Oracle Java 8 version and just tried to start the installation routine again (without reverting the database or anything). The installer doesn't complain about the Java version and is starting the update process... and fails again - I think it was during the database updates (not sure about that).
Now it executes the rollback again (which is fine) but it removes the content of the "tomcat" folder! My Thingworx which was working fine after the first rollback is now totally broken.
What caused all this?
I've checked my Java version and noticed that I installed AWS Corretto 11.0.3 and not 11.0.8. Totally my mistake... I've downloaded the Java Version from this AWS page and didn't not double check the version. Because I thought it would be the latest version (like the URL suggests)... which is isn't apparently. This also might be the reason why the tomcat parameter isn't working properly.
What changes do I suggest for the Installer?
1. If an error occurs in the last part of the installation, while the installer tries to connect to the Thingworx platform, give the option to finish the installation without rollback!
2. Please fix the bug that the installer removes the content of the tomcat folder while rolling back changes. This is the second time that happened. It's always during the second (or third) attempt to update a previously failed update.
3. Please add the possibility to adjust options for the Installation before updating. (Ports, SSL options, ...)
Thank you. 🙂
