This is an automated email from the ASF dual-hosted git repository.
fanjia pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/seatunnel-web.git
The following commit(s) were added to refs/heads/main by this push:
new 4ce0dabc7 [Bug] DuplicateKeyException encountered while retrieving the
job execution history (#277)
4ce0dabc7 is described below
commit 4ce0dabc71157e4da0e3b551aa3fd58beb22a138
Author: Mohammad Arshad <[email protected]>
AuthorDate: Thu Jan 30 04:50:06 2025 +0530
[Bug] DuplicateKeyException encountered while retrieving the job execution
history (#277)
---
.../apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
index edf49f7fd..feb2c2259 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
@@ -46,6 +46,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service;
import lombok.NonNull;
@@ -596,7 +597,12 @@ public class JobMetricsServiceImpl extends
SeatunnelBaseServiceImpl implements I
JobInstanceHistory byInstanceId =
jobInstanceHistoryDao.getByInstanceId(jobInstance.getId());
if (byInstanceId == null) {
- jobInstanceHistoryDao.insert(jobHistoryFromEngine);
+ try {
+ jobInstanceHistoryDao.insert(jobHistoryFromEngine);
+ } catch (DuplicateKeyException e) {
+ // Handle the race condition gracefully
+
jobInstanceHistoryDao.updateJobInstanceHistory(jobHistoryFromEngine);
+ }
} else {
jobInstanceHistoryDao.updateJobInstanceHistory(jobHistoryFromEngine);
}