[hibernate-dev] ci.hibernate resource locks configuration

Sanne Grinovero sanne at hibernate.org
Tue Jul 30 05:16:53 EDT 2013


On 30 July 2013 10:03, Gunnar Morling <gunnar at hibernate.org> wrote:
> 2013/7/30 Sanne Grinovero <sanne at hibernate.org>
>>
>> Nice idea. I think that would be even better, but requires some code
>> adaptations in the project, and some use cases are complex: JGroups is
>> requiring multiple ports for different types of inbound/outbound
>> connections (and UDP connectionless), that could get tricky to get
>> right.
>> I'm not ruling out the idea, but if it's not very reliable it gets
>> extremely tricky to debug.
>>
>> We could start using that for the AS use case as a next step? AFAIK
>> the AS also needs many ports, and the Arquillian connector needs to
>> use the right ones as well.. ideally this could be a feature of
>> Arquillian?
>
>
> I can have a look into the AS use case and see how it works out.

Cool. Keep in mind as well that the resource lock plugin is able to
restrict the scope of the lock to a specific build phase only: I
didn't do that yet for the sake of simplicity first, I didn't want to
change the mvn commands as well.
Just saying so that you can better judge when the port
allocator/Arquillian is getting too complex to be worth it; in fact we
also have a single CPU and limited memory: not starting multiple AS
instances could be a good idea anyway.

Cheers,
Sanne

>
>>
>>
>> On 30 July 2013 09:42, Gunnar Morling <gunnar at hibernate.org> wrote:
>> > Could we alternatively avoid the conflict by using different ports for
>> > different jobs (if that's the contended resource), e.g. by leveraging
>> > the
>> > Jenkins port allocator plug-in [1]?
>> >
>> > This plug-in selects unique port numbers and makes them available to a
>> > job
>> > run as environment variable from where it e.g. could be fed to
>> > Arquillian.
>> >
>> > --Gunnar
>> >
>> > [1] https://wiki.jenkins-ci.org/display/JENKINS/Port+Allocator+Plugin
>> >
>> >
>> > 2013/7/30 Sanne Grinovero <sanne at hibernate.org>
>> >>
>> >> Hi all,
>> >> I am enabling the "resources lock exclusion" plugin: this allows to
>> >> specify - using a string - a resource that a specific build requires
>> >> for exclusive access, preventing parallel execution of multiple builds
>> >> using the same resource.
>> >>
>> >> I'm enabling two resources specifically:
>> >>  - JGROUPS
>> >>  - JBOSSAS
>> >> (literally)
>> >>
>> >> Please keep that in mind when
>> >>  a) creating new jobs
>> >>  b) adding new tests using any such resource in a project which doesn't
>> >> have any
>> >>
>> >> For example, Hibernate Search includes some tests which create a
>> >> JGroups communication channel - either explicitly or by using
>> >> Infinispan - and if another build was run at the same time they would
>> >> fail as JGroups would automatically connect to the other running test,
>> >> setting up an unpredictable state.
>> >> So by enabling "JGROUPS" as a required exclusive resource, if any
>> >> other project needing the same could declare the same resource usage
>> >> we can prevent them to be run in parallel.
>> >>
>> >> JBOSSAS is defined by projects using Arquillian; I enabled it only on
>> >> OGM and Search: any more needing it?
>> >>
>> >> The good aspect is that by doing so I can re-enable parallel execution
>> >> and Jenkins should figure out which builds it is allowed to run
>> >> instead, without wasting CI time.
>> >>
>> >> Side effects: expects several fail reports in the coming hours, as I
>> >> *thought* I got it right but actually made a mistake, triggering many
>> >> parallel builds :-)
>> >>
>> >> Sanne
>> >> _______________________________________________
>> >> hibernate-dev mailing list
>> >> hibernate-dev at lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>> >
>> >
>
>


More information about the hibernate-dev mailing list