It's all about the answers!

Ask a question

Error having more than one build engine supported


Michele Pegoraro (1.8k12110101) | asked Oct 16 '09, 3:29 a.m.
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



permanent link
Nick Edgar (6.5k711) | answered Oct 20 '09, 11:10 a.m.
JAZZ DEVELOPER
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

permanent link
Ralph Schoon (56.6k23642) | 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,
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?

permanent link
Michele Pegoraro (1.8k12110101) | answered Oct 20 '09, 3:05 a.m.

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.

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.

permanent link
Nick Edgar (6.5k711) | answered Oct 20 '09, 12:16 p.m.
JAZZ DEVELOPER
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.

permanent link
Ralph Schoon (56.6k23642) | 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.
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.

permanent link
Michele Pegoraro (1.8k12110101) | answered Oct 21 '09, 3:08 a.m.

- 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


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.

permanent link
Nick Edgar (6.5k711) | answered Oct 21 '09, 10:31 a.m.
JAZZ DEVELOPER
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


Register or to post your answer.