Dev Blog

The old story strikes back. Dozen years ago I used to work for local IT company. Even then we had work out a often release cycle, so that usually each month we had a new version of software. This is quite good attitude, as there are less changes between versions, and also team is getting used to release cycles.

Don't release on Friday!
Adam, DevOps admin

The DevOps admin always complained to not release a new version on Friday. But often developers tried to finish tasks before weekend, so usually a new version was ready Thursday afternoon - that is - too late for Thursday release. Being happy with everything tested thoroughly, at Friday morning we insisted admin to roll the release. As we still had whole day for hotfixes. Usually updates were fine, but few times there was some havoc making admin nervous if team will finish hotfix.

Yesterday I had everything almost ready, just needed to finish a new feature - searching by tags in Quick Tips. There were some issues, but at the afternoon everything seemed to work pretty well. Being happy with results I decided to release a new version, even through it was already afternoon.

There comes time to update all dependencies in application (update composer and bower), as on my dev machine these are only linked for easier development. All went smooth. Almost, as some small hotfixes were required. But suddenly catastrophe, cannot edit any HTML field! The worst thing was, that changes were made in uncomitted JavaScript file - this file was merged into balin package, and was meant to be pushed to knockout ES5 plugin. But after doing several updates, the file was reset to state before important fixes were added.

Backup to the rescue

Luckily, I have daily backups set up. Which holds around half milion files and gigs of data. This was the culprit. It turned out, that with so many backed up data, extracting required file would take ages!

Here comes plan B - this file must be on old server, which is still running. It turned out, that the file was not there as it was only merged in balin. But I could not figure out which part is causing havoc - as there was some code which needed to be removed.

In summary, backup would take a half day to extract file, other versions - including those on github were the wrong ones. Tried to figure out what had to be removed by comparing previous versions of built package, but it was not really obvious.

Alternative backup

At some point I realized, that from time to time I do simple backup of my projects using plain old tar command! And that was it! The file was there. It turned out that WeakMap shim was causing troubles. The release was finished at 2 at night!

In summary

Always try to have alternative backup made in a different way!
Oh, and don't release on Friday!