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