You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2015/05/29 22:27:49 UTC
ambari git commit: AMBARI-11540 - Views : Can't create instance
(intermittent) (tbeerbower)
Repository: ambari
Updated Branches:
refs/heads/trunk 5767697ca -> 8f077e154
AMBARI-11540 - Views : Can't create instance (intermittent) (tbeerbower)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8f077e15
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8f077e15
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8f077e15
Branch: refs/heads/trunk
Commit: 8f077e15416d1627ce15536e27c3f0626d19d9b0
Parents: 5767697
Author: tbeerbower <tb...@hortonworks.com>
Authored: Fri May 29 15:54:16 2015 -0400
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Fri May 29 16:27:36 2015 -0400
----------------------------------------------------------------------
.../apache/ambari/server/view/ViewRegistry.java | 21 ++++++++++----------
.../ambari/server/view/ViewRegistryTest.java | 16 +++++++--------
2 files changed, 18 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8f077e15/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
index b3ae2d0..ae68096 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
@@ -501,7 +501,6 @@ public class ViewRegistry {
* does not exist
* @throws SystemException if the instance can not be installed
*/
- @Transactional
public void installViewInstance(ViewInstanceEntity instanceEntity)
throws ValidationException, IllegalArgumentException, SystemException {
ViewEntity viewEntity = getDefinition(instanceEntity.getViewName());
@@ -520,18 +519,9 @@ public class ViewRegistry {
instanceEntity.validate(viewEntity, Validator.ValidationContext.PRE_CREATE);
ResourceTypeEntity resourceTypeEntity = resourceTypeDAO.findByName(ViewEntity.getViewName(viewName, version));
- // create an admin resource to represent this view instance
- instanceEntity.setResource(createViewInstanceResource(resourceTypeEntity));
-
- instanceDAO.merge(instanceEntity);
- ViewInstanceEntity persistedInstance = instanceDAO.findByName(ViewEntity.getViewName(viewName, version), instanceName);
- if (persistedInstance == null) {
- String message = "Instance " + instanceEntity.getViewName() + " can not be found.";
+ ViewInstanceEntity persistedInstance = mergeViewInstance(instanceEntity, resourceTypeEntity);
- LOG.error(message);
- throw new IllegalStateException(message);
- }
instanceEntity.setViewInstanceId(persistedInstance.getViewInstanceId());
instanceEntity.setResource(persistedInstance.getResource());
@@ -1370,6 +1360,15 @@ public class ViewRegistry {
instance1.setProperties(instance2.getProperties());
}
+ // create an admin resource for the given view instance entity and merge it
+ @Transactional
+ private ViewInstanceEntity mergeViewInstance(ViewInstanceEntity instanceEntity, ResourceTypeEntity resourceTypeEntity) {
+ // create an admin resource to represent this view instance
+ instanceEntity.setResource(createViewInstanceResource(resourceTypeEntity));
+
+ return instanceDAO.merge(instanceEntity);
+ }
+
// create an admin resource to represent a view instance
private ResourceEntity createViewInstanceResource(ResourceTypeEntity resourceTypeEntity) {
ResourceEntity resourceEntity = new ResourceEntity();
http://git-wip-us.apache.org/repos/asf/ambari/blob/8f077e15/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
index c66a9ce..a8c938f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
@@ -809,13 +809,14 @@ public class ViewRegistryTest {
ViewConfig config = ViewConfigTest.getConfig(xml_valid_instance);
ViewEntity viewEntity = getViewEntity(config, ambariConfig, getClass().getClassLoader(), "");
ViewInstanceEntity viewInstanceEntity = getViewInstanceEntity(viewEntity, config.getInstances().get(0));
+ ResourceTypeEntity resourceTypeEntity = new ResourceTypeEntity();
- expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(null);
- expect(viewInstanceDAO.findByName("MY_VIEW{1.0.0}", viewInstanceEntity.getInstanceName())).andReturn(viewInstanceEntity);
+ expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
+ expect(resourceTypeDAO.findByName("MY_VIEW{1.0.0}")).andReturn(resourceTypeEntity);
handlerList.addViewInstance(viewInstanceEntity);
- replay(viewDAO, viewInstanceDAO, securityHelper, handlerList);
+ replay(viewDAO, viewInstanceDAO, resourceTypeDAO, securityHelper, handlerList);
registry.addDefinition(viewEntity);
registry.installViewInstance(viewInstanceEntity);
@@ -828,8 +829,9 @@ public class ViewRegistryTest {
Assert.assertEquals("v2-1", instanceEntity.getProperty("p2").getValue() );
Assert.assertEquals(viewInstanceEntity, viewInstanceDefinitions.iterator().next());
+ Assert.assertEquals(resourceTypeEntity, viewInstanceEntity.getResource().getResourceType());
- verify(viewDAO, viewInstanceDAO, securityHelper, handlerList);
+ verify(viewDAO, viewInstanceDAO, resourceTypeDAO, securityHelper, handlerList);
}
@Test
@@ -876,8 +878,7 @@ public class ViewRegistryTest {
ViewInstanceEntity viewInstanceEntity = getViewInstanceEntity(viewEntity, config.getInstances().get(0));
- expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(null);
- expect(viewInstanceDAO.findByName("MY_VIEW{1.0.0}", viewInstanceEntity.getInstanceName())).andReturn(viewInstanceEntity);
+ expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
handlerList.addViewInstance(viewInstanceEntity);
@@ -1099,8 +1100,7 @@ public class ViewRegistryTest {
ViewInstanceEntity viewInstanceEntity = getViewInstanceEntity(viewEntity, config.getInstances().get(0));
ViewInstanceEntity updateInstance = getViewInstanceEntity(viewEntity, invalidConfig.getInstances().get(0));
- expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(null);
- expect(viewInstanceDAO.findByName("MY_VIEW{1.0.0}", viewInstanceEntity.getInstanceName())).andReturn(viewInstanceEntity).anyTimes();
+ expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
replay(viewDAO, viewInstanceDAO, securityHelper);