This is an automated email from the ASF dual-hosted git repository.

shenlin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git

commit 87050c04fc9bcbe0a8a77204ce22152c7c5de6cd
Author: zh378814 <[email protected]>
AuthorDate: Wed Aug 23 10:49:49 2023 +0800

    fix duplicate key exception
---
 .../model/apidestination/ApiDestinationService.java  | 12 +++++++++---
 .../domain/model/connection/ConnectionService.java   | 20 +++++++++++++-------
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
index 19968fd..e14509c 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
@@ -30,6 +30,7 @@ import 
org.apache.rocketmq.eventbridge.domain.model.apidestination.parameter.Htt
 import 
org.apache.rocketmq.eventbridge.domain.repository.ApiDestinationRepository;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
 import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -63,9 +64,14 @@ public class ApiDestinationService extends 
AbstractResourceService {
                 ApiDestinationCountExceedLimit);
         checkHttpApiParameters(eventApiDestinationDTO.getApiParams());
         checkConnection(eventApiDestinationDTO);
-        final Boolean apiDestination = 
apiDestinationRepository.createApiDestination(eventApiDestinationDTO);
-        if (apiDestination) {
-            return eventApiDestinationDTO.getName();
+        try {
+            final Boolean apiDestination = 
apiDestinationRepository.createApiDestination(eventApiDestinationDTO);
+            if (apiDestination) {
+                return eventApiDestinationDTO.getName();
+            }
+        } catch (DuplicateKeyException duplicateKeyException) {
+            log.error("ApiDestinationService | createApiDestination | error => 
", duplicateKeyException);
+            throw new 
EventBridgeException(EventBridgeErrorCode.ApiDestinationAlreadyExist, 
eventApiDestinationDTO.getName());
         }
         return null;
     }
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
index cd44e0a..cc4286c 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
@@ -46,6 +46,7 @@ import 
org.apache.rocketmq.eventbridge.domain.rpc.NetworkServiceAPI;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
 import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -86,15 +87,20 @@ public class ConnectionService extends 
AbstractResourceService {
             checkAuthParameters(connectionDTO.getAuthParameters());
             
connectionDTO.setAuthParameters(setSecretData(connectionDTO.getAuthParameters(),
 connectionDTO.getAccountId(), connectionDTO.getConnectionName()));
         }
-        if (connectionRepository.createConnection(connectionDTO)) {
-            if 
(NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connectionDTO.getNetworkParameters().getNetworkType()))
 {
-                List<ConnectionDTO> connection = 
getConnection(connectionDTO.getAccountId(), connectionDTO.getConnectionName());
-                if (!CollectionUtils.isEmpty(connection)) {
-                    NetworkParameters networkParameters = 
connectionDTO.getNetworkParameters();
-                    
networkServiceAPI.createPrivateNetwork(connectionDTO.getAccountId(), 
Integer.toString(connection.get(0).getId()), networkParameters.getVpcId(), 
networkParameters.getVswitcheId(), networkParameters.getSecurityGroupId());
+        try {
+            if (connectionRepository.createConnection(connectionDTO)) {
+                if 
(NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connectionDTO.getNetworkParameters().getNetworkType()))
 {
+                    List<ConnectionDTO> connection = 
getConnection(connectionDTO.getAccountId(), connectionDTO.getConnectionName());
+                    if (!CollectionUtils.isEmpty(connection)) {
+                        NetworkParameters networkParameters = 
connectionDTO.getNetworkParameters();
+                        
networkServiceAPI.createPrivateNetwork(connectionDTO.getAccountId(), 
Integer.toString(connection.get(0).getId()), networkParameters.getVpcId(), 
networkParameters.getVswitcheId(), networkParameters.getSecurityGroupId());
+                    }
                 }
+                return connectionDTO.getConnectionName();
             }
-            return connectionDTO.getConnectionName();
+        } catch (DuplicateKeyException duplicateKeyException) {
+            log.error("ConnectionService | createConnection | error => ", 
duplicateKeyException);
+            throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionAlreadyExist, 
connectionDTO.getConnectionName());
         }
         return null;
     }

Reply via email to