fix: correctly set a Request::RunState::job_run flag to the background request

The flag should be set to the task.request and not to the cur->request.
The cur->request could have been already changed by the main thread.
This commit is contained in:
Tomasz Sowa 2023-08-25 16:24:27 +02:00
parent cf383fa026
commit 6d256e6512
Signed by: tomasz.sowa
GPG Key ID: 662CC1438638588B
1 changed files with 4 additions and 10 deletions

View File

@ -273,26 +273,20 @@ void Job::DoJob(JobTask & task, size_t priority)
if( task.request ) if( task.request )
{ {
Cur local_cur; Cur local_cur;
// is this correct? we can read the task.request->session ... from the second thread?
// chyba tak bo ta struktura zostaje na stosie specjalnie dla joba do uzytku
local_cur.request = task.request; local_cur.request = task.request;
local_cur.request->run_state = Request::RunState::job_run;
local_cur.session = task.request->session; local_cur.session = task.request->session;
local_cur.mount = task.request->mount; local_cur.mount = task.request->mount;
cur->request->run_state = Request::RunState::job_run;
res = plugin->Call(model_connector, &log, &local_cur, WINIX_JOB, &task.job, nullptr, task.job_type, task.job_id); res = plugin->Call(model_connector, &log, &local_cur, WINIX_JOB, &task.job, nullptr, task.job_type, task.job_id);
log << logsave; log << logsave;
{ {
Winix::Lock lock(synchro); Winix::Lock lock(synchro);
cur->request = local_cur.request; Cur old_cur = *cur;
cur->session = local_cur.session; *cur = local_cur;
cur->mount = local_cur.mount;
// winix templates functions uses its own cur (global pointer in TemplatesFunctions namespace)
// so we have to set it correctly
DoRequestContinuationJob(task, priority); DoRequestContinuationJob(task, priority);
*cur = old_cur;
} }
} }
else else