This gadget does not hang for me:
http://www.google.com/ig/modules/hello.xml
Odd...
On Fri, Feb 22, 2008 at 1:58 AM, Phillip Rhodes <[EMAIL PROTECTED]>
wrote:
> Ok, I lied, I couldn't get to sleep anyway, so I spent some
> more time looking at this.
>
> And I think I understand this a little better now. I wasn't paying
> attention before... after the EnqueueFeaturesTask finishes and we
> do the take() on the CompletionService object, we loop back up
> to the top of that do block again, and then find outselves sitting here:
>
>
> // ... snip
>
> for (WorkflowJob candidate : wc.jobsToRun)
> {
> if (candidate.ready(wc.depsDone))
> {
>
>
> runThisCycle.add(candidate);
>
>
> }
> }
>
>
> The jobs in wc.jobsToRun are now the ones added by the
> EnqueueFeaturesTask if I'm understanding this correctly.
> Anyway, this loop iterates 5 or 6 times.. and here's where
> it gets weird... using the debugger, it looks for all the world
> like each time we *do* execute this line:
>
> runThisCycle.add(candidate);
>
> But... after that loop finishes, runThisCycle actually has size = 0.
>
> So this loop:
>
> // Fire off ready jobs and remove from jobsToRun list
> for (WorkflowJob runJob : runThisCycle) {
>
> processor.submit(runJob.task);
>
> jobsSubmitted++;
>
> wc.jobsToRun.remove(runJob);
> }
>
>
> never executes and never does a submit(), since it has nothing
> to submit. And that's why we block forever on the take() call, because
> there just aren't any other jobs to run.
>
> It seems like the question now is, why don't those other jobs get added
> to runThisCycle?
>
>
> TTYL,
>
>
> --
> Phillip Rhodes
> Chief Architect - OpenQabal
> https://openqabal.dev.java.net
> LinkedIn: http://www.linkedin.com/in/philliprhodes
>
--
~Kevin
If you received this email by mistake, please delete it, cancel your mail
account, destroy your hard drive, silence any witnesses, and burn down the
building that you're in.