RETIRED, The jenkins gearman plugin
Go to file
Clark Boylan d6ff943ae0 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
2015-05-05 11:00:04 -07:00
.settings update eclipse setting 2013-01-29 12:05:01 -08:00
src Fix race between adding job and registering 2015-05-05 11:00:04 -07:00
.classpath add new unit tests for plugin 2013-03-20 21:11:27 -07:00
.gitignore Fix to register all projects and register an additional gearman function for each project. 2013-02-22 10:29:00 -08:00
.gitreview Added .gitreview 2013-01-10 23:49:17 +00:00
.project abort running jenkins builds 2013-02-21 10:17:54 -08:00
.pydevproject abort running jenkins builds 2013-02-21 10:17:54 -08:00
bsd.txt setup gearman workers 2013-02-06 10:21:20 -08:00
debug Gearman configuration UI is setup in the jenkins config page 2013-01-29 12:05:01 -08:00
install-fast setup skeleton GearmanPlugin. 2013-01-29 12:04:42 -08:00
LICENSE add pom.xml and gearman-plugin source file. 2013-01-29 10:09:47 -08:00
pom.xml update to work with Jenkins LTS ver 1.565.3 2014-10-15 14:21:08 -07:00
README.rst Workflow documentation is now in infra-manual 2014-12-05 11:53:38 -08:00
run-fast Add local GearmanWorker. 2013-04-22 10:29:03 -07:00

Overview

This plugin uses Gearman to support multiple Jenkins masters. More info can be found at https://wiki.jenkins-ci.org/display/JENKINS/Gearman+Plugin

Contributing

If you would like to contribute to the development of OpenStack, you must follow the steps in this page:

http://docs.openstack.org/infra/manual/developers.html

If you already have a good understanding of how the system works and your OpenStack accounts are set up, you can skip to the development workflow section of this documentation to learn how changes to OpenStack should be submitted for review via the Gerrit tool:

http://docs.openstack.org/infra/manual/developers.html#development-workflow

Pull requests submitted through GitHub will be ignored.

Project site:

Patches are submitted via Gerrit at:

Bugs should be filed on StoryBoard, not GitHub:

https://storyboard.openstack.org/#!/project/706

Cloning:

License

Copyright 2013 Hewlett-Packard Development Company, L.P.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.