PDA

View Full Version : Running multiple builds and "Wait for completion" problem


stienessen
02-19-2007, 12:58 PM
Hi -
I have a built script that does the steps necessary to deploy our app to a web server generically - eventually I want to deploy to multiple servers in a web farm and would like this to run in parallel. I created a VBP script that takes the servername as a parameter and runs all of the stuff necessary to set our app up on that server - I then have a master script that runs the VBP script with the servername parameter - the scripts execute various remote tasks using configuration data from the Remote tab - it seems that if I run more than one in parallel I get a file locked with psexec (psexec.out - I'm guessing it is the output file for psexec) - is there a way to configure the Remote execution stuff to either use a different filename or some other way to get around this?

Also the deployment works fine if I leave the "Wait for completion" option checked and let it run one server at a time - unfortunately I'd really like to run these updates at the same time since they take a fair amount of time.

Thanks
Dave

kinook
02-19-2007, 02:40 PM
A test build which should resolve this problem is available at http://www.kinook.com/VBP/beta.html

pdmckenzie
07-07-2008, 12:41 PM
I have a similar issue to Dave. I'm using 6.2a. I have my scripts set up similarly to his as well. What I'm finding is the remote calls work if I initialize them from the GUI, but if I try to using Visbuildcmd.exe - either from Dos or from cc.net, psexec.out file gets locked up or psexec doesn't get released - the connection stays open and subsequent psexec calls hang.

The link to the beta test fix above in the thread is broken, by the way.

Any thoughts?

Perry

kinook
07-07-2008, 01:12 PM
The fix mentioned above is in v6.3 and later. Although the GUI and console app invoke PsExec the same way.

pdmckenzie
07-09-2008, 08:56 AM
I downloaded and installed 6.7 and it works better, but it's still inconsistent with terminating psexec processes. Sometimes I can finished a build now, but latent psexec processes are still hanging around in my task manager's process tab.

I'm using psexec 1.94. I don't have any problems with this when I run from the GUI. It's only when I use Visbuildcmd.exe, either from the command line or from cruise. My build uses psexec a lot - calling it explicitly as well as numerous calls using the remote tab in .bld files.

Thoughts?

kinook
07-09-2008, 10:17 AM
It works ok testing here with the attached sample, VBP 6.7, PsExec 1.94, Win XP SP3 (local computer), and Win XP SP2 (remote computer). When called from the GUI or console app, the psexec processes all exit as soon as they complete.

Please provide more information on reproducing the problem. Thanks.
http://www.kinook.com/Forum/showthread.php?threadid=3044

pdmckenzie
07-17-2008, 11:28 AM
:-)
So after doing other things for a while and hoping the problem goes away, I have come to a point where I can repeat the problem with a reasonable level of consistency in a small bit of code.

The behavior I see with the attached code is if the %ABSOLUTE_PATH_TO_SOME_DIR% property is set to a directory with more than 16 files in it, psexec seems to hang after the 16th file... consistently. BEWARE - don't run this code against a remote box unless you understand what cacls is doing - it will change perms on files and folders below where your path is set.

Reproducing this failure does not seem to work for me unless there are more than 16 files in the %ABSOLUTE_PATH_TO_SOME_DIR% directory.

I hope that helps.

Perry

kinook
07-17-2008, 01:24 PM
PsExec does sometimes have trouble writing to standard output (that's why the PsExec call constructed when using the Remote tab always redirects to a file). You could either:

1) Change the Command to

cmd /c psexec \\%REMOTE_SVR% cmd /c "cacls %ABSOLUTE_PATH_TO_SOME_DIR% /T /E /G ASPNET:R">%TEMP%\psexec.out

and Read program output from A file %TEMP%\psexec.out

or

2) Use a Command of

cacls %ABSOLUTE_PATH_TO_SOME_DIR% /T /E /G ASPNET:R

and put %REMOTE_SVR% in the Computer field on the Remote tab