Browse Source

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

Myroslav Papirkovskyy 10 years ago
parent
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("tag", config.getVersionTag());
       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());
       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;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 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 {
 
+  void setStackId(StackId stackId);
+
   /**
    * @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, Map<String, String>> propertiesAttributes;
   private ClusterConfigEntity entity;
-
   @Inject
   private ClusterDAO clusterDAO;
   @Inject
   private Gson gson;
   @Inject
   private ServiceConfigDAO serviceConfigDAO;
-
-
   @AssistedInject
   public ConfigImpl(@Assisted Cluster cluster, @Assisted String type, @Assisted Map<String, String> properties,
       @Assisted Map<String, Map<String, String>> propertiesAttributes, Injector injector) {
@@ -72,6 +69,7 @@ public class ConfigImpl implements Config {
 
   }
 
+
   @AssistedInject
   public ConfigImpl(@Assisted Cluster cluster, @Assisted ClusterConfigEntity entity, Injector injector) {
     this.cluster = cluster;
@@ -97,10 +95,15 @@ public class ConfigImpl implements Config {
    * {@inheritDoc}
    */
   @Override
-  public StackId getStackId() {
+  public synchronized StackId getStackId() {
     return stackId;
   }
 
+  @Override
+  public synchronized void setStackId(StackId stackId) {
+    this.stackId = stackId;
+  }
+
   @Override
   public String getType() {
     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) {
           config.setVersion(cluster.getNextConfigVersion(config.getType()));
+          config.setStackId(cluster.getDesiredStackVersion());
           // Create configuration
           clusterConfigEntity = new ClusterConfigEntity();
           clusterConfigEntity.setClusterId(clusterEntity.getClusterId());