Selaa lähdekoodia

AMBARI-10733. Saving config groups cause ambari server exceptions. (mpapirkovskyy)

Myroslav Papirkovskyy 10 vuotta sitten
vanhempi
commit
3e776a5116

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceConfigVersionResourceProvider.java

@@ -230,7 +230,7 @@ public class ServiceConfigVersionResourceProvider extends
       subResourceMap.put("type", config.getType());
       subResourceMap.put("type", config.getType());
       subResourceMap.put("tag", config.getVersionTag());
       subResourceMap.put("tag", config.getVersionTag());
       subResourceMap.put("version", config.getVersion());
       subResourceMap.put("version", config.getVersion());
-      subResourceMap.put("properties", new TreeMap(config.getConfigs()));
+      subResourceMap.put("properties", new TreeMap<String, String>(config.getConfigs()));
       subResourceMap.put("properties_attributes", config.getConfigAttributes());
       subResourceMap.put("properties_attributes", config.getConfigAttributes());
       result.add(subResourceMap);
       result.add(subResourceMap);
     }
     }

+ 1 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java

@@ -18,6 +18,7 @@
 
 
 package org.apache.ambari.server.orm.dao;
 package org.apache.ambari.server.orm.dao;
 
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.List;
 
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManager;

+ 2 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/Config.java

@@ -26,6 +26,8 @@ import java.util.Map;
  */
  */
 public interface Config {
 public interface Config {
 
 
+  void setStackId(StackId stackId);
+
   /**
   /**
    * @return Config Type
    * @return Config Type
    */
    */

+ 7 - 4
ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java

@@ -47,15 +47,12 @@ public class ConfigImpl implements Config {
   private Map<String, String> properties;
   private Map<String, String> properties;
   private Map<String, Map<String, String>> propertiesAttributes;
   private Map<String, Map<String, String>> propertiesAttributes;
   private ClusterConfigEntity entity;
   private ClusterConfigEntity entity;
-
   @Inject
   @Inject
   private ClusterDAO clusterDAO;
   private ClusterDAO clusterDAO;
   @Inject
   @Inject
   private Gson gson;
   private Gson gson;
   @Inject
   @Inject
   private ServiceConfigDAO serviceConfigDAO;
   private ServiceConfigDAO serviceConfigDAO;
-
-
   @AssistedInject
   @AssistedInject
   public ConfigImpl(@Assisted Cluster cluster, @Assisted String type, @Assisted Map<String, String> properties,
   public ConfigImpl(@Assisted Cluster cluster, @Assisted String type, @Assisted Map<String, String> properties,
       @Assisted Map<String, Map<String, String>> propertiesAttributes, Injector injector) {
       @Assisted Map<String, Map<String, String>> propertiesAttributes, Injector injector) {
@@ -72,6 +69,7 @@ public class ConfigImpl implements Config {
 
 
   }
   }
 
 
+
   @AssistedInject
   @AssistedInject
   public ConfigImpl(@Assisted Cluster cluster, @Assisted ClusterConfigEntity entity, Injector injector) {
   public ConfigImpl(@Assisted Cluster cluster, @Assisted ClusterConfigEntity entity, Injector injector) {
     this.cluster = cluster;
     this.cluster = cluster;
@@ -97,10 +95,15 @@ public class ConfigImpl implements Config {
    * {@inheritDoc}
    * {@inheritDoc}
    */
    */
   @Override
   @Override
-  public StackId getStackId() {
+  public synchronized StackId getStackId() {
     return stackId;
     return stackId;
   }
   }
 
 
+  @Override
+  public synchronized void setStackId(StackId stackId) {
+    this.stackId = stackId;
+  }
+
   @Override
   @Override
   public String getType() {
   public String getType() {
     return type;
     return type;

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

@@ -406,6 +406,7 @@ public class ConfigGroupImpl implements ConfigGroup {
 
 
         if (clusterConfigEntity == null) {
         if (clusterConfigEntity == null) {
           config.setVersion(cluster.getNextConfigVersion(config.getType()));
           config.setVersion(cluster.getNextConfigVersion(config.getType()));
+          config.setStackId(cluster.getDesiredStackVersion());
           // Create configuration
           // Create configuration
           clusterConfigEntity = new ClusterConfigEntity();
           clusterConfigEntity = new ClusterConfigEntity();
           clusterConfigEntity.setClusterId(clusterEntity.getClusterId());
           clusterConfigEntity.setClusterId(clusterEntity.getClusterId());