![]() ![]() Once we knew what types of issues were causing problems, we made the necessary changes. We then identified problematic layers where issues clustered together. Other engineers got involved and we went over issues. Sequence diagrams comparing the unpredictability of async method callsĪs illustrated in the diagram above with a somewhat contrived example, if you’re not planning for calls to return in potentially random order, code may behave in ways you’re not expecting, including encountering errors. The extra latency talking to a remote server caused enough delays to make the async code behave differently in production.īecause of this change in behavior, items were being removed from dictionaries due to one call completing, then other threads were trying to find them, leading to NullReferenceExceptions in catastrophic proportions. I’ll give you a hint: Our testing environment was located on premises. Customers were angry, coworkers were irritated, and I was extremely confused as to why the code suddenly didn’t work. When things hit production the errors started pouring in. What could go wrong? Everything is on Fire! And so, with great fanfare, we pushed the code out to production. Similarly, we didn’t find anything during testing or staging. Testing everything locally, it all worked fine. NET, and didn’t have anyone better at me in desktop development so I did everything in the best way I knew how. In my case, the app would fire off a request or two to the web service and they now could return in a random order or at the same time, with each response being handled by a new thread.īecause I was so new to async web service code, I didn’t know the best practices around multi-threading in. That means that either everything needs to be accessed by one thread at a time or these objects need to be designed with concurrency in mind. ![]() Instead of one thread talking to your data model, you now have potentially multiple threads at once talking to the same objects. The problem is that when you switch from sync to async communication state management behaves differently. ![]() On top of that, we didn’t have all the nice language features we have today for async code. No big deal, right? As developers we routinely do stuff we’ve never done before. I’d done bits and pieces, but taking the entire web service layer and converting it to async communication was new to me at the time. Here’s the thing – I hadn’t done a lot of async code before. To be fair, I should have been using async calls to begin with, but tech debt can be hard to shake. While WPF allowed synchronous web service calls, Silverlight required asynchronous web calls. I undertook a project to convert a WPF application to Silverlight so more users could use it in-browser and on non-Windows operating systems. Let’s rewind to a time when I was a Windows Presentation Foundation (WPF) specialist in an ASP. As you might expect, it deals with threading. Let me tell you about the worst bug I’ve ever caused – and what you can do to not make my mistakes. While I swear I do more good than harm, I’ve shipped more defects than I care to admit. We Were HereLost in a frozen wasteland and split up from your partner inside an abandoned castle, the only possession you have left is a walkie-talkie with a familiar voice on the other end.Causing a production bug is a rite of passage for new developers. Discover the truth behind this dark castle in a communication-based, cooperative puzzle adventure. Can we make it back - together? We Were Here TooAs your final hour approaches, a large structure looms up in the distance, towering above the relentless storm. Through the fierce blizzard, a flare lights the sky, followed by a cry for help over the radio - broken, dying. ![]() This bundle contains all four We Were Here games: We Were Here, We Were Here Too, We Were Here Together, and We Were Here Forever! We Were Here ForeverYou both awaken imprisoned inside the sinister Castle Rock - were you betrayed, or simply not that clever? Find out in the newest co-op puzzle adventure in the We Were Here Series! Do you and your partner have what it takes to face the dark forces of this realm or will you be trapped… forever? We Were Here TogetherAs we explore these frozen wastes, misfortune strikes once again. You and a partner must solve puzzles through smart communication and observation. They are all about cooperative discovery, immersion and teamwork through communication. The We Were Here Series is a set of online first-person cooperative puzzle adventure games set in and around the fictional medieval Castle Rock in the wastes of Antarctica. Get the complete four game Antarctic experience with the We Were Here Series bundle! ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |