Gary,

Can you submit the patch to lighthouse? I would like to see this merged in
to master and 1.0.x ASAP. I also think that a 1.0.16 release with this
applied is more than appropriate.

On Sat, Jan 2, 2010 at 9:48 PM, Gary Yngve <[email protected]> wrote:

> Ah, here is the key info from Kernel.fork:
>
> "The thread calling fork is the only thread in the created child
> process. fork doesn‘t copy other threads."
>
> So the @worker and started? methods in Merb::Worker are misleading
> when in a child: the thread is dead.
> Here is what Merb::Worker looks like in the child just after a fork:
> #<Merb::Worker:0x37ca9a4 @thread=#<Thread:0x37ca88c dead>>
>
> Here is my fix (a little ugly because of the need to nuke the
> singleton) that is the simplest possible patch to get me unblocked:
>
> merb-core/rack/adapter/abstract.rb:
>
>      def self.spawn_worker(port)
>        worker_pid = Kernel.fork
> +      unless Merb::Worker.start.thread.alive?
> +        Merb::Worker.instance_eval("@worker = nil")
> +        Merb::Worker.start
> +      end
>        ...
>
> You'll probably want to abstract the code into
> Merb::Worker.alive?
> and
> Merb::Worker.restart
>
> so that the code then reads
> Merb::Worker.restart unless Merb::Worker.alive?
>
> -Gary
>
>
> On Jan 1, 9:34 am, Martin Gamsjaeger <[email protected]> wrote:
> > Gary,
> >
> > This is a known bug that also affects merb/master. I'm not really
> > familiar with those parts of the code, but here's a excerpt from a
> > conversation with someone on irc who summarized it as follows:
> >
> > "The background worker is started after you fork the spawner, but
> > before you fork workers so, although the workers each have their own
> > work_queue (which is getting filled up), none of them have a
> > background worker thread to process the queue."
> >
> > A patch for that would be highly appreciated :)
> >
> > snusnu
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "merb" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected] <merb%[email protected]>.
> For more options, visit this group at
> http://groups.google.com/group/merb?hl=en.
>
>
>


-- 
-jonah
--
You received this message because you are subscribed to the Google Groups "merb" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/merb?hl=en.

Reply via email to