Yesterday, the Sony PlayStation 3 network went down. I wrote about this on the Rational Tester Blog and teased that I would leave my best guess here as to the cause of the defect.
Rarely when these big bugs surface do we ever get the true cause, but this one jumped out at me. Why? The first clue was in the Sony PlayStation 3 blog:
The second clue came from the calendar. Yesterday was March 1st, or as known in software testing circles, February 29th – sometimes. This is too much of a conincidence for me. I’m sure there was some processing issue where 2010 was considered a leap year, and the PS3 mishandled the date – perhaps a date conflict between console and the Sony gameservers which prevented people from getting on the network.
At least, that’s my guess. If the true cause of the problem surfaces, I’ll post more. But until then, maybe now would be a good time to review the Leap Year calculation. We all know that it’s basically every four years, but there are some exceptions. Here’s a pseudo-code version of the calculation:
if year divided by 400 is 0 then is_leap_year else if year divided by 100 is 0 then not_leap_year else if year divided by 4 is 0 then is_leap_year else not_leap_year