It's all about the answers!

Ask a question

What happens if a change set is delivered to a stream while that stream is fetching for a build?

Alexa Nafke (4167) | asked Sep 24 '13, 11:17 a.m.

Some of our components are quite large and users have expressed concern over what might happen if they deliver a change set while a build is in the process of fetching.  I am hoping that the fetch creates a snapshot before it starts and knows that anything delivered after it starts should be excluded.  Is that the case?



Accepted answer

permanent link
Robin Bobbitt (59679) | answered Sep 24 '13, 12:01 p.m.
Hi Alexa,

There is an option in your build definition on the Jazz Source Control tab to accept the latest changes from the stream into your build workspace. If you select this (which is the typical behavior), a snapshot is created containing all the latest changes and the snapshot is used for the build. If you don't select this, whatever changes are already in your build workspace would be used for the build, and anything new delivered to the stream would have no impact. So, you're covered either way.
Alexa Nafke selected this answer as the correct answer

Heather Fraser-Dube commented Sep 24 '13, 2:06 p.m.

While a snapshot is created, the fetch is of the build workspace. The window of concern is what happens if a second build is started while the first build is still fetching. The second build will accept the newest changes into the same build workspace and create another snapshot. So timing-wise its possible a component not yet fetched by the first build has had its configuration changed by the accept of the second build. This situation is however detected by the first build when it attempts to load the subsequently changed component and the first build will fail. The second build is not impacted and it will have all the accumulated changes.

3 other answers

permanent link
Robert Carter (42928789) | answered Sep 24 '13, 11:57 a.m.
 If you are using the JBE, then let your worries be gone.  The JBE creates a snapshot first and then populates the build workspace with the snapshot.  So, at the time of the snapshot creation all delivered change sets would be included in the snapshot and thus the build.  If the change set was delivered during the build process it would not be picked up by the JBE because it was not in the snapshot.

Hope this helps.

Robert Carter commented Sep 24 '13, 11:58 a.m.

To be clear the fetch happens on the snapshot not the stream. 

Heather Fraser-Dube commented Sep 24 '13, 1:56 p.m.

The fetch occurs on the build workspace.

permanent link
Tim Mok (6.6k38) | answered Sep 24 '13, 12:00 p.m.
Once the build workspace has finished accepting changes from the stream, any deliveries to the stream will miss the build. The changes will have to wait until the next build.

If you're wondering about what happens when the workspace is accepting when someone delivers to the stream, the accept operation works off of a report to specify which changes will be accepted. It wouldn't know about the new changes while accepting.

I also believe the snapshot occurs after accepting changes. Someone else may correct me if I'm wrong.

Heather Fraser-Dube commented Sep 24 '13, 1:57 p.m.

Yes and it is a snapshot of the build workspace. The build workspace is then loaded.

permanent link
Abraham Sweiss (2.4k1331) | answered Sep 24 '13, 12:15 p.m.
I believe the build is based off of a snapshot.  

To validate, one a build starts, you can view the change sets that were accepted into the build.  See the following article for details

Tim Mok commented Sep 24 '13, 1:18 p.m.

I'm thinking now that the snapshot is of the workspace because the workspace is the initial owner of the snapshot. The build doesn't make a snapshot of the stream to use for the build. The build always works on the build workspace's configuration.

Your answer

Register or to post 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.