DevDisasters

An Epic FAIL for this Web Service

The office where Peter L. works was abuzz with excitement one morning a few months ago when the familiar, bland corporate art was missing from the wall opposite the elevators. In its place was a brand new 50-inch Plasma TV. Someone who lived nearby offered to run home and grab his Xbox for a little lunchtime gaming.

The big reveal happened later that day when Peter launched the server process that provided a continuous feed of the company's metrics through a dashboard displayed in stunning 1080p resolution. Everyone was amazed by the eye-catching graphs -- and impressed that Peter was able to include some extras like local weather, stock prices and a daily "Trivia Challenge."

Garbage in, Beauty Out
The new system relied on a bidirectional data feed run by an outside vendor. Automated processes fetched and uploaded data from local sources. Every 15 minutes, another automated process fetched the latest round of graphs and slides from a Web service.

Peter loved the interface and management loved the results. However, those warm feelings all went away one day when the Web service decided to fail spectacularly and returned the following:

<?xml version="1.0"?>
<HttpResponse>
<StatusCode>InternalServerError</StatusCode>
<StatusDescription>Internal Server Error</StatusDescription> 
<WebHeaders>
<X-Backside-Transport>FAIL FAIL,FAIL FAIL,FAIL FAIL</X-Backside-Transport>

To make matters worse, rather than show an old set of metrics and graphs -- presumably owing to some bug -- the screen showed the contents of the XML file.

Frustrated, Peter contacted the vendor's IT support. The technician explained that they were aware of the issue and were working toward a solution. As Peter would undoubtedly have to report the status of the Web service, which was deemed "mission-critical" to his higher ups, he asked for an ETA on a fix. The support guy replied, "We're close! You should see something soon!" Peter hung up the receiver and waited … for what, though, he wasn't sure.

Waiting and Waiting...
About two and a half hours and four cups of coffee later, a jittery Peter clicked his mouse and tried calling the Web service for what must have been the 10,000th try, pacing nervously from his desk to the hallway to see if anything had changed. Much to his surprise, this time, the reply from the service was different:

<?xml version="1.0"?>
<HttpResponse>
<StatusCode>OK</StatusCode>
<StatusDescription>OK</StatusDescription>
<WebHeaders>
<X-Backside-Transport>OK OK,OK OK,OK OK</X-Backside-Transport>

If this was the back-end XML that nobody ever saw, Peter might have been doing a dance of joy at that point, but unfortunately things weren't exactly, well, "OK." Viewers were still being treated to almost the same raw, incomplete XML as before, just this time with OK in place of the Error/FAIL messages.

Helpful Advice
Peter contacted support again. The technician explained that the issue was still under investigation and the only "fix" made so far was to change the status codes to something more "friendly" and also to show that they were working on it. He suggested Peter keep checking the Web service, and that he might want to find an alternate media source in the meantime until the problem could be resolved.

As Peter hung up, he wondered if his coworker's offer to fetch his Xbox was still on the table.

About the Author

Mark Bowytz is a contributor to the popular Web site The Daily WTF. He has more than a decade of IT experience and is currently a systems analyst for PPG Industries.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube