Error having more than one build engine supported
Hi,
I've notice a strange behaviour running a build definition with 3 different build engine (running on the same machine) supported. Generally my build works fine but some times it fails after one second and I get two different log with these errors: com.ibm.team.build.common.TeamBuildStateException: Unable to "complete" build activity with label "_WfR78LojEd6muMvL1EVePA" because the build with id "_WSonELojEd6muMvL1EVePA", build definition id "HB000_CompORD", label "20091016-0913" is in the "COMPLETED" state. and com.ibm.team.build.common.TeamBuildStateException: Unable to "start" the build with id "_WSonELojEd6muMvL1EVePA", build definition id "HB000_CompORD", label "20091016-0913" because it is in the "IN_PROGRESS" state. It seems that two different build engine has started to run the build at the same time. After these errors I've perform a rebuild and everything goes correctly. It possible to avoid this problem? |
7 answers
It's perfectly reasonable and supported to have multiple build engines for a single build definition.
It's also possible to have multiple build engines running on the same machine, but you need to ensure that if two builds are running at the same time, they don't stomp on each other. For example: - If the load directory is a fixed path, then you could have one build loading over another one. A simple way to avoid this is to specify the build result UUID in the load directory path with: ${buildResultUUID} - When JBE runs it makes use of an eclipse workspace directory to keep its metadata (separate from the load directory). By default this is called 'workspace' and is created in the directory from which JBE is run. If multiple JBEs are run from the same directory, these will collide. To avoid this, specify unique directories with -data, e.g. jbe -data c:\engine1\workspace jbe -data c:\engine2\workspace |
Ralph Schoon (63.5k●3●36●46)
| answered Oct 19 '09, 3:47 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Hi Michele,
do the three engines run against the same build definition? If so, I think I remember from posts on "Using Team Concert forum" that the design does not intent to support several concurrent build engines running on a queue. Just a thought. Ralph Hi, |
Yes, it was my case. I did not know about this limitation so I had this error running my test. I turn back with a single engine on a specific build definition. Thank you, best regards, Michele. |
Note that using ${buildResultUUID} in the load directory path will consume a lot of disk space, as each new build will go into a separate load directory.
A better approach would be to define a loadDir property for each build engine (with unique values) and use ${loadDir} in the load directory path. |
Ralph Schoon (63.5k●3●36●46)
| answered Oct 20 '09, 4:33 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Nick,
great response as always. Thanks. I will keep that in mind. Ralph Note that using ${buildResultUUID} in the load directory path will consume a lot of disk space, as each new build will go into a separate load directory. |
This could be the problem. I use separated load dir but use a single directory. I will make some test on this. Thanks for your time. |
Thinking about it some more, the errors you give above couldn't really be explained by a workspace collision anyway. Normally JBE requests the build, which marks it as claimed on the server so that other requests don't find it. It then starts the build. The UUID for the build is just kept in memory until the script is invoked, so no other JBE instance should be able to see it.
This looks more like a failure of the transaction model on the server, where multiple JBEs get the same build request. This area is pretty solidly tested though, so I'm quite surprised. It would help to know what your server setup is like. Which Jazz server edition are you running, and on which DB? |
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.