Compare commits
4 Commits
3a134056fb
...
040dadc394
Author | SHA1 | Date |
---|---|---|
jdar8 | 040dadc394 | |
Brenin Rhodes | ffd1287a06 | |
volodymyr-korzh | c0de4cd88b | |
jdar | 5f0e14106d |
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
type: fix
|
||||
issue: 6451
|
||||
jira: SMILE-9089
|
||||
title: "Previously, activating `BulkDataImport` job would not change jobs status to `RUNNING`,
|
||||
causing it to be processed multiple times instead of single time. This has been fixed."
|
|
@ -217,6 +217,12 @@ public class BulkDataImportSvcImpl implements IBulkDataImportSvc, IHasScheduledJ
|
|||
String biJobId = null;
|
||||
try {
|
||||
biJobId = processJob(bulkImportJobEntity);
|
||||
// set job status to RUNNING so it would not be processed again
|
||||
myTxTemplate.execute(t -> {
|
||||
bulkImportJobEntity.setStatus(BulkImportJobStatusEnum.RUNNING);
|
||||
myJobDao.save(bulkImportJobEntity);
|
||||
return null;
|
||||
});
|
||||
} catch (Exception e) {
|
||||
ourLog.error("Failure while preparing bulk export extract", e);
|
||||
myTxTemplate.execute(t -> {
|
||||
|
@ -256,6 +262,7 @@ public class BulkDataImportSvcImpl implements IBulkDataImportSvc, IHasScheduledJ
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JobInfo getJobStatus(String theBiJobId) {
|
||||
BulkImportJobEntity theJob = findJobByBiJobId(theBiJobId);
|
||||
return new JobInfo()
|
||||
|
|
|
@ -17,6 +17,7 @@ import ca.uhn.fhir.jpa.bulk.imprt.api.IBulkDataImportSvc;
|
|||
import ca.uhn.fhir.jpa.bulk.imprt.model.ActivateJobResult;
|
||||
import ca.uhn.fhir.jpa.bulk.imprt.model.BulkImportJobFileJson;
|
||||
import ca.uhn.fhir.jpa.bulk.imprt.model.BulkImportJobJson;
|
||||
import ca.uhn.fhir.jpa.bulk.imprt.model.BulkImportJobStatusEnum;
|
||||
import ca.uhn.fhir.jpa.bulk.imprt.model.JobFileRowProcessingModeEnum;
|
||||
import ca.uhn.fhir.jpa.searchparam.SearchParameterMap;
|
||||
import ca.uhn.fhir.jpa.subscription.channel.api.ChannelConsumerSettings;
|
||||
|
@ -166,6 +167,8 @@ public class BulkDataImportR4Test extends BaseJpaR4Test implements ITestDataBuil
|
|||
|
||||
ActivateJobResult activateJobOutcome = mySvc.activateNextReadyJob();
|
||||
assertTrue(activateJobOutcome.isActivated);
|
||||
// validate that job changed status from READY to RUNNING
|
||||
assertEquals(BulkImportJobStatusEnum.RUNNING, mySvc.getJobStatus(jobId).getStatus());
|
||||
|
||||
JobInstance instance = myBatch2JobHelper.awaitJobCompletion(activateJobOutcome.jobId, 60);
|
||||
assertNotNull(instance);
|
||||
|
@ -196,6 +199,8 @@ public class BulkDataImportR4Test extends BaseJpaR4Test implements ITestDataBuil
|
|||
|
||||
ActivateJobResult activateJobOutcome = mySvc.activateNextReadyJob();
|
||||
assertTrue(activateJobOutcome.isActivated);
|
||||
// validate that job changed status from READY to RUNNING
|
||||
assertEquals(BulkImportJobStatusEnum.RUNNING, mySvc.getJobStatus(jobId).getStatus());
|
||||
|
||||
JobInstance instance = myBatch2JobHelper.awaitJobCompletion(activateJobOutcome.jobId);
|
||||
assertNotNull(instance);
|
||||
|
|
|
@ -117,6 +117,46 @@ public class FhirSearchDaoR4Test extends BaseJpaR4Test implements IR4SearchIndex
|
|||
assertEquals(id1, ids.get(0).getId());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void searchLuceneAndJPA_withAccurateTotal_ThrowsInvalidRequest() {
|
||||
// setup
|
||||
int numToCreate = 2 * SearchBuilder.getMaximumPageSize() + 10;
|
||||
String identifierToFind = "bcde";
|
||||
|
||||
// create patients
|
||||
for (int i = 0; i < numToCreate; i++) {
|
||||
Patient patient = new Patient();
|
||||
patient.setActive(true);
|
||||
String identifierVal = i % 2 == 0 ? identifierToFind:
|
||||
"abcd";
|
||||
patient.addIdentifier()
|
||||
.setSystem("http://fhir.com")
|
||||
.setValue(identifierVal);
|
||||
|
||||
patient.getText().setDivAsString(
|
||||
"<div>FINDME</div>"
|
||||
);
|
||||
myPatientDao.create(patient, mySrd);
|
||||
}
|
||||
|
||||
// test
|
||||
SearchParameterMap map = new SearchParameterMap();
|
||||
map.setLoadSynchronous(true);
|
||||
map.setSearchTotalMode(SearchTotalModeEnum.ACCURATE);
|
||||
TokenAndListParam tokenAndListParam = new TokenAndListParam();
|
||||
tokenAndListParam.addAnd(new TokenOrListParam().addOr(new TokenParam().setValue("true")));
|
||||
map.add("active", tokenAndListParam);
|
||||
map.add(Constants.PARAM_TEXT, new StringParam("FINDME"));
|
||||
map.add("identifier", new TokenParam(null, identifierToFind));
|
||||
IBundleProvider provider = myPatientDao.search(map, mySrd);
|
||||
|
||||
// verify
|
||||
assertEquals(numToCreate/2, provider.size());
|
||||
List<String> ids = provider.getAllResourceIds();
|
||||
assertEquals(numToCreate/2, ids.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSearchesWithAccurateCountReturnOnlyExpectedResults() {
|
||||
// create 2 patients
|
||||
|
|
|
@ -21,15 +21,20 @@ package ca.uhn.fhir.cr.config.dstu3;
|
|||
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||
import ca.uhn.fhir.cr.config.CrProcessorConfig;
|
||||
import ca.uhn.fhir.cr.config.ProviderLoader;
|
||||
import ca.uhn.fhir.cr.config.ProviderSelector;
|
||||
import ca.uhn.fhir.rest.server.RestfulServer;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
@Import(CrProcessorConfig.class)
|
||||
public class EvaluateOperationConfig {
|
||||
@Bean
|
||||
ca.uhn.fhir.cr.dstu3.library.LibraryEvaluateProvider dstu3LibraryEvaluateProvider() {
|
||||
|
|
|
@ -21,15 +21,20 @@ package ca.uhn.fhir.cr.config.r4;
|
|||
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||
import ca.uhn.fhir.cr.config.CrProcessorConfig;
|
||||
import ca.uhn.fhir.cr.config.ProviderLoader;
|
||||
import ca.uhn.fhir.cr.config.ProviderSelector;
|
||||
import ca.uhn.fhir.rest.server.RestfulServer;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
@Import(CrProcessorConfig.class)
|
||||
public class EvaluateOperationConfig {
|
||||
@Bean
|
||||
ca.uhn.fhir.cr.r4.library.LibraryEvaluateProvider r4LibraryEvaluateProvider() {
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -1054,7 +1054,7 @@
|
|||
<ucum_version>1.0.8</ucum_version>
|
||||
|
||||
<!-- Clinical Reasoning & CQL Support -->
|
||||
<clinical-reasoning.version>3.13.0</clinical-reasoning.version>
|
||||
<clinical-reasoning.version>3.13.1</clinical-reasoning.version>
|
||||
|
||||
<!-- Site properties -->
|
||||
<fontawesomeVersion>5.4.1</fontawesomeVersion>
|
||||
|
|
Loading…
Reference in New Issue