Upgrading to Confluence 3.1 was rougher than I expected

I went in early to work today to upgrade our Confluence server. I had been running the latest version on a test server with great success, and we had a lot of really exciting changes to roll out. Ever since I first set up our wiki around 2.5+ years ago, no one from our West Plains campus could log in (their accounts are in a separate Active Directory), and only a select number of AD groups could be used for permissions sets. What was worse, the operating system it was running on (the first iteration of Ubuntu JeOS) was pretty much broken and couldn’t be updated.

So we were moving to Windows Server 2008 (at my boss’s request–migrating from Ubuntu about broke my heart), and we also transitioned from a locally hosted PostgreSQL database to a remotely hosted Microsoft SQL Server. Lots and lots of changes, all to the good.

Instead of the hour I had an anticipated (moving virtual machines on our VM server, swapping MAC addresses, renaming the machines, voila), it ended up taking eight hours and forty-five minutes. Random issue after random issue got in my way, bugs that could neither be reproduced nor explained cropped up, and I strained against my torment without a break and with great intensity. First it was database errors, so I had the web DB guy drop all the tables and started anew. Then it was a Java error, then an unlabeled error, then backup restoration errors, with each error taking 30-60 minutes each to overcome. Once everything was OK, we discovered that all the attachments were broken, and after a frantic hour or so including some frenzied communications with Atlassian, it dawned on me to just copy the attachments over from the old server. If you knew how complicated attachments are in Confluence, you’d understand why I didn’t do that to begin with.

About fifteen minutes before I was going to leave, I started getting emails that people couldn’t see the content they needed. Permissions were broken, and that took another hour to figure out. A helpful person who runs our Active Directory was on the phone with me the whole time, and between us we were able to narrow down the issue: From within Confluence, I could see the permissions groups, but none of the members of those groups. AD groups can be created as Local Domain or as Universal, and Confluence 3.1 requires the latter. The former is the default, though, and most every group created before he started (about 2 years ago) was set to the default. Unfortunately, this included all of the permissions groups we needed. A quick fix on his end, but it took us a while to figure out what was going on.

I got no confused, frustrated, or angry emails on the way home, and five hours later I’ve had nothing but a few Thank You notes for the upgrade, so I’m feeling pretty good about it. Unfortunately, I was also exhausted and ended up having to take a 3-4 hour nap, and my throat’s sore, and my sinuses are all stuffed up. Hopefully sleep will cure what ails me.

Walking in the Footsteps of Giants

I have a project at work I have been dreading. Our current wiki is running on Ubuntu JeOS and PostgreSQL, and we are moving to Microsoft Windows Server 2008 and Microsoft SQL Server. The move to Windows was frustrating, but pretty easy–to be perfectly honest, getting it to all work on Linux was a lot more difficult, but that was partially because I had no friggin’ idea what I was doing 2.5 or so years ago when I started working with Confluence. But I could handle that OK. Moving to MSSQL is a bit terrifying though. I’ve been avoiding it for a week.

Confluence was built to work with Postgre, and it works very well. There’s no configuration, no real tricks to it. You just drop the driver in the right folder, click the install button, and go. For MSSQL, though, there are a lot of hoops to jump through, both in regards to software configuration and the database setup. What’s more, the DB is running on Enterprise System‘s SQL Server, which is kind of a Big Deal. This isn’t me just playing around with a local toy anymore, so if I screw something up, it’s going to be a little more noticeable.

This afternoon when I began working on it, though, I had already spent about 4 hours researching the topic. I had read all the comments on different wiki pages and I had all my notes. I followed the directions Very Carefully.

And it worked.

I was pretty nervous when it took over two minutes to connect to the DB and get set up, which it did silently so I had no idea if it was about to stab me or not. But in the end, it did connect, and now I’m getting ready to push a ton of data to it.

That’s my next big hurdle: will the data pulled from PGSQL push into MSSQL without a hitch? According to what I read, it should as long as the DB username is the same, but I’m still nervous. Regardless, I want to offer public thanks for all those early adopters who blaze the trails I hesitantly step down.