Bugzilla – Bug 1551
Race condition in job manager
Last modified: 2008-08-15 04:44:12
You need to
before you can comment on or make changes to this bug.
Here is a patch for another race condition in the job manager. It is from
David Smith at CERN, and has been tested as part of the VDT.
Bugzilla is driving me crazy. It won't let me attach a file, so I will just
copy and paste it instead.
--- bad/gram/jobmanager/source/globus_gram_job_manager_state.c Mon Feb 2
+++ fix/gram/jobmanager/source/globus_gram_job_manager_state.c Mon Feb 2
@@ -1803,10 +1803,10 @@
event_registered = GLOBUS_TRUE;
- else if(request->two_phase_commit == 0)
- /* Nothing to do here if we are not doing the two-phase
- * commit protocol
+ else if(request->two_phase_commit == 0 || !request->client_contacts)
+ /* Nothing to do here if we are not doing the two-phase
+ * commit protocol or if we have no client callbacks
@@ -2148,11 +2148,6 @@
- * To do a two-phase commit, we need to send an error
- * message (WAITING_FOR_COMMIT) in the initial reply; otherwise,
- * we just return the current status code.
if(request->job_history_status != request->status)
@@ -2165,7 +2160,13 @@
request->unsent_status_change = GLOBUS_FALSE;
- if(request->two_phase_commit != 0)
+ * If there are no client callbacks then skip the two phase end
+ * commit delay, since there is nobody listening to the state
+ * changes to send the commit.
+ if(request->two_phase_commit != 0 && request->client_contacts)
GlobusTimeReltimeSet(delay_time, request->two_phase_commit, 0);
Won't this (like the bug 1550 patch) cause the two-phase end to not work
correctly when no clients are registered for notifications? If there is no
client listening for notification, wouldn't you want the job manager to save
state and exit instead of going to the committed state?
This bug is two years old with no response. If it's still an issue, feel free
to reopen it.
The patches for these are committed to 4.2 branch and trunk.