You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by sh...@apache.org on 2023/08/25 03:01:00 UTC
[rocketmq-eventbridge] 01/02: fix duplicate key exception
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 <wb...@alibaba-inc.com>
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;
}