Potential freeze with Umbraco and SignalR

I cloned the Umbraco 7.7 dev branch today to prepare a demo for my colleagues next week. SignalR has been bundled with Umbraco, and guess what - problems I've had before hit me again. It just freezes on boot, specifically at the app.MapSignalR call in the Owin startup.

Turns out, the HQ guys have already been down this road and helped fix a really really weird bug with it. Read the issue and Stephane's post, it's quite interesting. But this was not the issue that hit me, even tho it's quite similar in behavior.

I've actually been down this road before myself. I recalled having had similar problems. I didn't dive into it back then, I just gave up and threw SignalR out. I'd like to say I have just as deep an analysis as Stephane has in his post, but I'm just not as good. :) In any case, it's something to do with the performance counters reading a registry key.

The code is somewhere within PerformanceCounter.NextSample(). My debugging symbols fu is not strong enough to get everything right there, but it's somewhere in the PerformanceCounterLib and has something to do with a RegistryKey being read. I had it in the stacktrace, but I'm sorry to say I didn't record it.

Popping the registry editor, I find it already focused on a registry key called SignalR. I'm guessing I haven't had it open since I gave up the last time. Again, sorry for not having deeper knowledge here. You might have a gazillion keys called SignalR-something.vstemplate. These are safe, but the one only named SignalR is our suspect. I impatiently went ahead and deleted it, and now everything works.

So I'm stuck trying to provide any deeper knowledge, and I was stupid enough not to record the key name before I threw it out. Although, I'm pretty sure it is from the SignalR performance counters, and that the key in question is HKLM\System\CurrentControlSet\Services\SignalR\Performance. I threw the whole SignalR key out.

If I gain any deeper knowledge, I'll update this post. Otherwise, at least you know that deleting that key may save your day. :)


comments powered by Disqus