Unable to upgrade 8.73 to 9.2 (Windows)

DirkM2012
Contributor

Hi there,

I spend the last 7 days trying to upgrade my JSS (running on Windows 2008 R2) from 8.73 to 9.2. On my production server the upgrade fails with a MSI error message and then rolls back (leaving no JSS installed under Add/remove programs). I was always able to re install 8.72 though and JSS 8.73 works fine on the production server.

On my test server I installed JSS 8.73, restored the production database (all working fine at this point). I then run the 9.2 installer which completes without error and try to complete the initial setup (why do I have to do the initial setup again with license key and local user and such?). After the initial setup I only get white page and when I refresh the page I get this:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException com.jamfsoftware.jss.frontend.JSSAccessFilter.isAccessible(JSSAccessFilter.java:108) com.jamfsoftware.jss.frontend.JSSAccessFilter.doFilter(JSSAccessFilter.java:52) com.jamfsoftware.jss.frontend.JSSLoadingFilter.doFilter(JSSLoadingFilter.java:128)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.

MySQL is version 5.5.24, Java is 7u45 and the OS is 2008 R2 (fully patched).

I even tried to install JSS manually but that doesn't make much difference.

Any hints on what to do next to get 9.2 running would be appreciated.

Thanks,
Dirk

11 REPLIES 11

DirkM2012
Contributor

I played a little more with the 9.2 upgrade on the test server and it seems that after a successful upgrade to 9.2, no 8.x JSS can access the database anymore. That leaves the question on timing for my dual server setup: I have one server in the data center and another server in the DMZ. The DMZ server access the MySQL database on the server running in the data center. It looks like I have to upgrade both servers at the same time, hoping that the upgrade succeeds on both servers. if it fails and I have to go back to 8.73 I will need to restore the database backup that I have created under 8.73. Is this correct?

bentoms
Release Candidate Programs Tester

@dmatth01 there are massive changes to the DB from v8-v9.

There should be a video up in the coming days from JNUC2013... But I think the advice is to update the master & the the clustered clients.

But you will & do need each on the same version.

DirkM2012
Contributor

That's what I thought. Which is not a big deal if everything works as expected. But that's not the case right now.

On the production server I get the following message when I try to upgrade 8.73 to 9.2:

There is a problem with this Windows Installer package. A script required for this install to complete could not be run. Contact your support personnel or package vendor.

At this point JSS 8.73 has been uninstalled but Tomcat is running. I can see C:Program FilesJSSTomcatwebappsROOT.war and the C:Program FilesJSSTomcatwebappsROOT folder but trying to access JSS returns an error "The requested resource is not available.".

I can re-install 8.73, the install completes successfully and I can access JSS with all the data available.

So, the question is, what log file will tell me what script did not run and why did it not run?

bentoms
Release Candidate Programs Tester

@dmatth01

Sorry I run a mac only JSS. Hopefully someone else can assist.

Have you reached out to support?

DirkM2012
Contributor

Nope, not yet. I don't like if I can't figure stuff out that should be easy and straight forward.

So, as a last test for today, I downloaded the manual installation files for 9.2. Assuming that everything should be set up properly (8.73 is working fine), I stopped Tomcat, renamed webapps to webapps.old, created a new webapps folder and copied the root.war from the 9.2 manual install to that folder. After starting Tomcat I can see the Root folder being created. When I access my server I see the initial setup screens, enter my company name and license key, create anew local user and then nothing, just a blank page. Reloading the page returns this:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException com.jamfsoftware.jss.frontend.JSSAccessFilter.isAccessible(JSSAccessFilter.java:108) com.jamfsoftware.jss.frontend.JSSAccessFilter.doFilter(JSSAccessFilter.java:52) com.jamfsoftware.jss.frontend.JSSLoadingFilter.doFilter(JSSLoadingFilter.java:128)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.40 logs.

Apache Tomcat/7.0.40

Restoring the old webapps folder bring JSS 8.73 back, so that's good but doesn't help to get 9.2 running.

I guess I will have to open a case with support to have this looked into.

ernstcs
Contributor III

Hey @dmatth01, I had the same issue. If you're running Windows Server 2008 R2, this is what I got from support and it did work for me to get my system up to 9.2. I've only done this in my test environment thus far. However, this process would require you to restore an older database version into 9. I asked a follow-up question to that, but haven't heard back. I read someone else state they've put an 8.73 database into 9.x and haven't seen issues, but I won't be doing that until JAMF says that's cool because of all the database changes. Perhaps the database utility handles that.

We will start by completely uninstalling Java from the server. ZFDvftIA1b8Wl6XBHIu5 c. Delete any lingering Java folders in Program Files 3SWCopF89te3TwNDmdFD Java SE Development Kit (JDK) v7:http://www.oracle.com/technetwork/java/javase/downloads/index.html Java Cryptography Extension (JCE) v7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html pdUV4BPCBEP4Oj5ULQZT Right click on the Computer icon on your desktop (or in the START menu) and select properties Click Advanced system settings (blue link on the left) Click the Environment Variables button Under 'System Variable', we can either edit pre-existing path values, or add 'New...' ones Specifically we want to ensure that the JAVA_HOME and JRE_HOME are pointed to the correct paths respectively. JRE_HOME: C:Program FilesJavaJRE6 or JRE7 JAVA_HOME: C:Program FilesJavajdk1.x_x_x Once finished, Click OK Click Apply Changes Restart the server for these changes to take effect. After this go to C:Program FilesJSS and back that folder up (copy it to the desktop or something). After it's backed up delete all the directories inside that so only the JSS folder is left. Once all we have left is that empty JSS folder, right clicked on that JSS Folder >> Properties >> Un-checked "Read-only....". Now turn off any firewall that you might have on this server. Once Java has been uninstalled and re-installed, the JSS folder has been setup as above and any firewalls are off go ahead and re-run the installer. Let us know what you find when you can, thanks!

