You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let recf i =
job {if i >4then()elsedo! timeOut 300return! f (i+1)}
And you >>=. (f 0) that, you'll indefinitely block the worker thread from taking any further work.
Similarly for exceptions, it would seem. So I suggest we track that all worker threads can be used, or even crash the app with a nice stacktrace if an unhandled exception or recursion like above ever reaches the library. Can we heuristically track "all worker threads are either executing jobs or waiting on a semaphore/monitor/WaitOne?
We should refactor towards this:
Add the ability to hook an event on fatal exceptions (anything uncaught); this should be used for logging fatal/critical errors in production
Handle "lost" threads
The text was updated successfully, but these errors were encountered:
Let's say you have a function like
And you
>>=. (f 0)
that, you'll indefinitely block the worker thread from taking any further work.Similarly for exceptions, it would seem. So I suggest we track that all worker threads can be used, or even crash the app with a nice stacktrace if an unhandled exception or recursion like above ever reaches the library. Can we heuristically track "all worker threads are either executing jobs or waiting on a semaphore/monitor/WaitOne?
We should refactor towards this:
The text was updated successfully, but these errors were encountered: