Regenerate .gitmodules after rename.
This also takes into account recent retirement and new creation of repos.
Change-Id: I171261b046cc3f00444ef1f4b2bc0bc646f9b346
Project: openstack-infra/gearman-plugin 46d74f029f19067446ae386e8a6ed47fb627d867
Fix permission problem when finding builds
Plugin runs as user "anonymous". Escalate priviledges so it can find
projects/builds also in the case that "anonymous" user does not have
read permissions for them.
Change-Id: Iccf19460bb02a450d4a82fdabaf9dbc37a3ffe97
Project: openstack-infra/gearman-plugin b879f56ef1ccb3f81edd7768d439c7617edf6df2
Update to Jenkins LTS 1.625.3 and fix function registration
Using a newer Jenkins LTS (ver 1.625.3) did not work with the
gearman-plugin. Gearman function registeration wasn't working
correct because Computer.currentComputer()[1] and getInstance()[2]
methods seemed to always return null on initialization of the
plugin. The Jenkins.getActiveInstance method (introduced in
Jenkins-1.589)[3] works more reliably.
[1] http://javadoc.jenkins-ci.org/hudson/model/Node.html#getNodeName()
[2] http://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html#getActiveInstance()
[3] e6c2e16f7a
Change-Id: I1534beda9c39a9d15da4d7b96f17e7b75699a631
Project: openstack-infra/gearman-plugin c5637cef49d7c8069c039a40287687fc798eee84
Register the diff of functions
Instead of registering all functions for every node each time the
functions change register the delta of the functions each time. This
should cut down on the amount of CAN_DO updates we were doing in the
past.
Note that we handle the loss of all functions with RESET_ABILITIES
rather than sending a CANT_DO for each function that is no longer
available. Also, starting a new connection will always begin with
RESET_ABILITIES to clear any potentially stale state from the gearman
server.
Change-Id: I2b16117fce30ddb3e11b338043204cf726c7f1d4
Project: openstack-infra/gearman-plugin fc5bd7813c949ba7aa937a245901de64a53a3b76
Use git.openstack.org
Our official git master is at git.openstack.org, update README.rst
that uses github instead.
Change-Id: Ie5c4c3acf27bb27044048f29dfd36b127600ef2c
Project: openstack-infra/gearman-plugin 93a7922e07f6e785b494bf71aaac669206249444
Remove broken scm section
This repository only accepts changes using review.openstack.org and
not via github.com. Therefore remove scm configuration sections, they
cannot work for publishing any content.
Note that the scm maven plugin for git does not support gerrit,
documentation about supported options is at
http://maven.apache.org/scm/git.html
Change-Id: I369ae18b57910eab269747757a2ff78107f9b3d7
Project: openstack-infra/gearman-plugin fca2c7e32569545341897e77aa214f76c811d9eb
Script to easily build a package
Introduce build-fast shell script at the root of the repository to
easily build a package having version extracted from the SCM repository.
Reuses a copy of:
http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/scripts/version-properties.sh
Would save time for non maven guru like me.
Change-Id: Iab081de54553d6240604214c608554c6a147ae70
Project: openstack-infra/gearman-plugin 2f10c6a06f3f60da632b78387d7933c1b72ab153
Send node labels back on build completion
Zuul will not necessarily know which node type the job it dispatches
to Jenkins will run on, so we send that information back to Zuul on
build completion so it can use it to submit metrics in that context.
Change-Id: Ibca938fcf8a65facd7e39dab4eb994dfc637722a
Project: openstack-infra/gearman-plugin 08e9c429de050d0e6ac777579aa901552d27f7ba
Fix deadlock from a WORK_FAIL event
A lock is kept on a gearman worker when a WORK_FAIL event happens.
This causes the worker therad to stall on the next attempt that
the AvailabilityMonitor attempt to get a lock on the worker.
This causes the jenkins nodes to stop working (not run builds
anymore). Unlock the worker on a WORK_FAIL event to avoid this
deadlock state.
This fixes issue https://issues.jenkins-ci.org/browse/JENKINS-28891
Change-Id: I015ce9732fd535676a832680f39e220b09df95cf
Project: openstack-infra/gearman-plugin f2024bd53efcba3a764cd8453799632d22b20673
Use TextParameterValue instead of String
If a value with a newline is received, Jenkins does not display the
value correctly in the parameters page. Based on a quick reading
of similar issues elsewhere, it may also not save the value correctly
for later use by plugins such as the 'rebuild' plugin. Switching
from string to text parameter types solves this. However, it does
cause _all_ parameters to be treated as text, which wastes a bit of
real-estate on the parameters listing screen with tall textboxes.
We could scan the string for '\n' and choose appropriately as an
alternative.
Change-Id: I84ef198fd6ef852fc0a403e126f13b8cbb58a7b1
Project: openstack-infra/gearman-plugin 0314ab1ea2f959eca0a89214483cb4f16fa92829
Fix race between adding job and registering
Gearman plugin had a race between adding jobs to the functionList and
registering jobs. When registering jobs the functionMap is cleared, when
adding a job the plugin checks if the job is in the function Map before
running it. If we happen to trigger registration of jobs when we get a
response from gearman with a job assignment then the functionMap can be
empty making us send a work fail instead of running the job.
To make things worse this jenkins worker would not send a subsequent
GET JOB and would live lock never doing any useful work.
Correct this by making the processing for gearman events synchronous in
the work loop. This ensures that we never try to clear the function map
and check against it at the same time via different threads. To make
this happen the handleSessionEvent() method puts all events on a thread
safe queue for synchronous processing. This has allowed us to simplify
the work() loop and basically do the following:
while running:
init()
register()
process one event
run function if processed
drive IO
This is much easier to reason about as we essentially only have
bookkeeping and the code for one thing at a time.
Change-Id: Id537710f6c8276a528ad78afd72c5a7c8e8a16ac
Project: openstack-infra/gearman-plugin 7abfdbd2d00010a1121cefebf479bcf104e7ef18
Stop sending status updates
Don't send status updates every 10 seconds. Only send them at the
start of a job (to fill in information like worker and expected
duration, etc). We don't actually do anything with subsequent
updates, and if Zuul wants to know how long a job has been running
it's perfectly capable of working that out on its own.
Change-Id: I4df5f82b3375239df35e3bc4b03e1263026f0a68