You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ad...@apache.org on 2018/11/26 20:52:32 UTC

[ambari] branch trunk updated: AMBARI-22643. Trying to create some duplicate resources leads to HTTP 500 (#2650)

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

adoroszlai pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 93bfa66  AMBARI-22643. Trying to create some duplicate resources leads to HTTP 500 (#2650)
93bfa66 is described below

commit 93bfa6646545226c80eb149c10e20ece7b95fab9
Author: Doroszlai, Attila <64...@users.noreply.github.com>
AuthorDate: Mon Nov 26 21:52:26 2018 +0100

    AMBARI-22643. Trying to create some duplicate resources leads to HTTP 500 (#2650)
---
 .../server/controller/internal/CredentialResourceProvider.java     | 3 ++-
 .../controller/internal/RepositoryVersionResourceProvider.java     | 7 ++++---
 .../ambari/server/controller/internal/UserResourceProvider.java    | 7 ++++---
 .../controller/internal/VersionDefinitionResourceProvider.java     | 4 ++--
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
index 9e6fe3d..309a71d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.DuplicateResourceException;
 import org.apache.ambari.server.StaticallyInject;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
@@ -368,7 +369,7 @@ public class CredentialResourceProvider extends AbstractControllerResourceProvid
       String alias = getAlias(properties);
 
       if (credentialStoreService.containsCredential(clusterName, alias)) {
-        throw new AmbariException("A credential with the alias of " + alias + " already exists");
+        throw new DuplicateResourceException("A credential with the alias of " + alias + " already exists");
       }
 
       credentialStoreService.setCredential(clusterName, alias, createCredential(properties), credentialStoreType);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
index 81bf1fa..4645da4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
@@ -29,6 +29,7 @@ import java.util.Map.Entry;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.DuplicateResourceException;
 import org.apache.ambari.server.ObjectNotFoundException;
 import org.apache.ambari.server.api.resources.OperatingSystemResourceDefinition;
 import org.apache.ambari.server.api.resources.RepositoryResourceDefinition;
@@ -201,10 +202,10 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
           RepositoryVersionEntity entity = toRepositoryVersionEntity(properties);
 
           if (repositoryVersionDAO.findByDisplayName(entity.getDisplayName()) != null) {
-            throw new AmbariException("Repository version with name " + entity.getDisplayName() + " already exists");
+            throw new DuplicateResourceException("Repository version with name " + entity.getDisplayName() + " already exists");
           }
           if (repositoryVersionDAO.findByStackAndVersion(entity.getStack(), entity.getVersion()) != null) {
-            throw new AmbariException("Repository version for stack " + entity.getStack() + " and version " + entity.getVersion() + " already exists");
+            throw new DuplicateResourceException("Repository version for stack " + entity.getStack() + " and version " + entity.getVersion() + " already exists");
           }
 
           validateRepositoryVersion(repositoryVersionDAO, ambariMetaInfo, entity);
@@ -479,7 +480,7 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
       for (RepoDefinitionEntity repositoryEntity : os.getRepoDefinitionEntities()) {
         String baseUrl = repositoryEntity.getBaseUrl();
         if (!skipUrlCheck && os.isAmbariManaged() && existingRepoUrls.contains(baseUrl)) {
-          throw new AmbariException("Base url " + baseUrl + " is already defined for another repository version. " +
+          throw new DuplicateResourceException("Base url " + baseUrl + " is already defined for another repository version. " +
                   "Setting up base urls that contain the same versions of components will cause stack upgrade to fail.");
         }
       }
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
index 73b7601..8c5a8ff 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.DuplicateResourceException;
 import org.apache.ambari.server.ObjectNotFoundException;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.UserRequest;
@@ -170,7 +171,7 @@ public class UserResourceProvider extends AbstractControllerResourceProvider imp
       public Void invoke() throws AmbariException {
         try {
           createUsers(requests);
-        } catch (ResourceAlreadyExistsException | AuthorizationException e) {
+        } catch (AuthorizationException e) {
           throw new AmbariException(e.getMessage(), e);
         }
         return null;
@@ -354,7 +355,7 @@ public class UserResourceProvider extends AbstractControllerResourceProvider imp
    * @param requests the request objects which define the user.
    * @throws AmbariException when the user cannot be created.
    */
-  private void createUsers(Set<UserRequest> requests) throws AmbariException, ResourceAlreadyExistsException, AuthorizationException {
+  private void createUsers(Set<UserRequest> requests) throws AmbariException, AuthorizationException {
     // First check for obvious issues... then try to create the accounts.  This will help to avoid
     // some accounts being created and some not due to an issue with one or more of the users.
     for (UserRequest request : requests) {
@@ -371,7 +372,7 @@ public class UserResourceProvider extends AbstractControllerResourceProvider imp
         } else {
           message = "One or more of the requested usernames already exists.";
         }
-        throw new ResourceAlreadyExistsException(message);
+        throw new DuplicateResourceException(message);
       }
     }
 
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
index 9f1d7ad..ecd848b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersionDefinitionResourceProvider.java
@@ -296,7 +296,7 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
       if (dryRun) {
         validations.add(err);
       } else {
-        throw new IllegalArgumentException(err);
+        throw new ResourceAlreadyExistsException(err);
       }
     }
 
@@ -307,7 +307,7 @@ public class VersionDefinitionResourceProvider extends AbstractAuthorizedResourc
       if (dryRun) {
         validations.add(err);
       } else {
-        throw new IllegalArgumentException(err);
+        throw new ResourceAlreadyExistsException(err);
       }
     }