Ver Fonte

AMBARI-12063 Config groups can't be saved in some cases (additional patch) (dsen)

Dmytro Sen há 10 anos atrás
pai
commit
f3546fc285

+ 3 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java

@@ -365,6 +365,7 @@ public class ConfigGroupImpl implements ConfigGroup {
     if (isPersisted) {
       // Delete existing mappings and create new ones
       configGroupHostMappingDAO.removeAllByGroup(configGroupEntity.getGroupId());
+      configGroupDAO.refresh(configGroupEntity);
       configGroupEntity.setConfigGroupHostMappingEntities(new HashSet<ConfigGroupHostMappingEntity>());
     }
 
@@ -381,13 +382,13 @@ public class ConfigGroupImpl implements ConfigGroup {
           configGroupEntity.getConfigGroupHostMappingEntities().add
                   (hostMappingEntity);
           configGroupHostMappingDAO.create(hostMappingEntity);
-          // TODO: Make sure this does not throw Nullpointer based on JPA docs
         } else {
           LOG.warn("Host seems to be deleted, cannot create host to config " +
             "group mapping, host = " + host.getHostName());
         }
       }
     }
+    // TODO: Make sure this does not throw Nullpointer based on JPA docs
     configGroupEntity = configGroupDAO.merge(configGroupEntity);
   }
 
@@ -401,6 +402,7 @@ public class ConfigGroupImpl implements ConfigGroup {
   void persistConfigMapping(ClusterEntity clusterEntity) {
     if (isPersisted) {
       configGroupConfigMappingDAO.removeAllByGroup(configGroupEntity.getGroupId());
+      configGroupDAO.refresh(configGroupEntity);
       configGroupEntity.setConfigGroupConfigMappingEntities(new HashSet<ConfigGroupConfigMappingEntity>());
     }
 

+ 3 - 6
ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java

@@ -21,6 +21,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import com.google.inject.persist.jpa.AmbariJpaPersistModule;
 import junit.framework.Assert;
 
 import org.apache.ambari.server.AmbariException;
@@ -50,22 +51,18 @@ public class ConfigGroupTest {
   private Cluster cluster;
   private String clusterName;
   private Injector injector;
-  private AmbariMetaInfo metaInfo;
   private ConfigGroupFactory configGroupFactory;
   private ConfigFactory configFactory;
-  private HostDAO hostDAO;
   private ConfigGroupDAO configGroupDAO;
   private ConfigGroupHostMappingDAO configGroupHostMappingDAO;
 
   @Before
   public void setup() throws Exception {
-    injector  = Guice.createInjector(new InMemoryDefaultTestModule());
+    injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
     clusters = injector.getInstance(Clusters.class);
-    metaInfo = injector.getInstance(AmbariMetaInfo.class);
     configFactory = injector.getInstance(ConfigFactory.class);
     configGroupFactory = injector.getInstance(ConfigGroupFactory.class);
-    hostDAO = injector.getInstance(HostDAO.class);
     configGroupDAO = injector.getInstance(ConfigGroupDAO.class);
     configGroupHostMappingDAO = injector.getInstance
       (ConfigGroupHostMappingDAO.class);
@@ -175,7 +172,7 @@ public class ConfigGroupTest {
 
     // Save
     configGroup.persist();
-
+    configGroup.refresh();
     configGroupEntity = configGroupDAO.findByName("NewName");
 
     Assert.assertNotNull(configGroupEntity);