mirror of https://github.com/BOINC/boinc.git
change to running state when it is reported by condor
fix missing cal of subresult callback git-svn-id: svn+ssh://cvs.lpds.sztaki.hu/var/lib/svn/szdg/dcapi/trunk@874 a7169a2c-3604-0410-bc95-c702d8d87f7a
This commit is contained in:
parent
3955c4b1aa
commit
53a12aa568
|
@ -89,6 +89,17 @@ _DC_wu_update_condor_events(DC_Workunit *wu)
|
|||
g_strdup(ae->getReason());
|
||||
}
|
||||
}
|
||||
if (e.event == ULOG_EXECUTE)
|
||||
{
|
||||
class ExecuteEvent *ae=
|
||||
dynamic_cast<class ExecuteEvent *>
|
||||
(event);
|
||||
if (ae)
|
||||
{
|
||||
e.exec_info.host=
|
||||
g_strdup(ae->executeHost);
|
||||
}
|
||||
}
|
||||
g_array_append_val(wu->condor_events, e);
|
||||
DC_log(LOG_DEBUG, "Condor event %d %s",
|
||||
event->eventNumber,
|
||||
|
@ -123,9 +134,12 @@ _DC_wu_condor2api_event(DC_Workunit *wu)
|
|||
if (!ce->reported)
|
||||
{
|
||||
ce->reported= TRUE;
|
||||
DC_log(LOG_DEBUG, "Job terminated, "
|
||||
"asked to susp=%d",
|
||||
wu->asked_to_suspend);
|
||||
if (wu->asked_to_suspend)
|
||||
{
|
||||
wu->state= DC_WU_SUSPENDED;
|
||||
_DC_wu_set_state(wu, DC_WU_SUSPENDED);
|
||||
wu->asked_to_suspend= FALSE;
|
||||
}
|
||||
else
|
||||
|
@ -141,11 +155,19 @@ _DC_wu_condor2api_event(DC_Workunit *wu)
|
|||
e->result= _DC_result_create(wu);*/
|
||||
DC_log(LOG_DEBUG, "Result of the event: %p",
|
||||
e->result);
|
||||
wu->state= DC_WU_FINISHED;
|
||||
_DC_wu_set_state(wu, DC_WU_FINISHED);
|
||||
return(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ce->event == ULOG_EXECUTE)
|
||||
{
|
||||
if (!ce->reported)
|
||||
{
|
||||
ce->reported= TRUE;
|
||||
_DC_wu_set_state(wu, DC_WU_RUNNING);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ DC_submitWU(DC_Workunit *wu)
|
|||
|
||||
DC_log(LOG_DEBUG, "DC_submitWU(%p-\"%s\")", wu, wu->data.name);
|
||||
|
||||
if (wu->state != DC_WU_READY)
|
||||
if (wu->data.state != DC_WU_READY)
|
||||
{
|
||||
DC_log(LOG_INFO, "Re-submission of %s", wu->data.name);
|
||||
return(DC_ERR_BADPARAM);
|
||||
|
@ -79,7 +79,7 @@ DC_submitWU(DC_Workunit *wu)
|
|||
sleep(1);
|
||||
_DC_wu_update_condor_events(wu);
|
||||
}
|
||||
wu->state= DC_WU_RUNNING;
|
||||
/*_DC_wu_set_state(wu, DC_WU_RUNNING);*/
|
||||
id= DC_getWUId(wu);
|
||||
DC_log(LOG_INFO, "Condor id of wu's job: %s", id);
|
||||
g_free(id);
|
||||
|
@ -123,16 +123,16 @@ DC_cancelWU(DC_Workunit *wu)
|
|||
|
||||
DC_log(LOG_DEBUG, "DC_cancelWU(%p-\"%s\")", wu, wu->data.name);
|
||||
|
||||
if (wu->state != DC_WU_RUNNING ||
|
||||
wu->state != DC_WU_SUSPENDED)
|
||||
if (wu->data.state != DC_WU_RUNNING ||
|
||||
wu->data.state != DC_WU_SUSPENDED)
|
||||
{
|
||||
DC_log(LOG_NOTICE, "Can not cancel a non-running/suspended wu");
|
||||
return(DC_ERR_INTERNAL);
|
||||
}
|
||||
ret= _DC_stop_condor_job(wu);
|
||||
if (wu->state == DC_WU_SUSPENDED)
|
||||
if (wu->data.state == DC_WU_SUSPENDED)
|
||||
ret= 0;
|
||||
wu->state= DC_WU_ABORTED;
|
||||
_DC_wu_set_state(wu, DC_WU_ABORTED);
|
||||
return((ret==0)?DC_OK:DC_ERR_BADPARAM);
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ DC_suspendWU(DC_Workunit *wu)
|
|||
|
||||
DC_log(LOG_DEBUG, "DC_suspendWU(%p-\"%s\")", wu, wu->data.name);
|
||||
|
||||
if (wu->state != DC_WU_RUNNING)
|
||||
if (wu->data.state != DC_WU_RUNNING)
|
||||
{
|
||||
DC_log(LOG_NOTICE, "Can not suspend a non-running wu");
|
||||
return(DC_ERR_INTERNAL);
|
||||
|
@ -172,7 +172,7 @@ DC_resumeWU(DC_Workunit *wu)
|
|||
|
||||
DC_log(LOG_DEBUG, "DC_resumeWU(%p-\"%s\")", wu, wu->data.name);
|
||||
|
||||
if (wu->state != DC_WU_SUSPENDED)
|
||||
if (wu->data.state != DC_WU_SUSPENDED)
|
||||
{
|
||||
DC_log(LOG_NOTICE, "Can not resume a non-suspended wu");
|
||||
return(DC_ERR_INTERNAL);
|
||||
|
@ -186,7 +186,7 @@ DC_resumeWU(DC_Workunit *wu)
|
|||
sleep(1);
|
||||
_DC_wu_update_condor_events(wu);
|
||||
}
|
||||
wu->state= DC_WU_RUNNING;
|
||||
_DC_wu_set_state(wu, DC_WU_RUNNING);
|
||||
id= DC_getWUId(wu);
|
||||
DC_log(LOG_INFO, "Condor id of wu's job: %s", id);
|
||||
g_free(id);
|
||||
|
|
|
@ -213,7 +213,7 @@ DC_createWU(const char *clientName,
|
|||
|
||||
_DC_wu_make_client_config(wu);
|
||||
_DC_wu_make_client_executables(wu);
|
||||
wu->state= DC_WU_READY;
|
||||
_DC_wu_set_state(wu, DC_WU_READY);
|
||||
|
||||
return(wu);
|
||||
}
|
||||
|
@ -253,11 +253,11 @@ DC_destroyWU(DC_Workunit *wu)
|
|||
i, wu->data.name);
|
||||
g_string_free(s, TRUE);
|
||||
|
||||
if (wu->state == DC_WU_READY ||
|
||||
wu->state == DC_WU_UNKNOWN)
|
||||
if (wu->data.state == DC_WU_READY ||
|
||||
wu->data.state == DC_WU_UNKNOWN)
|
||||
DC_log(LOG_NOTICE, "Destroying an unstarted wu: %s", wu->data.name);
|
||||
if (wu->state == DC_WU_RUNNING ||
|
||||
wu->state == DC_WU_SUSPENDED)
|
||||
if (wu->data.state == DC_WU_RUNNING ||
|
||||
wu->data.state == DC_WU_SUSPENDED)
|
||||
{
|
||||
DC_log(LOG_NOTICE, "Destroying a started but not yet "
|
||||
"finished wu: %s", wu->data.name);
|
||||
|
@ -392,7 +392,7 @@ DC_addWUInput(DC_Workunit *wu,
|
|||
DC_log(LOG_DEBUG, "DC_addWUInput(%p-\"%s\", %s, %s, %d)",
|
||||
wu, wu->data.name, logicalFileName, URL, fileMode);
|
||||
|
||||
if (wu->state != DC_WU_READY)
|
||||
if (wu->data.state != DC_WU_READY)
|
||||
{
|
||||
DC_log(LOG_INFO, "Modifying started wu %s", wu->data.name);
|
||||
return(DC_ERR_BADPARAM);
|
||||
|
@ -466,7 +466,7 @@ DC_addWUOutput(DC_Workunit *wu, const char *logicalFileName)
|
|||
DC_log(LOG_DEBUG, "DC_addWUOutput(%p-\"%s\", %s)",
|
||||
wu, wu->data.name, logicalFileName);
|
||||
|
||||
if (wu->state != DC_WU_READY)
|
||||
if (wu->data.state != DC_WU_READY)
|
||||
{
|
||||
DC_log(LOG_INFO, "Modifying started wu %s", wu->data.name);
|
||||
return(DC_ERR_BADPARAM);
|
||||
|
@ -494,7 +494,7 @@ DC_setWUPriority(DC_Workunit *wu, int priority)
|
|||
DC_log(LOG_DEBUG, "DC_setWUPriority(%p-\"%s\", %d)",
|
||||
wu, wu->data.name, priority);
|
||||
|
||||
if (wu->state != DC_WU_READY)
|
||||
if (wu->data.state != DC_WU_READY)
|
||||
{
|
||||
DC_log(LOG_INFO, "Modifying started wu %s", wu->data.name);
|
||||
return(DC_ERR_BADPARAM);
|
||||
|
@ -525,7 +525,7 @@ DC_getWUState(DC_Workunit *wu)
|
|||
{
|
||||
if (!_DC_wu_check(wu))
|
||||
return(DC_WU_UNKNOWN);
|
||||
return(wu->state);
|
||||
return(wu->data.state);
|
||||
}
|
||||
|
||||
|
||||
|
@ -584,7 +584,7 @@ static void _DC_dd_check_state(void *key, void *value, void *ptr)
|
|||
{
|
||||
DC_Workunit *wu=(DC_Workunit *)value;
|
||||
int *count= (int *)ptr;
|
||||
if (wu->state == _DC_dd_look_for_state)
|
||||
if (wu->data.state == _DC_dd_look_for_state)
|
||||
++(*count);
|
||||
}
|
||||
|
||||
|
@ -608,6 +608,8 @@ _DC_process_event(DC_MasterEvent *event)
|
|||
if (!event)
|
||||
return;
|
||||
|
||||
DC_log(LOG_DEBUG, "Processing an event %d, calling callback...",
|
||||
event->type);
|
||||
switch (event->type)
|
||||
{
|
||||
case DC_MASTER_RESULT:
|
||||
|
@ -619,6 +621,10 @@ _DC_process_event(DC_MasterEvent *event)
|
|||
}
|
||||
case DC_MASTER_SUBRESULT:
|
||||
{
|
||||
if (_DC_subresult_callback)
|
||||
(*_DC_subresult_callback)(event->wu,
|
||||
event->subresult->label,
|
||||
event->subresult->path);
|
||||
break;
|
||||
}
|
||||
case DC_MASTER_MESSAGE:
|
||||
|
@ -673,7 +679,10 @@ _DC_check_filtered_wu_event(gpointer wu_name, gpointer w, gpointer ptr)
|
|||
if (filter &&
|
||||
((strcmp(DC_getWUTag(wu), filter) != 0)))
|
||||
return(FALSE);
|
||||
_DC_filtered_event= DC_waitWUEvent(wu, 0);
|
||||
if ((_DC_filtered_event= DC_waitWUEvent(wu, 0)) != NULL)
|
||||
DC_log(LOG_DEBUG,
|
||||
"DC_waitMasterEvent found an event for wu %s",
|
||||
wu->data.name);
|
||||
return(!_DC_filtered_event);
|
||||
}
|
||||
|
||||
|
@ -728,9 +737,14 @@ DC_waitWUEvent(DC_Workunit *wu, int timeout)
|
|||
wu, wu->data.name, timeout);
|
||||
|
||||
_DC_wu_update_condor_events(wu);
|
||||
me= _DC_wu_check_client_messages(wu);
|
||||
if ((me= _DC_wu_check_client_messages(wu)) != NULL)
|
||||
DC_log(LOG_DEBUG, "DC_waitWUEvent found a message");
|
||||
if (!me)
|
||||
me= _DC_wu_condor2api_event(wu);
|
||||
{
|
||||
if ((me= _DC_wu_condor2api_event(wu)) != NULL)
|
||||
DC_log(LOG_DEBUG,
|
||||
"DC_waitWUEvent found a condor event");
|
||||
}
|
||||
if (me || timeout==0)
|
||||
return(me);
|
||||
start= time(NULL);
|
||||
|
@ -739,9 +753,15 @@ DC_waitWUEvent(DC_Workunit *wu, int timeout)
|
|||
{
|
||||
sleep(1);
|
||||
_DC_wu_update_condor_events(wu);
|
||||
me= _DC_wu_check_client_messages(wu);
|
||||
if ((me= _DC_wu_check_client_messages(wu)) != NULL)
|
||||
DC_log(LOG_DEBUG, "DC_waitWUEvent found a message");
|
||||
if (!me)
|
||||
me= _DC_wu_condor2api_event(wu);
|
||||
{
|
||||
if ((me= _DC_wu_condor2api_event(wu)) != NULL)
|
||||
DC_log(LOG_DEBUG,
|
||||
"DC_waitWUEvent found a "
|
||||
"condor event");
|
||||
}
|
||||
if (me)
|
||||
return(me);
|
||||
now= time(NULL);
|
||||
|
|
Loading…
Reference in New Issue