Fix job result not being sent back to gearman client
This fixes a bug that causes the result object to be left off of the returned data packet after a job finishes executing. This only occurs when the job request sets the node to temporary offline (i.e. "OFFLINE_NODE_WHEN_COMPLETE":"true"). The problem is that the ComputerListener.onTemporaryOffline event was stopping the gearman worker which causes a disconnect to the gearman client thus not being able to send back the results for the job. The worker should not stop on a temporary offline, only on disconnect and delete of a node. The fix is to only re-register the gearman functions instead of stopping the workers on a temporary online/offline of a node. Change-Id: Icf672acf059d6cb0e16a6685d637824c678ea5be
This commit is contained in:
parent
6307ba2225
commit
fa5f0834ff
|
@ -109,8 +109,8 @@ public class ComputerListenerImpl extends ComputerListener {
|
|||
return;
|
||||
}
|
||||
|
||||
// stop worker when jenkins slave is set to offline
|
||||
GearmanProxy.getInstance().stop(c);
|
||||
// re-register gearman functions on node status change,
|
||||
GearmanProxy.getInstance().registerJobs();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -123,16 +123,8 @@ public class ComputerListenerImpl extends ComputerListener {
|
|||
return;
|
||||
}
|
||||
|
||||
GearmanProxy gp = GearmanProxy.getInstance();
|
||||
/*
|
||||
* Spawn management executor worker if one doesn't exist yet.
|
||||
* This worker does not need any executors. It only needs
|
||||
* to work with gearman.
|
||||
*/
|
||||
gp.createManagementWorker();
|
||||
|
||||
// on brining a slave back online
|
||||
gp.createExecutorWorkersOnNode(c);
|
||||
// re-register gearman functions on node status change,
|
||||
GearmanProxy.getInstance().registerJobs();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue