diff --git a/hapi-deployable-pom/pom.xml b/hapi-deployable-pom/pom.xml
index 6be19192e0c..8cb99220fea 100644
--- a/hapi-deployable-pom/pom.xml
+++ b/hapi-deployable-pom/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-android/pom.xml b/hapi-fhir-android/pom.xml
index b426255dc0c..6526e2d844f 100644
--- a/hapi-fhir-android/pom.xml
+++ b/hapi-fhir-android/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-base/pom.xml b/hapi-fhir-base/pom.xml
index 77391678ee0..269d7037bce 100644
--- a/hapi-fhir-base/pom.xml
+++ b/hapi-fhir-base/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-bom/pom.xml b/hapi-fhir-bom/pom.xml
index 6ee77e7c3af..80f0465f630 100644
--- a/hapi-fhir-bom/pom.xml
+++ b/hapi-fhir-bom/pom.xml
@@ -4,14 +4,14 @@
4.0.0
ca.uhn.hapi.fhir
hapi-fhir-bom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
pom
HAPI FHIR BOM
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-checkstyle/pom.xml b/hapi-fhir-checkstyle/pom.xml
index b85d38797be..12b5e688a7b 100644
--- a/hapi-fhir-checkstyle/pom.xml
+++ b/hapi-fhir-checkstyle/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml b/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml
index 945799435ba..0df7eabbc6c 100644
--- a/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml
+++ b/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml b/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml
index 15fd8f03efe..2fcf899b565 100644
--- a/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml
+++ b/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-fhir-cli
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-cli/hapi-fhir-cli-jpaserver/pom.xml b/hapi-fhir-cli/hapi-fhir-cli-jpaserver/pom.xml
index af41b578c7e..36923a20b4f 100644
--- a/hapi-fhir-cli/hapi-fhir-cli-jpaserver/pom.xml
+++ b/hapi-fhir-cli/hapi-fhir-cli-jpaserver/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../hapi-deployable-pom
diff --git a/hapi-fhir-cli/pom.xml b/hapi-fhir-cli/pom.xml
index 520224f7cd4..50f4c55da96 100644
--- a/hapi-fhir-cli/pom.xml
+++ b/hapi-fhir-cli/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-client-okhttp/pom.xml b/hapi-fhir-client-okhttp/pom.xml
index 8befbdd4228..120dd6f69a0 100644
--- a/hapi-fhir-client-okhttp/pom.xml
+++ b/hapi-fhir-client-okhttp/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-client/pom.xml b/hapi-fhir-client/pom.xml
index a80ba2c725d..65e6d79aa63 100644
--- a/hapi-fhir-client/pom.xml
+++ b/hapi-fhir-client/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-converter/pom.xml b/hapi-fhir-converter/pom.xml
index 988f1031258..7f2f73fc80e 100644
--- a/hapi-fhir-converter/pom.xml
+++ b/hapi-fhir-converter/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-dist/pom.xml b/hapi-fhir-dist/pom.xml
index 3a31155caa9..f8f10fafeb0 100644
--- a/hapi-fhir-dist/pom.xml
+++ b/hapi-fhir-dist/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-docs/pom.xml b/hapi-fhir-docs/pom.xml
index 90acbc2a826..f90af5cb5fc 100644
--- a/hapi-fhir-docs/pom.xml
+++ b/hapi-fhir-docs/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_2_5/upgrade.md b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_2_5/upgrade.md
new file mode 100644
index 00000000000..324b0eace0f
--- /dev/null
+++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_2_5/upgrade.md
@@ -0,0 +1,2 @@
+
+This release fixes a problem with the batch framework which could cause jobs to hang indefinitely if multiple processes attempted to run a maintenance pass simultaneously.
diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_2_5/version.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_2_5/version.yaml
new file mode 100644
index 00000000000..e7dc13ec7e4
--- /dev/null
+++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_2_5/version.yaml
@@ -0,0 +1,3 @@
+---
+release-date: "2023-01-09"
+codename: "Vishwa"
diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4065-batch2-fasttracking-configurable.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4065-batch2-fasttracking-configurable.yaml
index 51de9aaa93f..fec574a19b4 100644
--- a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4065-batch2-fasttracking-configurable.yaml
+++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4065-batch2-fasttracking-configurable.yaml
@@ -1,6 +1,7 @@
---
type: change
issue: 4065
+backport: 6.2.5
title: "A new DaoConfig configuration setting has been added called JobFastTrackingEnabled, default false.
If this setting is enabled, then gated batch jobs that produce only one chunk will immediately trigger a batch
maintenance job. This may be useful for testing, but is not recommended for production use. Prior to this change,
diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4400-dont_fail_on_batch2_double_delivery.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4400-dont_fail_on_batch2_double_delivery.yaml
index 29e5a7410aa..5d01063ce9a 100644
--- a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4400-dont_fail_on_batch2_double_delivery.yaml
+++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4400-dont_fail_on_batch2_double_delivery.yaml
@@ -1,5 +1,6 @@
---
type: fix
issue: 4400
+backport: 6.2.5
title: "When Batch2 work notifications are received twice (e.g. because the notification engine double delivered)
an unrecoverable failure could occur. This has been corrected."
diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4417-double-delivery-in-progress.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4417-double-delivery-in-progress.yaml
index f30ab6c0634..d7aefef577e 100644
--- a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4417-double-delivery-in-progress.yaml
+++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4417-double-delivery-in-progress.yaml
@@ -2,5 +2,6 @@
type: fix
issue: 4417
jira: SMILE-5405
+backport: 6.2.5
title: "Fixed a bug with batch2 which could cause previously completed chunks to be set back to in-progress. This could cause a batch job to never complete.
Now, a safeguard to ensure a job can never return to in-progress once it has completed or failed."
diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4422-reduction-step-multiple-call-quickfix.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4422-reduction-step-multiple-call-quickfix.yaml
new file mode 100644
index 00000000000..5b829ea3b4a
--- /dev/null
+++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/6_4_0/4422-reduction-step-multiple-call-quickfix.yaml
@@ -0,0 +1,11 @@
+---
+type: fix
+issue: 4422
+jira: SMILE-5701
+backport: 6.2.5
+title: "When a Bulk Export job runs with a large amount of data,
+ there is a chance the reduction step can be kicked off multiple
+ times, resulting in data loss in the final report.
+ Jobs will now be set to in-progress before processing to
+ prevent multiple reduction steps from being started.
+ "
diff --git a/hapi-fhir-jacoco/pom.xml b/hapi-fhir-jacoco/pom.xml
index 9fd26de5ce9..9494c835c31 100644
--- a/hapi-fhir-jacoco/pom.xml
+++ b/hapi-fhir-jacoco/pom.xml
@@ -11,7 +11,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jaxrsserver-base/pom.xml b/hapi-fhir-jaxrsserver-base/pom.xml
index d5ded8302c0..8ed093981c4 100644
--- a/hapi-fhir-jaxrsserver-base/pom.xml
+++ b/hapi-fhir-jaxrsserver-base/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpa/pom.xml b/hapi-fhir-jpa/pom.xml
index aace7e6de97..d5630cd4363 100644
--- a/hapi-fhir-jpa/pom.xml
+++ b/hapi-fhir-jpa/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
4.0.0
diff --git a/hapi-fhir-jpaserver-base/pom.xml b/hapi-fhir-jpaserver-base/pom.xml
index 58f104cd3ed..44c5e67b405 100644
--- a/hapi-fhir-jpaserver-base/pom.xml
+++ b/hapi-fhir-jpaserver-base/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/batch2/JpaJobPersistenceImpl.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/batch2/JpaJobPersistenceImpl.java
index f6ecea647be..25daacba02f 100644
--- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/batch2/JpaJobPersistenceImpl.java
+++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/batch2/JpaJobPersistenceImpl.java
@@ -276,7 +276,7 @@ public class JpaJobPersistenceImpl implements IJobPersistence {
}
@Override
- @Transactional(propagation = Propagation.REQUIRED)
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
public boolean canAdvanceInstanceToNextStep(String theInstanceId, String theCurrentStepId) {
List statusesForStep = myWorkChunkRepository.getDistinctStatusesForStep(theInstanceId, theCurrentStepId);
ourLog.debug("Checking whether gated job can advanced to next step. [instanceId={}, currentStepId={}, statusesForStep={}]", theInstanceId, theCurrentStepId, statusesForStep);
@@ -390,6 +390,12 @@ public class JpaJobPersistenceImpl implements IJobPersistence {
return recordsChanged > 0;
}
+ @Override
+ public boolean markInstanceAsStatus(String theInstance, StatusEnum theStatusEnum) {
+ int recordsChanged = myJobInstanceRepository.updateInstanceStatus(theInstance, theStatusEnum);
+ return recordsChanged > 0;
+ }
+
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public JobOperationResultJson cancelInstance(String theInstanceId) {
diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/IBatch2JobInstanceRepository.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/IBatch2JobInstanceRepository.java
index 8396be1b71c..f770aa633a1 100644
--- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/IBatch2JobInstanceRepository.java
+++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/IBatch2JobInstanceRepository.java
@@ -20,10 +20,8 @@ package ca.uhn.fhir.jpa.dao.data;
* #L%
*/
-import ca.uhn.fhir.batch2.model.JobInstance;
import ca.uhn.fhir.batch2.model.StatusEnum;
import ca.uhn.fhir.jpa.entity.Batch2JobInstanceEntity;
-import org.hibernate.engine.jdbc.batch.spi.Batch;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2JobInstanceEntity.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2JobInstanceEntity.java
index 0debd189d19..789a4267ef1 100644
--- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2JobInstanceEntity.java
+++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2JobInstanceEntity.java
@@ -37,6 +37,7 @@ import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
+import javax.persistence.Version;
import java.io.Serializable;
import java.util.Date;
@@ -71,6 +72,11 @@ public class Batch2JobInstanceEntity implements Serializable {
@Temporal(TemporalType.TIMESTAMP)
private Date myEndTime;
+ @Version
+ @Column(name = "UPDATE_TIME", nullable = true)
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date myUpdateTime;
+
@Column(name = "DEFINITION_ID", length = JobDefinition.ID_MAX_LENGTH, nullable = false)
private String myDefinitionId;
@@ -190,6 +196,10 @@ public class Batch2JobInstanceEntity implements Serializable {
myEndTime = theEndTime;
}
+ public Date getUpdateTime() {
+ return myUpdateTime;
+ }
+
public String getId() {
return myId;
}
@@ -289,6 +299,7 @@ public class Batch2JobInstanceEntity implements Serializable {
.append("createTime", myCreateTime)
.append("startTime", myStartTime)
.append("endTime", myEndTime)
+ .append("updateTime", myUpdateTime)
.append("status", myStatus)
.append("cancelled", myCancelled)
.append("combinedRecordsProcessed", myCombinedRecordsProcessed)
diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2WorkChunkEntity.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2WorkChunkEntity.java
index 37d3e05ecf7..a0598b87893 100644
--- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2WorkChunkEntity.java
+++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/entity/Batch2WorkChunkEntity.java
@@ -39,6 +39,7 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
+import javax.persistence.Version;
import java.io.Serializable;
import java.util.Date;
@@ -68,6 +69,10 @@ public class Batch2WorkChunkEntity implements Serializable {
@Column(name = "END_TIME", nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date myEndTime;
+ @Version
+ @Column(name = "UPDATE_TIME", nullable = true)
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date myUpdateTime;
@Column(name = "RECORDS_PROCESSED", nullable = true)
private Integer myRecordsProcessed;
@Column(name = "DEFINITION_ID", length = ID_MAX_LENGTH, nullable = false)
@@ -141,6 +146,10 @@ public class Batch2WorkChunkEntity implements Serializable {
myEndTime = theEndTime;
}
+ public Date getUpdateTime() {
+ return myUpdateTime;
+ }
+
public Integer getRecordsProcessed() {
return myRecordsProcessed;
}
@@ -225,6 +234,7 @@ public class Batch2WorkChunkEntity implements Serializable {
.append("createTime", myCreateTime)
.append("startTime", myStartTime)
.append("endTime", myEndTime)
+ .append("updateTime", myUpdateTime)
.append("recordsProcessed", myRecordsProcessed)
.append("targetStepId", myTargetStepId)
.append("serializedData", mySerializedData)
diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java
index ce6d8b2800b..c6335beccc0 100644
--- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java
+++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/migrate/tasks/HapiFhirJpaMigrationTasks.java
@@ -130,6 +130,18 @@ public class HapiFhirJpaMigrationTasks extends BaseMigrationTasks {
.modifyColumn("20221103.1", "SP_URI")
.nullable()
.withType(ColumnTypeEnum.STRING, 500);
+
+ version.onTable("BT2_JOB_INSTANCE")
+ .addColumn("20230110.1", "UPDATE_TIME")
+ .nullable()
+ .type(ColumnTypeEnum.DATE_TIMESTAMP);
+
+ version.onTable("BT2_WORK_CHUNK")
+ .addColumn("20230110.2", "UPDATE_TIME")
+ .nullable()
+ .type(ColumnTypeEnum.DATE_TIMESTAMP);
+
+
}
private void init610() {
diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/util/JobInstanceUtil.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/util/JobInstanceUtil.java
index 4f0dc0bef3b..29fdc05800a 100644
--- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/util/JobInstanceUtil.java
+++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/util/JobInstanceUtil.java
@@ -48,6 +48,7 @@ public class JobInstanceUtil {
retVal.setStartTime(theEntity.getStartTime());
retVal.setCreateTime(theEntity.getCreateTime());
retVal.setEndTime(theEntity.getEndTime());
+ retVal.setUpdateTime(theEntity.getUpdateTime());
retVal.setCombinedRecordsProcessed(theEntity.getCombinedRecordsProcessed());
retVal.setCombinedRecordsProcessedPerSecond(theEntity.getCombinedRecordsProcessedPerSecond());
retVal.setTotalElapsedMillis(theEntity.getTotalElapsedMillis());
@@ -81,6 +82,7 @@ public class JobInstanceUtil {
retVal.setStatus(theEntity.getStatus());
retVal.setCreateTime(theEntity.getCreateTime());
retVal.setStartTime(theEntity.getStartTime());
+ retVal.setUpdateTime(theEntity.getUpdateTime());
retVal.setEndTime(theEntity.getEndTime());
retVal.setErrorMessage(theEntity.getErrorMessage());
retVal.setErrorCount(theEntity.getErrorCount());
diff --git a/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml b/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml
index 2d2952de95e..6c6b3e6c5f6 100644
--- a/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml
+++ b/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-ips/pom.xml b/hapi-fhir-jpaserver-ips/pom.xml
index 3283bee3887..e52aea6b752 100644
--- a/hapi-fhir-jpaserver-ips/pom.xml
+++ b/hapi-fhir-jpaserver-ips/pom.xml
@@ -3,7 +3,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-mdm/pom.xml b/hapi-fhir-jpaserver-mdm/pom.xml
index 63415f75f11..15aa9542fa4 100644
--- a/hapi-fhir-jpaserver-mdm/pom.xml
+++ b/hapi-fhir-jpaserver-mdm/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-mdm/src/test/java/ca/uhn/fhir/jpa/mdm/svc/MdmControllerSvcImplTest.java b/hapi-fhir-jpaserver-mdm/src/test/java/ca/uhn/fhir/jpa/mdm/svc/MdmControllerSvcImplTest.java
index 52f5a216fe6..bf6b348b92a 100644
--- a/hapi-fhir-jpaserver-mdm/src/test/java/ca/uhn/fhir/jpa/mdm/svc/MdmControllerSvcImplTest.java
+++ b/hapi-fhir-jpaserver-mdm/src/test/java/ca/uhn/fhir/jpa/mdm/svc/MdmControllerSvcImplTest.java
@@ -164,7 +164,8 @@ public class MdmControllerSvcImplTest extends BaseLinkR4Test {
ServletRequestDetails details = new ServletRequestDetails();
details.setTenantId(PARTITION_2);
IBaseParameters clearJob = myMdmControllerSvc.submitMdmClearJob(urls, batchSize, details);
- String jobId = ((StringType) ((Parameters) clearJob).getParameterValue("jobId")).getValueAsString();
+ Parameters.ParametersParameterComponent parameter = ((Parameters) clearJob).getParameter("jobId");
+ String jobId = ((StringType) parameter.getValue()).getValueAsString();
myBatch2JobHelper.awaitJobCompletion(jobId);
assertLinkCount(2);
diff --git a/hapi-fhir-jpaserver-model/pom.xml b/hapi-fhir-jpaserver-model/pom.xml
index 00c77a788cc..a105674e4fa 100644
--- a/hapi-fhir-jpaserver-model/pom.xml
+++ b/hapi-fhir-jpaserver-model/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-searchparam/pom.xml b/hapi-fhir-jpaserver-searchparam/pom.xml
index 4fe982a4c2b..119880cd395 100755
--- a/hapi-fhir-jpaserver-searchparam/pom.xml
+++ b/hapi-fhir-jpaserver-searchparam/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-subscription/pom.xml b/hapi-fhir-jpaserver-subscription/pom.xml
index 5ae8f625fc2..8dd6082afeb 100644
--- a/hapi-fhir-jpaserver-subscription/pom.xml
+++ b/hapi-fhir-jpaserver-subscription/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-test-dstu2/pom.xml b/hapi-fhir-jpaserver-test-dstu2/pom.xml
index 1f436a775f9..1bdf83b72ee 100644
--- a/hapi-fhir-jpaserver-test-dstu2/pom.xml
+++ b/hapi-fhir-jpaserver-test-dstu2/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-test-dstu3/pom.xml b/hapi-fhir-jpaserver-test-dstu3/pom.xml
index bfdca6c9adf..f5797e922c1 100644
--- a/hapi-fhir-jpaserver-test-dstu3/pom.xml
+++ b/hapi-fhir-jpaserver-test-dstu3/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-test-r4/pom.xml b/hapi-fhir-jpaserver-test-r4/pom.xml
index 5005faf7634..28e74fa348d 100644
--- a/hapi-fhir-jpaserver-test-r4/pom.xml
+++ b/hapi-fhir-jpaserver-test-r4/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDaoTest.java b/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDaoTest.java
index 1ad3d5f77f3..3230cd75d38 100644
--- a/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDaoTest.java
+++ b/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDaoTest.java
@@ -43,6 +43,8 @@ import java.util.List;
import java.util.List;
+import java.util.List;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.fail;
diff --git a/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/provider/r4/ConsentInterceptorResourceProviderR4Test.java b/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/provider/r4/ConsentInterceptorResourceProviderR4Test.java
index 4b7b7381f5a..8662518842d 100644
--- a/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/provider/r4/ConsentInterceptorResourceProviderR4Test.java
+++ b/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/provider/r4/ConsentInterceptorResourceProviderR4Test.java
@@ -63,6 +63,10 @@ import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
+import org.springframework.transaction.support.TransactionTemplate;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/hapi-fhir-jpaserver-test-r4b/pom.xml b/hapi-fhir-jpaserver-test-r4b/pom.xml
index 73089187c1d..c11ae5a2df8 100644
--- a/hapi-fhir-jpaserver-test-r4b/pom.xml
+++ b/hapi-fhir-jpaserver-test-r4b/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-test-r5/pom.xml b/hapi-fhir-jpaserver-test-r5/pom.xml
index 1ab431e5507..7060c408d81 100644
--- a/hapi-fhir-jpaserver-test-r5/pom.xml
+++ b/hapi-fhir-jpaserver-test-r5/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-test-utilities/pom.xml b/hapi-fhir-jpaserver-test-utilities/pom.xml
index 71ff3bbabb0..fc01acda8a3 100644
--- a/hapi-fhir-jpaserver-test-utilities/pom.xml
+++ b/hapi-fhir-jpaserver-test-utilities/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-jpaserver-uhnfhirtest/pom.xml b/hapi-fhir-jpaserver-uhnfhirtest/pom.xml
index 05570a1ed4e..35754d1c594 100644
--- a/hapi-fhir-jpaserver-uhnfhirtest/pom.xml
+++ b/hapi-fhir-jpaserver-uhnfhirtest/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-server-mdm/pom.xml b/hapi-fhir-server-mdm/pom.xml
index c657810ada3..244a4e150be 100644
--- a/hapi-fhir-server-mdm/pom.xml
+++ b/hapi-fhir-server-mdm/pom.xml
@@ -7,7 +7,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-server-openapi/pom.xml b/hapi-fhir-server-openapi/pom.xml
index f06e5ce7771..09d5cfc1f09 100644
--- a/hapi-fhir-server-openapi/pom.xml
+++ b/hapi-fhir-server-openapi/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-server/pom.xml b/hapi-fhir-server/pom.xml
index 851c17947d6..d4b4abe54dd 100644
--- a/hapi-fhir-server/pom.xml
+++ b/hapi-fhir-server/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml
index 02300bcde89..3a198fe53b6 100644
--- a/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml
+++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml
@@ -7,7 +7,7 @@
hapi-fhir-serviceloaders
ca.uhn.hapi.fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml
index e72f40f4dd3..3db8187c54d 100644
--- a/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml
+++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml
@@ -7,7 +7,7 @@
hapi-fhir-serviceloaders
ca.uhn.hapi.fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
@@ -20,7 +20,7 @@
ca.uhn.hapi.fhir
hapi-fhir-caching-api
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
com.github.ben-manes.caffeine
diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml
index 3b1e81ac5f7..e58f3afc9ff 100644
--- a/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml
+++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml
@@ -7,7 +7,7 @@
hapi-fhir-serviceloaders
ca.uhn.hapi.fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml
index c7d92c42801..8a320dedd4b 100644
--- a/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml
+++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml
@@ -7,7 +7,7 @@
hapi-fhir
ca.uhn.hapi.fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../pom.xml
diff --git a/hapi-fhir-serviceloaders/pom.xml b/hapi-fhir-serviceloaders/pom.xml
index 9c9cae70ed0..bc7ea7deba4 100644
--- a/hapi-fhir-serviceloaders/pom.xml
+++ b/hapi-fhir-serviceloaders/pom.xml
@@ -5,7 +5,7 @@
hapi-fhir
ca.uhn.hapi.fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml
index 2396b7ac555..8b6fdd97fec 100644
--- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml
+++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml
index 6f34a0c26b9..ea7b07a4ccc 100644
--- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml
+++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir-spring-boot-samples
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
hapi-fhir-spring-boot-sample-client-apache
diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml
index ca9dfd726ae..4f6393f7c0b 100644
--- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml
+++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir-spring-boot-samples
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
hapi-fhir-spring-boot-sample-client-okhttp
diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml
index afa13074307..3ec1440cb18 100644
--- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml
+++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir-spring-boot-samples
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
hapi-fhir-spring-boot-sample-server-jersey
diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml
index a403a414a33..92e14112893 100644
--- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml
+++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir-spring-boot
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
hapi-fhir-spring-boot-samples
diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml
index d3a8ef9d189..d3a530ce6a0 100644
--- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml
+++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-spring-boot/pom.xml b/hapi-fhir-spring-boot/pom.xml
index e1183efa6ff..aafd16791fe 100644
--- a/hapi-fhir-spring-boot/pom.xml
+++ b/hapi-fhir-spring-boot/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-sql-migrate/pom.xml b/hapi-fhir-sql-migrate/pom.xml
index 2cca18a9e71..7f465bd3e06 100644
--- a/hapi-fhir-sql-migrate/pom.xml
+++ b/hapi-fhir-sql-migrate/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-storage-batch2-jobs/pom.xml b/hapi-fhir-storage-batch2-jobs/pom.xml
index be9bcd61988..e2e613dfadf 100644
--- a/hapi-fhir-storage-batch2-jobs/pom.xml
+++ b/hapi-fhir-storage-batch2-jobs/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
4.0.0
diff --git a/hapi-fhir-storage-batch2/pom.xml b/hapi-fhir-storage-batch2/pom.xml
index 4548753fd31..dd334e97348 100644
--- a/hapi-fhir-storage-batch2/pom.xml
+++ b/hapi-fhir-storage-batch2/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/api/IJobPersistence.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/api/IJobPersistence.java
index a98bb53c960..1956d3b1199 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/api/IJobPersistence.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/api/IJobPersistence.java
@@ -228,6 +228,9 @@ public interface IJobPersistence {
*/
boolean markInstanceAsCompleted(String theInstanceId);
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
+ boolean markInstanceAsStatus(String theInstance, StatusEnum theStatusEnum);
+
/**
* Marks an instance as cancelled
*
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/ReductionStepExecutor.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/ReductionStepExecutor.java
index 05f24de1449..94ce7eb89c6 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/ReductionStepExecutor.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/ReductionStepExecutor.java
@@ -55,6 +55,14 @@ public class ReductionStepExecutor {
) {
IReductionStepWorker reductionStepWorker = (IReductionStepWorker) theStep.getJobStepWorker();
+ // we mark it first so that no other maintenance passes will pick this job up!
+ // if we shut down mid process, though, it will be stuck in FINALIZE forever :(
+ if (!myJobPersistence.markInstanceAsStatus(theInstance.getInstanceId(), StatusEnum.FINALIZE)) {
+ ourLog.warn("JobInstance[{}] is already in FINALIZE state, no reducer action performed.", theInstance.getInstanceId());
+ return false;
+ }
+ theInstance.setStatus(StatusEnum.FINALIZE);
+
// We fetch all chunks first...
Iterator chunkIterator = myJobPersistence.fetchAllWorkChunksForStepIterator(theInstance.getInstanceId(), theStep.getStepId());
@@ -63,75 +71,80 @@ public class ReductionStepExecutor {
boolean retval = true;
- while (chunkIterator.hasNext()) {
- WorkChunk chunk = chunkIterator.next();
- if (!chunk.getStatus().isIncomplete()) {
- // This should never happen since jobs with reduction are required to be gated
- ourLog.error("Unexpected chunk {} with status {} found while reducing {}. No chunks feeding into a reduction step should be complete.", chunk.getId(), chunk.getStatus(), theInstance);
- continue;
+ try {
+ while (chunkIterator.hasNext()) {
+ WorkChunk chunk = chunkIterator.next();
+ if (!chunk.getStatus().isIncomplete()) {
+ // This should never happen since jobs with reduction are required to be gated
+ ourLog.error("Unexpected chunk {} with status {} found while reducing {}. No chunks feeding into a reduction step should be complete.", chunk.getId(), chunk.getStatus(), theInstance);
+ continue;
+ }
+
+ if (!failedChunks.isEmpty()) {
+ // we are going to fail all future chunks now
+ failedChunks.add(chunk.getId());
+ } else {
+ try {
+ // feed them into our reduction worker
+ // this is the most likely area to throw,
+ // as this is where db actions and processing is likely to happen
+ ChunkExecutionDetails chunkDetails = new ChunkExecutionDetails<>(chunk.getData(theInputType), theParameters, theInstance.getInstanceId(), chunk.getId());
+
+ ChunkOutcome outcome = reductionStepWorker.consume(chunkDetails);
+
+ switch (outcome.getStatuss()) {
+ case SUCCESS:
+ successfulChunkIds.add(chunk.getId());
+ break;
+
+ case ABORT:
+ ourLog.error("Processing of work chunk {} resulted in aborting job.", chunk.getId());
+
+ // fail entire job - including all future workchunks
+ failedChunks.add(chunk.getId());
+ retval = false;
+ break;
+
+ case FAIL:
+ myJobPersistence.markWorkChunkAsFailed(chunk.getId(),
+ "Step worker failed to process work chunk " + chunk.getId());
+ retval = false;
+ break;
+ }
+ } catch (Exception e) {
+ String msg = String.format(
+ "Reduction step failed to execute chunk reduction for chunk %s with exception: %s.",
+ chunk.getId(),
+ e.getMessage()
+ );
+ // we got a failure in a reduction
+ ourLog.error(msg, e);
+ retval = false;
+
+ myJobPersistence.markWorkChunkAsFailed(chunk.getId(), msg);
+ }
+ }
+ }
+
+ } finally {
+
+ if (!successfulChunkIds.isEmpty()) {
+ // complete the steps without making a new work chunk
+ myJobPersistence.markWorkChunksWithStatusAndWipeData(theInstance.getInstanceId(),
+ successfulChunkIds,
+ StatusEnum.COMPLETED,
+ null // error message - none
+ );
}
if (!failedChunks.isEmpty()) {
- // we are going to fail all future chunks now
- failedChunks.add(chunk.getId());
- } else {
- try {
- // feed them into our reduction worker
- // this is the most likely area to throw,
- // as this is where db actions and processing is likely to happen
- ChunkExecutionDetails chunkDetails = new ChunkExecutionDetails<>(chunk.getData(theInputType), theParameters, theInstance.getInstanceId(), chunk.getId());
-
- ChunkOutcome outcome = reductionStepWorker.consume(chunkDetails);
-
- switch (outcome.getStatuss()) {
- case SUCCESS:
- successfulChunkIds.add(chunk.getId());
- break;
-
- case ABORT:
- ourLog.error("Processing of work chunk {} resulted in aborting job.", chunk.getId());
-
- // fail entire job - including all future workchunks
- failedChunks.add(chunk.getId());
- retval = false;
- break;
-
- case FAIL:
- myJobPersistence.markWorkChunkAsFailed(chunk.getId(),
- "Step worker failed to process work chunk " + chunk.getId());
- retval = false;
- break;
- }
- } catch (Exception e) {
- String msg = String.format(
- "Reduction step failed to execute chunk reduction for chunk %s with exception: %s.",
- chunk.getId(),
- e.getMessage()
- );
- // we got a failure in a reduction
- ourLog.error(msg, e);
- retval = false;
-
- myJobPersistence.markWorkChunkAsFailed(chunk.getId(), msg);
- }
+ // mark any failed chunks as failed for aborting
+ myJobPersistence.markWorkChunksWithStatusAndWipeData(theInstance.getInstanceId(),
+ failedChunks,
+ StatusEnum.FAILED,
+ "JOB ABORTED");
}
- }
- if (!successfulChunkIds.isEmpty()) {
- // complete the steps without making a new work chunk
- myJobPersistence.markWorkChunksWithStatusAndWipeData(theInstance.getInstanceId(),
- successfulChunkIds,
- StatusEnum.COMPLETED,
- null // error message - none
- );
- }
-
- if (!failedChunks.isEmpty()) {
- // mark any failed chunks as failed for aborting
- myJobPersistence.markWorkChunksWithStatusAndWipeData(theInstance.getInstanceId(),
- failedChunks,
- StatusEnum.FAILED,
- "JOB ABORTED");
}
// if no successful chunks, return false
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/SynchronizedJobPersistenceWrapper.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/SynchronizedJobPersistenceWrapper.java
index bbb2c7be99d..ef5ac4e10f4 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/SynchronizedJobPersistenceWrapper.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/coordinator/SynchronizedJobPersistenceWrapper.java
@@ -166,6 +166,11 @@ public class SynchronizedJobPersistenceWrapper implements IJobPersistence {
return myWrap.markInstanceAsCompleted(theInstanceId);
}
+ @Override
+ public boolean markInstanceAsStatus(String theInstance, StatusEnum theStatusEnum) {
+ return myWrap.markInstanceAsStatus(theInstance, theStatusEnum);
+ }
+
@Override
public JobOperationResultJson cancelInstance(String theInstanceId) {
return myWrap.cancelInstance(theInstanceId);
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/maintenance/JobInstanceProcessor.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/maintenance/JobInstanceProcessor.java
index e6a2cd3e186..c253927b0d0 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/maintenance/JobInstanceProcessor.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/maintenance/JobInstanceProcessor.java
@@ -92,6 +92,7 @@ public class JobInstanceProcessor {
break;
case IN_PROGRESS:
case ERRORED:
+ case FINALIZE:
myJobInstanceProgressCalculator.calculateAndStoreInstanceProgress();
break;
case COMPLETED:
@@ -138,6 +139,11 @@ public class JobInstanceProcessor {
return;
}
+ if (jobWorkCursor.isReductionStep() && myInstance.getStatus() == StatusEnum.FINALIZE) {
+ ourLog.warn("Job instance {} is still finalizing - a second reduction job will not be started.", myInstance.getInstanceId());
+ return;
+ }
+
String instanceId = myInstance.getInstanceId();
String currentStepId = jobWorkCursor.getCurrentStepId();
boolean shouldAdvance = myJobPersistence.canAdvanceInstanceToNextStep(instanceId, currentStepId);
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/JobInstance.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/JobInstance.java
index 519faf74221..903d80052ef 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/JobInstance.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/JobInstance.java
@@ -73,6 +73,11 @@ public class JobInstance extends JobInstanceStartRequest implements IModelJson,
@JsonDeserialize(using = JsonDateDeserializer.class)
private Date myEndTime;
+ @JsonProperty(value = "updateTime")
+ @JsonSerialize(using = JsonDateSerializer.class)
+ @JsonDeserialize(using = JsonDateDeserializer.class)
+ private Date myUpdateTime;
+
@JsonProperty(value = "combinedRecordsProcessed")
private Integer myCombinedRecordsProcessed;
@@ -120,6 +125,7 @@ public class JobInstance extends JobInstanceStartRequest implements IModelJson,
setCombinedRecordsProcessedPerSecond(theJobInstance.getCombinedRecordsProcessedPerSecond());
setCreateTime(theJobInstance.getCreateTime());
setEndTime(theJobInstance.getEndTime());
+ setUpdateTime(theJobInstance.getUpdateTime());
setErrorCount(theJobInstance.getErrorCount());
setErrorMessage(theJobInstance.getErrorMessage());
setEstimatedTimeRemaining(theJobInstance.getEstimatedTimeRemaining());
@@ -135,6 +141,14 @@ public class JobInstance extends JobInstanceStartRequest implements IModelJson,
myJobDefinition = theJobInstance.getJobDefinition();
}
+ public void setUpdateTime(Date theUpdateTime) {
+ myUpdateTime = theUpdateTime;
+ }
+
+ public Date getUpdateTime() {
+ return myUpdateTime;
+ }
+
public static JobInstance fromJobDefinition(JobDefinition> theJobDefinition) {
JobInstance instance = new JobInstance();
instance.setJobDefinition(theJobDefinition);
@@ -331,6 +345,7 @@ public class JobInstance extends JobInstanceStartRequest implements IModelJson,
.append("createTime", myCreateTime)
.append("startTime", myStartTime)
.append("endTime", myEndTime)
+ .append("updateTime", myUpdateTime)
.append("combinedRecordsProcessed", myCombinedRecordsProcessed)
.append("combinedRecordsProcessedPerSecond", myCombinedRecordsProcessedPerSecond)
.append("totalElapsedMillis", myTotalElapsedMillis)
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/StatusEnum.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/StatusEnum.java
index 27708c6da07..69b37341829 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/StatusEnum.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/StatusEnum.java
@@ -41,6 +41,11 @@ public enum StatusEnum {
*/
IN_PROGRESS(true, false),
+ /**
+ * For reduction steps
+ */
+ FINALIZE(true, false),
+
/**
* Task completed successfully
*/
@@ -160,6 +165,9 @@ public enum StatusEnum {
// terminal state cannot transition
canTransition = false;
break;
+ case FINALIZE:
+ canTransition = theNewStatus != QUEUED && theNewStatus != IN_PROGRESS;
+ break;
default:
canTransition = null;
break;
diff --git a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/WorkChunk.java b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/WorkChunk.java
index 602d87dd533..cded53a7241 100644
--- a/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/WorkChunk.java
+++ b/hapi-fhir-storage-batch2/src/main/java/ca/uhn/fhir/batch2/model/WorkChunk.java
@@ -72,6 +72,10 @@ public class WorkChunk implements IModelJson {
@JsonDeserialize(using = JsonDateDeserializer.class)
private Date myEndTime;
+ @JsonProperty("updateTime")
+ @JsonSerialize(using = JsonDateSerializer.class)
+ @JsonDeserialize(using = JsonDateDeserializer.class)
+ private Date myUpdateTime;
@JsonProperty(value = "recordsProcessed", access = JsonProperty.Access.READ_ONLY)
private Integer myRecordsProcessed;
@@ -224,4 +228,12 @@ public class WorkChunk implements IModelJson {
myErrorMessage = theErrorMessage;
return this;
}
+
+ public void setUpdateTime(Date theUpdateTime) {
+ myUpdateTime = theUpdateTime;
+ }
+
+ public Date getUpdateTime() {
+ return myUpdateTime;
+ }
}
diff --git a/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/coordinator/WorkChunkProcessorTest.java b/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/coordinator/WorkChunkProcessorTest.java
index 9199d6a1ee3..2c6a59e4d64 100644
--- a/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/coordinator/WorkChunkProcessorTest.java
+++ b/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/coordinator/WorkChunkProcessorTest.java
@@ -199,6 +199,7 @@ public class WorkChunkProcessorTest {
.thenReturn(true);
when(myJobPersistence.fetchAllWorkChunksForStepIterator(eq(INSTANCE_ID), eq(REDUCTION_STEP_ID)))
.thenReturn(chunks.iterator());
+ when(myJobPersistence.markInstanceAsStatus(eq(INSTANCE_ID), eq(StatusEnum.FINALIZE))).thenReturn(true);
when(myReductionStep.consume(any(ChunkExecutionDetails.class)))
.thenReturn(ChunkOutcome.SUCCESS());
when(myReductionStep.run(
@@ -260,6 +261,7 @@ public class WorkChunkProcessorTest {
.thenReturn(true);
when(myJobPersistence.fetchAllWorkChunksForStepIterator(eq(INSTANCE_ID), eq(REDUCTION_STEP_ID)))
.thenReturn(chunks.iterator());
+ when(myJobPersistence.markInstanceAsStatus(eq(INSTANCE_ID), eq(StatusEnum.FINALIZE))).thenReturn(true);
doThrow(new RuntimeException(errorMsg))
.when(myReductionStep).consume(any(ChunkExecutionDetails.class));
@@ -308,6 +310,7 @@ public class WorkChunkProcessorTest {
.thenReturn(true);
when(myJobPersistence.fetchAllWorkChunksForStepIterator(eq(INSTANCE_ID), eq(REDUCTION_STEP_ID)))
.thenReturn(chunks.iterator());
+ when(myJobPersistence.markInstanceAsStatus(eq(INSTANCE_ID), eq(StatusEnum.FINALIZE))).thenReturn(true);
when(myReductionStep.consume(any(ChunkExecutionDetails.class)))
.thenReturn(ChunkOutcome.SUCCESS())
.thenReturn(new ChunkOutcome(ChunkOutcome.Status.FAIL));
@@ -351,6 +354,7 @@ public class WorkChunkProcessorTest {
// when
when(workCursor.isReductionStep())
.thenReturn(true);
+ when(myJobPersistence.markInstanceAsStatus(eq(INSTANCE_ID), eq(StatusEnum.FINALIZE))).thenReturn(true);
when(myJobPersistence.fetchAllWorkChunksForStepIterator(eq(INSTANCE_ID), eq(REDUCTION_STEP_ID)))
.thenReturn(chunks.iterator());
when(myReductionStep.consume(any(ChunkExecutionDetails.class)))
diff --git a/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/model/StatusEnumTest.java b/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/model/StatusEnumTest.java
index 2faabc05431..c89f7ed1c2c 100644
--- a/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/model/StatusEnumTest.java
+++ b/hapi-fhir-storage-batch2/src/test/java/ca/uhn/fhir/batch2/model/StatusEnumTest.java
@@ -15,7 +15,7 @@ class StatusEnumTest {
}
@Test
public void testNotEndedStatuses() {
- assertThat(StatusEnum.getNotEndedStatuses(), containsInAnyOrder(StatusEnum.QUEUED, StatusEnum.IN_PROGRESS));
+ assertThat(StatusEnum.getNotEndedStatuses(), containsInAnyOrder(StatusEnum.QUEUED, StatusEnum.IN_PROGRESS, StatusEnum.FINALIZE));
}
@ParameterizedTest
@@ -61,6 +61,11 @@ class StatusEnumTest {
"FAILED, CANCELLED, false",
"FAILED, ERRORED, false",
"FAILED, FAILED, true",
+ "FINALIZE, COMPLETED, true",
+ "FINALIZE, IN_PROGRESS, false",
+ "FINALIZE, QUEUED, false",
+ "FINALIZE, FAILED, true",
+ "FINALIZE, ERRORED, true",
})
public void testStateTransition(StatusEnum origStatus, StatusEnum newStatus, boolean expected) {
assertEquals(expected, StatusEnum.isLegalStateTransition(origStatus, newStatus));
@@ -68,6 +73,6 @@ class StatusEnumTest {
@Test
public void testEnumSize() {
- assertEquals(6, StatusEnum.values().length, "Update testStateTransition() with new cases");
+ assertEquals(7, StatusEnum.values().length, "Update testStateTransition() with new cases");
}
}
diff --git a/hapi-fhir-storage-cr/pom.xml b/hapi-fhir-storage-cr/pom.xml
index a68941b6eae..d526868807a 100644
--- a/hapi-fhir-storage-cr/pom.xml
+++ b/hapi-fhir-storage-cr/pom.xml
@@ -7,7 +7,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-storage-mdm/pom.xml b/hapi-fhir-storage-mdm/pom.xml
index 2f5ab051b8c..a6398f0e0bf 100644
--- a/hapi-fhir-storage-mdm/pom.xml
+++ b/hapi-fhir-storage-mdm/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
4.0.0
diff --git a/hapi-fhir-storage-test-utilities/pom.xml b/hapi-fhir-storage-test-utilities/pom.xml
index d0d0f6064e0..0418ffd4544 100644
--- a/hapi-fhir-storage-test-utilities/pom.xml
+++ b/hapi-fhir-storage-test-utilities/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
4.0.0
diff --git a/hapi-fhir-storage/pom.xml b/hapi-fhir-storage/pom.xml
index 9fe6c7ba224..eb487e974c3 100644
--- a/hapi-fhir-storage/pom.xml
+++ b/hapi-fhir-storage/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-dstu2.1/pom.xml b/hapi-fhir-structures-dstu2.1/pom.xml
index f499cd35522..104266a8abe 100644
--- a/hapi-fhir-structures-dstu2.1/pom.xml
+++ b/hapi-fhir-structures-dstu2.1/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-dstu2/pom.xml b/hapi-fhir-structures-dstu2/pom.xml
index 93c10d1600e..c80e11b4ab5 100644
--- a/hapi-fhir-structures-dstu2/pom.xml
+++ b/hapi-fhir-structures-dstu2/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-dstu3/pom.xml b/hapi-fhir-structures-dstu3/pom.xml
index 1fddc0d00ef..1a28e61dcfd 100644
--- a/hapi-fhir-structures-dstu3/pom.xml
+++ b/hapi-fhir-structures-dstu3/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-hl7org-dstu2/pom.xml b/hapi-fhir-structures-hl7org-dstu2/pom.xml
index fde9cdccbcc..c486671fc7c 100644
--- a/hapi-fhir-structures-hl7org-dstu2/pom.xml
+++ b/hapi-fhir-structures-hl7org-dstu2/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-r4/pom.xml b/hapi-fhir-structures-r4/pom.xml
index b4772cf0fe5..01f7b6163e8 100644
--- a/hapi-fhir-structures-r4/pom.xml
+++ b/hapi-fhir-structures-r4/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-r4b/pom.xml b/hapi-fhir-structures-r4b/pom.xml
index a1581f1624a..477572bda4a 100644
--- a/hapi-fhir-structures-r4b/pom.xml
+++ b/hapi-fhir-structures-r4b/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-structures-r5/pom.xml b/hapi-fhir-structures-r5/pom.xml
index 8a9aab02bdb..b88b92ffb83 100644
--- a/hapi-fhir-structures-r5/pom.xml
+++ b/hapi-fhir-structures-r5/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-test-utilities/pom.xml b/hapi-fhir-test-utilities/pom.xml
index bcc95a17687..de8a86a686e 100644
--- a/hapi-fhir-test-utilities/pom.xml
+++ b/hapi-fhir-test-utilities/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-testpage-overlay/pom.xml b/hapi-fhir-testpage-overlay/pom.xml
index 2f799e30114..42f45d0f2b4 100644
--- a/hapi-fhir-testpage-overlay/pom.xml
+++ b/hapi-fhir-testpage-overlay/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-fhir-validation-resources-dstu2.1/pom.xml b/hapi-fhir-validation-resources-dstu2.1/pom.xml
index 4002e0aa0c2..149494e2c09 100644
--- a/hapi-fhir-validation-resources-dstu2.1/pom.xml
+++ b/hapi-fhir-validation-resources-dstu2.1/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-validation-resources-dstu2/pom.xml b/hapi-fhir-validation-resources-dstu2/pom.xml
index 6638efd4da4..9317ff0611d 100644
--- a/hapi-fhir-validation-resources-dstu2/pom.xml
+++ b/hapi-fhir-validation-resources-dstu2/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-validation-resources-dstu3/pom.xml b/hapi-fhir-validation-resources-dstu3/pom.xml
index bd5c035c785..3ae7b8be7c5 100644
--- a/hapi-fhir-validation-resources-dstu3/pom.xml
+++ b/hapi-fhir-validation-resources-dstu3/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-validation-resources-r4/pom.xml b/hapi-fhir-validation-resources-r4/pom.xml
index c944be1eeab..e372901ae19 100644
--- a/hapi-fhir-validation-resources-r4/pom.xml
+++ b/hapi-fhir-validation-resources-r4/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-validation-resources-r5/pom.xml b/hapi-fhir-validation-resources-r5/pom.xml
index d754c6cbb1a..5fa0d7acaf3 100644
--- a/hapi-fhir-validation-resources-r5/pom.xml
+++ b/hapi-fhir-validation-resources-r5/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-fhir-validation/pom.xml b/hapi-fhir-validation/pom.xml
index 719e6b0bf6d..0012fe578e5 100644
--- a/hapi-fhir-validation/pom.xml
+++ b/hapi-fhir-validation/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-deployable-pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../hapi-deployable-pom/pom.xml
diff --git a/hapi-tinder-plugin/pom.xml b/hapi-tinder-plugin/pom.xml
index 034d54b7be1..259e7c43bbd 100644
--- a/hapi-tinder-plugin/pom.xml
+++ b/hapi-tinder-plugin/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/hapi-tinder-test/pom.xml b/hapi-tinder-test/pom.xml
index ace9225d9fc..bd99b33ed39 100644
--- a/hapi-tinder-test/pom.xml
+++ b/hapi-tinder-test/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../pom.xml
diff --git a/pom.xml b/pom.xml
index 584cfb3f017..05346abf08e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-fhir
pom
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
HAPI-FHIR
An open-source implementation of the FHIR specification in Java.
https://hapifhir.io
@@ -2132,7 +2132,7 @@
ca.uhn.hapi.fhir
hapi-fhir-checkstyle
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
diff --git a/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml b/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml
index bfd09431ee1..9c449d93b38 100644
--- a/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml
+++ b/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml
@@ -6,7 +6,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../pom.xml
diff --git a/tests/hapi-fhir-base-test-mindeps-client/pom.xml b/tests/hapi-fhir-base-test-mindeps-client/pom.xml
index 037ed097a34..0dd0d834c18 100644
--- a/tests/hapi-fhir-base-test-mindeps-client/pom.xml
+++ b/tests/hapi-fhir-base-test-mindeps-client/pom.xml
@@ -4,7 +4,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../pom.xml
diff --git a/tests/hapi-fhir-base-test-mindeps-server/pom.xml b/tests/hapi-fhir-base-test-mindeps-server/pom.xml
index 275585c438c..74ea4e9adb0 100644
--- a/tests/hapi-fhir-base-test-mindeps-server/pom.xml
+++ b/tests/hapi-fhir-base-test-mindeps-server/pom.xml
@@ -5,7 +5,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 6.3.13-SNAPSHOT
+ 6.3.14-SNAPSHOT
../../pom.xml