fix(Jobs): change request state to prepare_to_finish in case of an error

This commit is contained in:
Tomasz Sowa 2022-07-25 18:37:39 +02:00
parent d4da6aa518
commit 522b57ade4
2 changed files with 15 additions and 7 deletions

View File

@ -335,20 +335,28 @@ void Job::DoRequestContinuationJob(JobTask & job_task, size_t priority)
cur->request->mount = cur->mount;
cur->request->run_state = Request::RunState::job_continuation_run;
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
{
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->run_state = Request::RunState::prepare_to_finish;
}
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
if( cur->request->run_state != Request::RunState::assigned_to_job )
{
cur->request->FinishRequest(); // jak cur->request->function bedzie null to nie zadzialaja funkcje templajtowe
load_avg->StopRequest(cur->request);

View File

@ -98,7 +98,7 @@ public:
// assigned_to_job - the request is preserved and a new job will be called
// job_run - run in the job thread (objects are locked)
// 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;