On 2/14/08, hemant <[EMAIL PROTECTED]> wrote:
> Hullo there,
>
>  I have worker out quite some changes as promised in last mail. Here is
>  a brief ChangeLog:
>
>         * Added TestCases for Cron Triggers, Meta Workers and stuff. We are
>  heading towards proper code coverage with specs.
>
>         * Added preliminary support for starting a worker on demand through
>  scheduler. What it means is, when you have a worker which is getting
>         scheduled very less frequently and you don't want the worker to
>  persist, you can ask BackgrounDRb to restart the worker on each
>  schedule.
>
>         * Fixed some unreported issues with writing data to socket between
>  workers and stuff.
>
>         * Fixed issues with too many open connections, because connections
>  were not getting closed. BackgrounDRb now opens only one connection,
>  which is
>         reused throughout the lifecycle of rails application.
>
>         * Fixed all outstanding issues with Cron triggers, BackgrounDRb now
>  explicitly depends on "chronic" gem.
>
>         * Removed Framework directory and BackgrounDRb now explicitly depends
>  on packet gem.
>
>  To install:
>
>  gem install packet chronic
>
>  Checkout code from git repository:
>
>  git clone [EMAIL PROTECTED]:backgroundrb/mainline.git backgroundrb
>
>  As usual, remove old backgroundrb script from script directory and
>  start bdrb server.
>

I will really appreciate some feedback on above release, because those
Socket write issues I mentioned were serious ones and both "Packet"
library and bdrb suffered from them.  Let me explain what they were
and why they matter:

When reactor loop was writing data to sockets, it was not using
"writable" status on file descriptors.  For small amount of data being
written to the socket this is not a problem, but for larger objects it
could be a problem. Now, write happens in an evented manner and all
the data is "buffered" in memory until socket is ready for write. Bdrb
( or packet ) will write as much data as it can and will buffer the
remaining data for writing when socket is ready next time for write.

It was a known problem and I took some pain to fix this. So, Bdrb will
be much more robust in production environments now. Also, CronTrigger
code went through major cleanup and testing.

I implemented a function called next_turn in packet, which lets you
run random tasks at next turn of event loop. This will be used for
runtime loading of workers and task queues.
_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel

Reply via email to