Make sure you turn your firewall back on.

DirkM2012
Contributor

Thanks ernstcs for the steps, unfortunately did this not solve my issue either.

I uninstalled all java, removed all files/folders left behind, rebooted. Then I installed JDK 7u45 and set the variables to the following:
JRE_HOME: C:Program FilesJavaJRE7
JAVA_HOME: C:Program FilesJavajdk1.7.0_45

Another reboot, the variables were still there. I backed up my JSS folder, deleted everything inside and removed the read-only flag. I did not uninstall JSS 8.73.

I ran the 9.20 installer and watched what it did. The JSS installer removes the JAVA_HOME variable a few seconds after it starts installing/starting Tomcat. The Windows Installer error message appeared again after after clicking OK, JAVA_HOME is being restored.

Without further changes I could install 8.73 but the 9.20 install failed as in all other attempts.

I have scheduled a called with support now for tomorrow morning, maybe we can track down the issue together and find a log file that actually says why the install is failing.

willjac037
New Contributor II

I had a similar issue going from 9 to 9.12.

After multiple re-installs this worked for me

- DISABLE ANTI-VIRUS (mine was running Mcafee)
- Stop tomcat service
- Uninstall JSS
- Remove JSS folder in Program Files
- Uninstall Java JDK
- Re-install Java JDK and Java JCE (JDK 7 didn't work but an older JDK 6 did)
- Install JSS

ernstcs
Contributor III

@dmatth01 - I also forget to mention the log file you were asking about. I tried several different things today with no success. Granted, I did get to 9.2, but not with my database in tact or upgraded properly. Will try more tomorrow and watch for your replies.

I'm happy that I have this test server in a VM so I can revert back to a snapshot before upgrading so I can practice going through a process that ends up working and documenting it well before doing production.

The log: Server Manager -> Diagnostics -> Event Viewer -> Windows Logs -> Application

I'm hoping yours dies in the same place mine always seems to:

Error 1720. There is a problem with this Windows Installer package. A script required for this install to complete could not be run. Contact your support personnel or package vendor. Custom action initTomcatAsUpgrade.vbs script error -2146828235, Microsoft VBScript runtime error: File not found Line 272, Column 3,

Also saw this one:

Windows Installer installed the product. Product Name: JSS. Product Version: 9.20. Product Language: 1033. Manufacturer: JAMF Software, LLC. Installation success or error status: 1603.

I submitted that to support initially, but they never told me what the specific line in the VBS file is doing, or rather not finding. Fix that file and I'm guessing several people will be happy later.

Based on what @willjac037 wrote, I'm not running McAfee, but I hadn't disabled System Center 2012 Endpoint Protection on the server. Also was attempting with JDK 7 no5 JDK 6. Thanks, Will. More things to look at.

Bray
New Contributor

@ernstcs This put my upgrade back on track, thank you!!

DISAdmin
New Contributor

I had the same issue upgrading on Windows Server from 9.21 to 9.22. I kept getting the following error in the logs.

Error 1720. There is a problem with this Windows Installer package. A script required for this install to complete could not be run. Contact your support personnel or package vendor. Custom action initTomcatAsUpgrade.vbs script error -2146827864, Microsoft VBScript runtime error: Object required: 'Elem.firstChild' Line 322, Column 3,

I was able to get into the MSI using the Orca tool and pulled out the initTomcatAsUpgrade.vbs file to see what was causing the error. Here is what I found.

It appears that during installation, a settings XML file named "com.jamfsoftware.jss.settings.xml" gets created in the WindowsTemp directory. Following that, the initTomcatAsUpgrade.vbs script tries to read the <minMem> and <maxMem> values from it to set memory allocations for Java with the following code.

Function getTagValue(xmltag) Dim xmlDoc, xmlCol, xmlPath xmlPath = tempFolderPath & "" & jssSettingsBackupFile set xmlDoc = createobject("Microsoft.XMLDOM") set xmlCol = xmldoc.getElementsByTagName(xmltag) xmlDoc.async = "false" xmlDoc.load (xmlPath)

For Each Elem In xmlCol getTagValue = Elem.firstChild.nodeValue '* ERROR OCCURS HERE Exit Function Next

Set xmlCol = Nothing Set xmlDoc = Nothing
End Function

As noted above, the error occurs while reading the values. I made my own test vbs script and found that if the <minHeap> or <maxHeap> xml values are empty ("<minHeap></minHeap>"), the error occurs and it fails. If you put a value in there, like "<minHeap>256</minHeap>", then it succeeds. The defaults in the initTomcatAsUpgrade.vbs script are 256 for minHeap and 1024 for maxHeap.

The way I got around it was definitely a hack but it worked. I did the following: - Went to the windows emp directory and found the "com.jamfsoftware.jss.settings.xml" file. - Made a copy of it to "JAMFSettings.xml". - Edited the JAMFSettings.xml file to put values in the minHeap and maxHeap xml nodes. - In a command window, I copied the JAMFSettings.xml to the "com.jamfsoftware.jss.settings.xml" file. This got the command into the command buffer of the cmd window so I could easily run it again quickly. - I started the installation again. Once the installation starts taking place, it overwrites the existing "com.jamfsoftware.jss.settings.xml" with another one that has blank values. - Immediately when the installation started, I began to copy the JAMFSettings.xml to the "com.jamfsoftware.jss.settings.xml" file over and over again so that I would overwrite the newly generated one quickly before it actually got loaded and used in the script. - After that, the installation completed successfully.

Yes, it was hacky but until they fix the initTomcatAsUpgrade.vbs script to handle a blank entry, it works.

Hopefully that helps others out there.