<div class="gmail_quote">On Thu, Jun 21, 2012 at 7:27 AM, Dave Steele <span dir="ltr"><<a href="mailto:dsteele@gmail.com" target="_blank">dsteele@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="gmail_quote"><div class="im"><div><br></div></div><div>I'm not sure. Try 1) adding a 'push only' option to the slave connect (needed for both of our strategies),  2) getting a list of sections with finished work at the top of the loop, sorted by priority, and 3) if the list has more than one entry, doing a 'push only' for all but the first. (2) should be the most invasive part, and it doesn't look bad.</div>
<div class="im">
<div> </div>...</div><div><br></div><div>... There is a small race. Change (3) to flush all sections with work, to fix the race. This restores the need for the second connect in the normal case. ... or maybe look at the push after a section has been successfully worked (i.e. at the end of the loop). This needs some thought. It is worth trying to avoid the second connect in the typical case - the invasive option here is getting master to not parse 'Packages' in the 'second connect push' case.</div>
</div></blockquote><div><br>For posterity:<br><br>- Run the section normally, with the usual push at the beginning of the master connection.<br>- At the end of the loop, collect the sections which have push-able work<br>- For every section except the section that did work on this pass, connect and push the work <br>
<br>Under typical conditions, uploads happen immediately, and the master is connected to only once per section per loop. In other cases, all work is (attempted to be) pushed on the next iteration (instead of 'eventually), regardless of busy conditions.<br>
<br>I'd have to look again, but it seems very close to what you have.<br></div></div><br>