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 <ars...@apache.org> 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); }