[Backgroundrb-devel] can Timeout::timeout(...) be used in a Worker ?
george at initiatecommerce.com
Tue Dec 19 16:39:34 EST 2006
I have been investigating the problem some more since the first
reply . I have successfully been able to use sleep() and have
Timeout work with no problems . So i began to dig deeper into the
functions i am executing in the Timeout block . I have not found
anything definitive yet but i want to share some more information in
hopes that it might spark a new approach to troubleshooting the cause .
First, here is some more information about the block of code i am
executing inside the Timeout . I am working with FasterCSV and have
a fairly large (~7mb) tab delimited file which is malformed and
causes FasterCSV to not be so fast . I am attempting to wrap the
parser.each method in a Timeout block for a reasonable amount of
time , which should throw an exception if the parsing takes too
long . However, this seems to not work when i am running in the
context of Backgroundrb . I have verified this in both a Rails +
Backgroundrb development environment and using "script/backgroundrb
console" , both of which produce the same results (i.e. they have the
same issue of not timing out) .
After some time i got the feeling it was not just Backgroundrb which
might be the issue but rather the combination of Backgroundrb and
FasterCSV . Digging into the FasterCSV code i noticed it is using an
underlying IO object and a few regular expressions to do the bulk of
the processing work . I am now wondering if the IO.gets method or
the regular expressions are not allowing the Timeout thread a chance
to throw the exception .
An interesting thing i did notice is if i add any
BackgrounDRb::ServerLogger.logger.debug calls in the FasterCSV
processing code the Timeout works as expected while in Backgroundrb ,
but when i take the logger calls out Timeout does not throw the
This is currently where i am . If someone has an idea of something
else i can try to narrow down the problem please do let me know .
More information about the Backgroundrb-devel