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 <[email protected]>
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);
       }
     }
 

Reply via email to