fix duplicate key exception
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.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 @@
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.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 @@
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;
}