Browse Source

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
tags/0.1.1^0
Khai Do 5 years ago
parent
commit
fa5f0834ff
1 changed files with 4 additions and 12 deletions
  1. +4
    -12
      src/main/java/hudson/plugins/gearman/ComputerListenerImpl.java

+ 4
- 12
src/main/java/hudson/plugins/gearman/ComputerListenerImpl.java View File

@@ -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…
Cancel
Save