FINERACT-1678: FineractContext had wrong dates when a cron job got triggered

This commit is contained in:
Adam Saghy
2023-01-24 15:39:34 +01:00
parent e1e3ba2c10
commit 784ae1aabe
3 changed files with 5 additions and 8 deletions
@@ -92,7 +92,7 @@ public class AsyncLoanCOBExecutorServiceImpl implements AsyncLoanCOBExecutorServ
executingBusinessDate.format(DateTimeFormatter.ISO_DATE)); executingBusinessDate.format(DateTimeFormatter.ISO_DATE));
Set<JobParameterDTO> jobParameters = Collections.singleton(jobParameterDTO); Set<JobParameterDTO> jobParameters = Collections.singleton(jobParameterDTO);
saveCatchUpJobParameter(scheduledJobDetail); saveCatchUpJobParameter(scheduledJobDetail);
jobStarter.run(job, scheduledJobDetail, ThreadLocalContextUtil.getContext(), jobParameters); jobStarter.run(job, scheduledJobDetail, jobParameters);
executingBusinessDate = executingBusinessDate.plusDays(1); executingBusinessDate = executingBusinessDate.plusDays(1);
} }
} }
@@ -338,7 +338,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
jobDetailFactoryBean.setGroup(scheduledJobDetail.getGroupName()); jobDetailFactoryBean.setGroup(scheduledJobDetail.getGroupName());
jobDetailFactoryBean.setConcurrent(false); jobDetailFactoryBean.setConcurrent(false);
jobDetailFactoryBean.setArguments(job, scheduledJobDetail, ThreadLocalContextUtil.getContext(), jobParameterDTOSet); jobDetailFactoryBean.setArguments(job, scheduledJobDetail, jobParameterDTOSet);
jobDetailFactoryBean.afterPropertiesSet(); jobDetailFactoryBean.afterPropertiesSet();
return jobDetailFactoryBean.getObject(); return jobDetailFactoryBean.getObject();
} }
@@ -26,8 +26,6 @@ import java.util.Optional;
import java.util.Set; import java.util.Set;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.infrastructure.core.domain.FineractContext;
import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil;
import org.apache.fineract.infrastructure.jobs.data.JobParameterDTO; import org.apache.fineract.infrastructure.jobs.data.JobParameterDTO;
import org.apache.fineract.infrastructure.jobs.domain.JobParameterRepository; import org.apache.fineract.infrastructure.jobs.domain.JobParameterRepository;
import org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetail; import org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetail;
@@ -56,10 +54,9 @@ public class JobStarter {
private final List<JobParameterProvider> jobParameterProviders; private final List<JobParameterProvider> jobParameterProviders;
private final JobNameService jobNameService; private final JobNameService jobNameService;
public void run(Job job, ScheduledJobDetail scheduledJobDetail, FineractContext fineractContext, public void run(Job job, ScheduledJobDetail scheduledJobDetail, Set<JobParameterDTO> jobParameterDTOSet)
Set<JobParameterDTO> jobParameterDTOSet) throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException,
JobParametersInvalidException, JobRestartException { JobRestartException {
ThreadLocalContextUtil.init(fineractContext);
Map<String, JobParameter> jobParameterMap = getJobParameter(scheduledJobDetail); Map<String, JobParameter> jobParameterMap = getJobParameter(scheduledJobDetail);
JobParameters jobParameters = new JobParametersBuilder(jobExplorer).getNextJobParameters(job) JobParameters jobParameters = new JobParametersBuilder(jobExplorer).getNextJobParameters(job)
.addJobParameters(new JobParameters(jobParameterMap)) .addJobParameters(new JobParameters(jobParameterMap))