12 January 2009

Thread aboration on asp.net 2 ??

I run into problem with thread being aborted while uploading big files.
It turned out that if you modify any file domain reload is triggered that shuts down all threads.

More about it at this link


Evan Hoff [14/May/08 03:49 PM]
I'm not sure if this is the cause for CC.NET, but I've seen this same behavior in other 2.0 ASP.NET apps.

Here's the skinny:

In 2.0, ASP.NET changed so that any file changes (above and beyond web.config, global.asax, and /bin) will trigger an AppDomain reload.

During the reload, any thread which does not cleanly shut down within a specified timeout period will get aborted.

Reading your description above, I would guess you have several ASP.NET threads working on sockets. A filesystem change is triggering an AppDomain refresh and those threads aren't restarting within the timeframe expected by ASP.NET. As a result, the threads get aborted (causing the logs you are seeing). When the threads are aborted, your socket code doesn't restart, and your client receives a message about the server being too busy.

Or at least that's a theory you can try exploring. You can google the behavior change to read about it, but there's not a way to turn the behavior off (unfortunately).

Evan
[ Show » ]
Evan Hoff [14/May/08 03:49 PM] I'm not sure if this is the cause for CC.NET, but I've seen this same behavior in other 2.0 ASP.NET apps. Here's the skinny: In 2.0, ASP.NET changed so that any file changes (above and beyond web.config, global.asax, and /bin) will trigger an AppDomain reload. During the reload, any thread which does not cleanly shut down within a specified timeout period will get aborted. Reading your description above, I would guess you have several ASP.NET threads working on sockets. A filesystem change is triggering an AppDomain refresh and those threads aren't restarting within the timeframe expected by ASP.NET. As a result, the threads get aborted (causing the logs you are seeing). When the threads are aborted, your socket code doesn't restart, and your client receives a message about the server being too busy. Or at least that's a theory you can try exploring. You can google the behavior change to read about it, but there's not a way to turn the behavior off (unfortunately). Evan