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);
         }

Reply via email to