I've added this to the request timeline; if it happens again we'll at least get more data.
The timeout code has two odd things to it, for me:
- its using threads to timeout socket operations (a little weird, risky in our environment [easy to misuse if someone passes db objects across threads due to zope thread-based contexts])
- the thread join, when there is a cleanup, has no timeout, so can hang around forever.
I suspect is the thread join causing the issue, and that moving this code to use socket timeouts would avoid the problem.
I've added this to the request timeline; if it happens again we'll at least get more data.
The timeout code has two odd things to it, for me:
- its using threads to timeout socket operations (a little weird, risky in our environment [easy to misuse if someone passes db objects across threads due to zope thread-based contexts])
- the thread join, when there is a cleanup, has no timeout, so can hang around forever.
I suspect is the thread join causing the issue, and that moving this code to use socket timeouts would avoid the problem.