Flashback to the 1980s, when this company is in need of a major database management system upgrade, according to a pilot fish on the scene.
"Our highly paid consultant says we don't need to recompile all the applications' code," fish says. "I argue for it. I get overruled.
"Migration is complete, weeks pass, highly paid consultant is long gone. Then a nightly job goes down with an error in one of the four shared linked modules. Standard procedure is to put a standard patch in to skip the problem transaction, recompile that module and run again. Bam again."
Fish knows this can't wait until the morning for debugging. He finds which module is failing and puts in a display for the bad transaction, so he can see what's happening when the program gets there. Then he compiles and reruns.
And the program runs fine. Huh?
Next morning, fish and his two most senior compatriots put their heads together, but just can't spot a pattern in what happened. But they decide there's no need to remove the the single display that fish put in until the next time fish is on call.
Weeks go by, and then another big nightly program goes down -- and this one has 13 linked modules. Fish's compatriot, who's on call, puts in the standard patch, and it goes down again.
By morning, he has put in the standard patch for seven transactions. Then, bleary eyed, he joins the other other two to gather up the compile listings and retire to a conference room to hunt for the pattern.
And about an hour later, they find it. It seems that the new DBMS version is padding partial words in the record definitions out to full words, which the old DBMS didn't do. When a record doesn't already end on a word boundary, two extra bytes are being passed along -- and that's what's causing the sudden termination.
"Seven of the 13 modules had been updated the day before, when he put in the standard patch," says fish. "The other six were re-linked but not recompiled. And when I hit the problem several weeks earlier, three of the four modules had been updated, and by putting the display in, I updated the fourth module, putting them back in sync.
"We recompiled the remaining six modules and we were done.
"Funny thing -- next time we did a major DBMS upgrade, we recompiled it all."
Give Sharky something to compile. Send me your true tale of IT life at email@example.com. You'll score a sharp Shark shirt if I use it. Add your comments below, and read some great old tales in the Sharkives.
Get your daily dose of out-takes from the IT Theater of the Absurd delivered directly to your Inbox. Subscribe now to the Daily Shark Newsletter.