With the Jabber for Everyone initiative that Cisco has been pushing as of late, the question about compatibility between the Jabber client and Cisco Unified Presence Server (CUPS) has come into question more than once. Cisco has been pretty clear on the matter since May – you must upgrade to CUPS 8.6(4) [PDF Link] to take advantage of the Jabber for Everyone. This version was released on June 16th, and being the diligent network engineer that I am, I had already upgraded to 8.6(3) previously. This week I finally had enough down time to upgrade to 8.6(4) to support Jabber for Everyone as well as some of the newer features of the Jabber client for Windows. Of course, that’s where all my nightmares started.
I read the release notes and found that 8.6(4) was a refresh upgrade. I’ve already done one of these previously on my CUCM server so I knew what to expect. I prepped the upgrade .COP file for download prior to installing the upgrade itself. Luckily for me, 8.6(3) is the final version prior to the refresh upgrade, so it doesn’t require the upgrade .COP file to perform the upgrade. The necessary schema extensions and notification fields are already present. With all of the release note prerequisites satisfied, I fired up my FTP server and began the upgrade process. As is my standard procedure, I didn’t let the server upgrade to the new version automatically. I figured I’d let the upgrade run for a while and reboot afterwards. After a couple of hours, I ordered the server to reboot and perform the upgrade. Imagine my surprise when the server came back up with 8.6(4) loaded, but none of the critical services were running. Instead, the server reported that only backups and restorations were possible. I was puzzled at this, as the upgrade had appeared to work flawlessly. After tinkering with things for a bit, I decided to revert my changes and roll back to 8.6(3). After a quick reboot, the old version came back up. Only this time, the critical services were stuck in the “starting” state. Seemed that I was doomed either way. After I verified the MD5 checksum of the upgrade file, I started the upgrade for the second time. While I waited for the server to install the second time, I strolled over to the Internet to find out if anyone was having issues with this particular upgrade.
After some consulting, it turns out that Cisco pulled a bone-headed mistake with this upgrade. Normally, one can be certain that any hardware-specific changes will be contained to major version upgrades. For instance, upgrading from Windows XP to Windows 7 might entail hardware requirement changes, like additional RAM. Point releases are a little more problematic. Cisco uses the minor version to constitute bi-annual system releases. So CUCM 8.0 had a certain set of hardware requirements, but CUCM 8.5 had different ones. In that particular case, it was a higher RAM requirement. However, for CUPS 8.6(4), the RAM requirement doubled to 4 GB. For a sub-minor point release. Worse yet, this information didn’t actually appear in the release notes themselves. Instead, I had to stumble across a totally separate page that listed specific hardware requirements for MCS server types. Even within that page, the particular model of server that I am using (MCS-7825-I3) is listed as compatible (with caveats). Turns out that any 8.6(x) release is supposed to require more than 4GB of RAM to function correctly. Except I was able to install 8.6(3) with no issues on 2GB of RAM. Since I knew I was going to need to test 8.6(4), I rummaged around the office until I was able to dig up the required RAM (PC2-5300 ECC in case you’re curious). Without the necessary amount of RAM, the server will only function in “bridge mode” for migrations to new hardware. This means that your data is still intact on the CUPS server, but none of the services will start to begin processing user requests. At least knowing that might prevent some stress.
For those of you that aren’t lucky enough to have RAM floating around the office and you’ve gotten as far as I have, reverting the server back to 8.6(3) isn’t the easiest thing to do. Turns out that moving back to 8.6(x) from 8.6(4) requires a little intervention. As found on the Cisco Support Forums, rolling back can only be accomplished by installing the ciscocm.cup.pe_db_install.cop file. But there are two problems. First, this file is not available anywhere on Cisco’s website. The only way you can get your hands on it is to request it from TAC during a support call. That’s fortunate, because problem number 2 is that the file is unsigned. That means that it will fail the installation integrity check when you try to install it on the CUPS server. You have to have TAC remote connect to the server and work some support voodoo to get it working. Now, I suppose if you have a way to gain root access to a Cisco Telephony OS shell, you could do something like the outlined steps in the forum post (as follows):
Here what's required to temporarily install unsigned COP files
mv SIGNED_FILTER SIGNED_TEMP
Here what's required in Remote Access to remove the temporary fix
mv SIGNED_TEMP SIGNED_FILTER
Note: This is totally unsupported by me. I’m putting it here for posterity. Don’t call me if you blow up your server. Also, I don’t have the TAC .COP file either, so don’t bother asking for it.
That being said, the above instructions should get you back up and running on 8.6(3) until you can buy some RAM from Newegg or your other preferred vendor.
Yes, I should have read the release notes a little more closely. Yes, I should have verified the compatibility before I ran wild with this upgrade. However, having fallen on my sword for my own mistakes, I think it’s well within my rights to call Cisco out on this one as well. How do you not put a big, huge, blinking red line in the release notes warning people that you need to check the amount of RAM in the server before performing an upgrade? You figure something like this would be pretty important to know? Worse yet, why did you do this on a sub-minor point release? When I install Windows 7 Service Pack 1 or OS X 10.7.4, I feel pretty confident that the system requirements for the original OS version will suffice for the minor service pack. Why up the hardware requirements for CUPS for a minor upgrade at best? Especially one that you’re driving all your people to be on to support your big Jabber initiative? Why not hold off on the requirement until the CUCM 9 system release became final (which happened about a week later)? If I’m moving from 8.6 to 9.0, I would at least expect a bunch of hardware to be retired and for things to not work correctly when moving to a new, big major version. From now on I’m going to be a lot more careful when checking the release notes. Cisco, you should be a lot more diligent in using the release notes to call attention to things that are important for that release. The more caveats we know about up front, the less likely we are to jabber about them afterwards.