Skip to main content

CodeSOD: Going Crazy

4 months 1 week ago

For months, everything at Yusuf's company was fine. Then, suddenly, he comes in to the office to learn that overnight the log exploded with thousands of panic messages. No software changes had been pushed, no major configurations had happened- just a reboot. What had gone wrong?

This particular function was invoked as part of the application startup:

func (a *App) setupDocDBClient(ctx context.Context) error { docdbClient, err := docdb.NewClient( ctx, a.config.MongoConfig.URI, a.config.MongoConfig.Database, a.config.MongoConfig.EnableTLS, ) if err != nil { return nil } a.DocDBClient = docdbClient return nil }

This is Go, which passes errors as part of the return. You can see an example where docdb.NewClient returns a client and an err object. At one point in the history of this function, it did the same thing- if connecting to the database failed, it returned an error.

But a few months earlier, an engineer changed it to swallow the error- if an error occurred, it would return nil.

As an organization, they did code reviews. Multiple people looked at this and signed off- or, more likely, multiple people clicked a button to say they'd looked at it, but hadn't.

Most of the time, there weren't any connection issues. But sometimes there were. One reboot had a flaky moment with connecting, and the error was ignored. Later on in execution, downstream modules started failing, which eventually led to a log full of panic level messages.

The change was part of a commit tagged merely: "Refactoring". Something got factored, good and hard, all right.

[Advertisement] Picking up NuGet is easy. Getting good at it takes time. Download our guide to learn the best practice of NuGet for the Enterprise.
Remy Porter

Rare 'Upper Atmosphere Lightning' Photographed From ISS

4 months 1 week ago
Take a look at what being called "a stunning phenomenon," captured in a photo taken from the International Space Station as it passed above a thunderstorm over Mexico and the American Southwest. So what was it? "A rare form of Transient Luminous Event (TLE) called a gigantic jet," according to a new blog post at Notebookcheck.net: A gigantic jet happens above thunderstorms, firing powerful bursts of electrical charge from the top of the thunderstorm (about 20 km [12.4 miles] above the ground) into the upper atmosphere (about 100 km [62.1 miles] above the ground). The upper part of gigantic jets produces red emissions identical to sprites [large-scale electric discharges above thunderclouds]. But while gigantic jets burst directly from the top of thunderstorms, sprites form independently, much higher in the atmosphere, appearing around 50 miles (80 km) above the Earth's surface. "If ordinary lightning seems pretty ordinary, upper-atmosphere lightning is something else — an entire zoo of various upper-atmosphere electrical discharges," writes the Severe Weather Europe site. And NASA made a request in a new blog post this week to any aspiring citizen scientists. "Have you captured an image of a jet, sprite, or other type of TLE? Submit your photos to Spritacular.org to help scientists study these fascinating night sky phenomena!" Click here to see some of the photos from around the world that have already been uploaded and collected at Spritacular.org.

Read more of this story at Slashdot.

EditorDavid

India's PM laments missing out on global chipmaking dominance – in 1964!

4 months 1 week ago
Prime Minister promises first local silicon will appear this year, decades after Fairchild Semi's Robert Noyce made polite inquiries

Indian prime minister Narendra Modi has celebrated the nation’s independence day by pointing out that the nation is finally becoming a global chipmaking contender – 60 years after blowing the chance to be a global leader.…

Simon Sharwood