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
Khai Do 4 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 {
109 109
             return;
110 110
         }
111 111
 
112
-        // stop worker when jenkins slave is set to offline
113
-        GearmanProxy.getInstance().stop(c);
112
+        // re-register gearman functions on node status change,
113
+        GearmanProxy.getInstance().registerJobs();
114 114
     }
115 115
 
116 116
     @Override
@@ -123,16 +123,8 @@ public class ComputerListenerImpl extends ComputerListener {
123 123
             return;
124 124
         }
125 125
 
126
-        GearmanProxy gp = GearmanProxy.getInstance();
127
-        /*
128
-         * Spawn management executor worker if one doesn't exist yet.
129
-         * This worker does not need any executors. It only needs
130
-         * to work with gearman.
131
-         */
132
-        gp.createManagementWorker();
133
-
134
-        // on brining a slave back online
135
-        gp.createExecutorWorkersOnNode(c);
126
+        // re-register gearman functions on node status change,
127
+        GearmanProxy.getInstance().registerJobs();
136 128
     }
137 129
 
138 130
 }

Loading…
Cancel
Save