fix(Jobs): change request state to prepare_to_finish in case of an error
This commit is contained in:
parent
d4da6aa518
commit
522b57ade4
|
@ -335,20 +335,28 @@ void Job::DoRequestContinuationJob(JobTask & job_task, size_t priority)
|
||||||
cur->request->mount = cur->mount;
|
cur->request->mount = cur->mount;
|
||||||
cur->request->run_state = Request::RunState::job_continuation_run;
|
cur->request->run_state = Request::RunState::job_continuation_run;
|
||||||
functions->ContinueMakeFunction();
|
functions->ContinueMakeFunction();
|
||||||
|
|
||||||
|
if( cur->request->run_state == Request::RunState::assigned_to_job )
|
||||||
|
{
|
||||||
|
log << log3 << "Job: this request (" << cur->request << ") has been moved to the job queue again" << logend;
|
||||||
|
Add(cur->request->job_id, cur->request, cur->request->job, priority);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
main_log << log4 << "Job: directories have not been correctly prepared, finishing the request" << logend;
|
||||||
|
cur->request->http_status = Header::status_500_internal_server_error;
|
||||||
|
cur->request->run_state = Request::RunState::prepare_to_finish;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
main_log << log2 << "Job: request continuation task doesn't have a funtion set, return 500 internal error" << logend;
|
main_log << log2 << "Job: request continuation task doesn't have a funtion set, return 500 internal error" << logend;
|
||||||
cur->request->http_status = Header::status_500_internal_server_error;
|
cur->request->http_status = Header::status_500_internal_server_error;
|
||||||
|
cur->request->run_state = Request::RunState::prepare_to_finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( cur->request->run_state == Request::RunState::assigned_to_job )
|
if( cur->request->run_state != Request::RunState::assigned_to_job )
|
||||||
{
|
|
||||||
log << log3 << "Job: this request (" << cur->request << ") has been moved to the job queue again" << logend;
|
|
||||||
Add(cur->request->job_id, cur->request, cur->request->job, priority);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
cur->request->FinishRequest(); // jak cur->request->function bedzie null to nie zadzialaja funkcje templajtowe
|
cur->request->FinishRequest(); // jak cur->request->function bedzie null to nie zadzialaja funkcje templajtowe
|
||||||
load_avg->StopRequest(cur->request);
|
load_avg->StopRequest(cur->request);
|
||||||
|
|
|
@ -98,7 +98,7 @@ public:
|
||||||
// assigned_to_job - the request is preserved and a new job will be called
|
// assigned_to_job - the request is preserved and a new job will be called
|
||||||
// job_run - run in the job thread (objects are locked)
|
// job_run - run in the job thread (objects are locked)
|
||||||
// finished - the request is finished and the object can be removed
|
// finished - the request is finished and the object can be removed
|
||||||
enum RunState { not_assigned = 0, normal_run, assigned_to_job, job_run, job_continuation_run, finished};
|
enum RunState { not_assigned = 0, normal_run, assigned_to_job, job_run, job_continuation_run, prepare_to_finish, finished};
|
||||||
|
|
||||||
RunState run_state;
|
RunState run_state;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue