Re: lockfilebootstrapper clears flags even if it causes build to abort

Julian Simpson <[email protected]> Sun, 20 Nov 2011 12:21:54 +0000
Newsgroups gmane.comp.java.cruise-control.user
Message-ID <CANwBkz_RVRwTf-3Zp198PEf=KsYka8PY5msWRnAMksHZZcN++g@mail.gmail.com>
On 20 November 2011 12:09, Bill Somerville
<[email protected]>wrote:

> Hi Julian,****
>
> ** **
>
> I am refactoring a build system that builds many projects that share a
> codebase. The current implementation uses many copies of the same workspace
> (Perforce SCM) and currently builds them sequentially. I want to reduce it
> to all builds running concurrently (at least as far as one per available
> CPU) and all building from the same workarea.
>

*nod* - IMHO I think you're going against the grain here. What I would do
is focus on seperate work areas to ensure that there was no collision. If
you're concerned about duplication there are strategies to reduce this - I
used to be fond of generating project-specific config files so that they
were consistent.

I hear what you're saying, but there's unlikely to be anybody scratching
this itch, unless it's you :)

Best

J.


> ****
>
> ** **
>
> I have this working nicely with a much simpler CC config.xml file by using
> a new “dummy” project that is responsible for sync’ing the workarea and it
> uses lockfiles (one for each real project that shares the workarea) to
> ensure that it only runs when no other project is using the workarea. The
> individual projects have a veto if they are out of date /w respect to the
> sync project so they are using the buildstatus files already. Using
> pre-registration to create a “template” project makes this a very simple
> and clean config file with trivially small project definitions.****
>
> ** **
>
> As an aside, it would seem to be less error prone to reduce the
> lockfilebootstrapper/lockfilelistener to a simple RAII type object as a
> bootstrapper that automatically released the lock (an implicit
> lockfilelistener with the same ‘projectname’ as the bootstrapper) when the
> project goes idle. I can’t think of a single safe use case where releasing
> the lock is not required when the project goes idle.****
>
> ** **
>
> The problem I am having is that when I start CC the sync project can build
> first, it acquires all the locks while it runs and the other projects get
> vetoed which would be fine if their initial force build status didn’t get
> consumed during the veto.****
>
> ** **
>
> I believe this isn’t just a startup issue, if I add a new project while CC
> is running, it may happen that its first run happens to coincide with the
> sync project building and its initial forced build (from having no .ser
> file) is consumed leaving the project waiting for a change that may not
> happen for a long time.****
>
> ** **
>
> This seems to be a classic MT race condition.****
>
> ** **
>
> It seems surprising to me that bootstrappers can cause exceptions that
> actually represent unexceptional behaviour. Maybe there should be a
> mechanism for a bootstrapper to veto a build completely – perhaps running
> the bootstrappers earlier in the process and catching exceptions that
> represent expected failures to bootstrap (like the lockfile bootstrapper
> failing what is merely a “try lock” on the lockfile) then returning a no-go
> status to the scheduler for that project timeslot rather than having the
> temporary failure to acquire a lock change the project status.****
>
> ** **
>
> HTH****
>
> Bill.****
>
> ** **
>
> *From:* Julian Simpson [mailto:[email protected]]
> *Sent:* 20 November 2011 09:52
> *To:* [email protected]
> *Subject:* Re: [Cruisecontrol-user] lockfilebootstrapper clears flags
> even if it causes build to abort****
>
> ** **
>
> ** **
>
> On 20 November 2011 00:09, Bill Somerville <
> [email protected]> wrote:****
>
> Hi,****
>
>  ****
>
> I am having problems getting CC to run builds reliably when I use lock
> files to express dependencies.****
>
>
> If project depend on each other, have you considered using this:
> http://cruisecontrol.sourceforge.net/main/configxml.html#buildstatus?
> IMHO you should use the lockfiles only to prevent builds from conflicting
> (if they use the same port numbers, etc)
>
> J. ****
>
>  ****
>
> If a project has never been built (no .ser file) or is set to build after
> failure and uses a lock file bootstrapper to serialize /w respect to other
> projects I get a race condition where the forced build flag etc  gets
> consumed by the first build attempt even if the bootstrapper exception gets
> thrown aborting the build. This means that a project may never build until
> a modification happens which is undesirable as it defeats the object of
> these flags.****
>
>  ****
>
> TIA****
>
> Bill.****
>
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure
> contains a definitive record of customers, application performance,
> security threats, fraudulent activity, and more. Splunk takes this
> data and makes sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-novd2d
> _______________________________________________
> Cruisecontrol-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user****
>
>
>
>
> -- ****
>
> Julian Simpson****
>
> The Build Doctor Ltd.****
>
> http://www.build-doctor.com****
>
> [email protected]****
>
> (+44) 207 183 0323****
>
> ** **
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure
> contains a definitive record of customers, application performance,
> security threats, fraudulent activity, and more. Splunk takes this
> data and makes sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-novd2d
> _______________________________________________
> Cruisecontrol-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user
>
>


-- 
Julian Simpson
The Build Doctor Ltd.
http://www.build-doctor.com
[email protected]
(+44) 207 183 0323

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d

_______________________________________________
Cruisecontrol-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user