#1
|
|||
|
|||
Problems with parallel builds and wait step
I'm currently running into 3 issues while attempting to set up a build farm w/parallel script:
Configuration:
Scenario 1: Set up a master/slave configuration. Master build script kicks off 2 parallel builds on remote servers, does a little work of its own, then waits for the parallel processes to complete before finishing itself. Problem: The wait step hangs indefinitely because the PIDs for the parallel processes disappeared right after kicking off the parallel processes. The 'Wait for completion' checkbox in the Advanced tab on the parallel steps is disabled and both parallel process steps have scripts similar to the following enabled, causing temporary variables to be created to store the PIDs: Code:
Sub vbld_StepDone() ' store this step's process ID in another temporary macro vbld_TempMacros().Add "SLAVE1_ID", vbld_TempMacro("RUNPROGRAM_PROCESSID").Value End Sub
Scenario 2: Set up the same master/slave configuration. Master build script kicks off 2 parallel builds on remote servers, does some work of its own, then waits for completion text files to be written by the parallel processes. (This is a workaround for scenario 1) Problem: The wait step in master script, which has 'Wait for all files to be created or modified or processes to exit' enabled, hangs indefinitely when the completion files do not exist prior to the master getting to the wait step. If the completion files from the slaves already exist when the master gets to its wait step and then the slaves complete their work and update the files, the master works properly and recognizes the changes. Questions:
Scenario 3: Same setup as scenario 2. Master must wait for the slaves to complete before it can finish, but the slaves must also wait for specific steps in the master to finish before they can do certain things. The master has a step about half way through it that writes a completion file for the slaves to check. Problem: The slaves hang indefinitely if the master writes its completion file before the slaves get to their wait step. If the slaves get to their wait step first and the file is created after, the slaves complete as expected. This is the opposite behavior of what was encountered in scenario 2. So, it would seem that the master's wait only works if the completion files it needs exist beforehand are updated the wait step is reached. Meanwhile, the slave's wait only works if the completion file they need do NOT exist beforehand and is only created after the wait step is reached. This is crazy confusing and can't be working as designed, can it? Questions:
Thanks! Just for reference: Wait action - http://www.kinook.com/VisBuildPro/Ma...waitaction.htm VisBuildPro action - http://www.kinook.com/VisBuildPro/Ma...projaction.htm Chain build example - http://www.kinook.com/VisBuildPro/Ma...hainsample.htm Last edited by bwilder; 06-21-2012 at 01:05 PM. Reason: added documentation references |
Tags |
master , parallel , slave , wait |
|
|