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