SCM load workspace fails when running concurrent processes
I am using the scm commands (RTC 5.0.2) to create a workspace for a personal build from a build process. That build process is relatively small, so I partitioned one of my build machine to run multiple build engines. When running the code to create the workspace with 3 build engines active, I get about 1 in 5 builds failing with an error:
[exec] + /opt/IBM/jazz/scm/scm login -u roadrunner@acme.com -P W1ldEIOT -r https://172.16.40.161:8043/jazz -n rh-sml-be3_process-172.16.40.199
\ [exec] Logged in to https://172.16.40.161:8043/jazz
[exec] + /opt/IBM/jazz/scm/scm create workspace -s _HHESwLErEeSAz9_q0ONxMg -r rh-sml-be3_process-172.16.40.199 Temporary-BuildManager-_HHESwLErEeSAz9_q0ONxMg-rh-sml-be3_process-172.16.40.199
[exec] Problem running 'create workspace':
[exec] Invalid repository URI: rh-sml-be3_process-172.16.40.199. Try 'scm help create workspace' for more information.
[exec] + rc=1
Here are the scenarios which I have run:
1) Single build engines : 18 builds run successful
2) 3 build engines active, 12 builds submitted: 2 builds failed, 10 successful
3) Write process lock code so only single scm runs on the build machine, 3 engine active: 12 builds, all successful
Is there something that I am missing to make the scm access process safe? I am using the same user for all the processes, I am not using the lscm (since I had thought that could cause potential problems). I had been using the same "nickname" for the repository, but have since change that to be build engine unique.
My assumption would be that somewhere within the .jazz-scm a problem occurs. (i have no data just speculation), is there some way which you can specify the .jazz-scm location
Here is the error from another run:
[exec] Problem running 'create workspace':
[exec] Invalid repository URI: rh-sml-be1_process-172.16.40.199. Try 'scm help create workspace' for more information.
[exec] + rc=1
It would appear that the source of the problem is that the "nickname" is not being found. I've not tried using the user and password on each of the calls.
[exec] + /opt/IBM/jazz/scm/scm login -u roadrunner@acme.com -P W1ldEIOT -r https://172.16.40.161:8043/jazz -n rh-sml-be3_process-172.16.40.199
\ [exec] Logged in to https://172.16.40.161:8043/jazz
[exec] + /opt/IBM/jazz/scm/scm create workspace -s _HHESwLErEeSAz9_q0ONxMg -r rh-sml-be3_process-172.16.40.199 Temporary-BuildManager-_HHESwLErEeSAz9_q0ONxMg-rh-sml-be3_process-172.16.40.199
[exec] Problem running 'create workspace':
[exec] Invalid repository URI: rh-sml-be3_process-172.16.40.199. Try 'scm help create workspace' for more information.
[exec] + rc=1
Here are the scenarios which I have run:
1) Single build engines : 18 builds run successful
2) 3 build engines active, 12 builds submitted: 2 builds failed, 10 successful
3) Write process lock code so only single scm runs on the build machine, 3 engine active: 12 builds, all successful
Is there something that I am missing to make the scm access process safe? I am using the same user for all the processes, I am not using the lscm (since I had thought that could cause potential problems). I had been using the same "nickname" for the repository, but have since change that to be build engine unique.
My assumption would be that somewhere within the .jazz-scm a problem occurs. (i have no data just speculation), is there some way which you can specify the .jazz-scm location
Here is the error from another run:
[exec] Problem running 'create workspace':
[exec] Invalid repository URI: rh-sml-be1_process-172.16.40.199. Try 'scm help create workspace' for more information.
[exec] + rc=1
It would appear that the source of the problem is that the "nickname" is not being found. I've not tried using the user and password on each of the calls.
2 answers
Hi Frank,
It is generally not recommended to run multiple build engines on one machine see https://jazz.net/forum/questions/126044/rtc-build-server-recommendations and https://jazz.net/wiki/bin/view/Main/BuildFAQ#Can_multiple_Jazz_Build_Engine_J. Anyway it should work.
It seems to be a potential bug. Do you know at what stage are another build engine (what exactly scm command is executed at the same time)? In order to create a defect we need reproducible scenario.
It is generally not recommended to run multiple build engines on one machine see https://jazz.net/forum/questions/126044/rtc-build-server-recommendations and https://jazz.net/wiki/bin/view/Main/BuildFAQ#Can_multiple_Jazz_Build_Engine_J. Anyway it should work.
It seems to be a potential bug. Do you know at what stage are another build engine (what exactly scm command is executed at the same time)? In order to create a defect we need reproducible scenario.
Comments
I've change the script to really only perform these 3 command.
$scmpath/scm login -u $userId -P $buildpass -r $repositoryAddress -n $buildEngineId
$scmpath/scm create workspace -s "$stream" -r $buildEngineId "$workspace"
rc=$?
$scmpath/scm workspace propertylist --json -r $buildEngineId "$workspace"
I assume that this could be reproduced from the command line vs a build engine.