소스 검색

AMBARI-6336. Clear stale configs cache after config group modification. (mpapirkovskyy)

Myroslav Papirkovskyy 11 년 전
부모
커밋
c9fe537a22

+ 8 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java

@@ -25,6 +25,7 @@ import org.apache.ambari.server.controller.internal.RequestStageContainer;
 import org.apache.ambari.server.scheduler.ExecutionScheduleManager;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.ambari.server.state.MaintenanceState;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponent;
@@ -440,6 +441,13 @@ public interface AmbariManagementController {
    */
   public Clusters getClusters();
 
+  /**
+   * Get config helper
+   *
+   * @return config helper
+   */
+  ConfigHelper getConfigHelper();
+
   /**
    * Get the meta info for this management controller.
    *

+ 5 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java

@@ -3187,6 +3187,11 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
     return clusters;
   }
 
+  @Override
+  public ConfigHelper getConfigHelper() {
+    return configHelper;
+  }
+
   @Override
   public AmbariMetaInfo getAmbariMetaInfo() {
     return ambariMetaInfo;

+ 2 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java

@@ -542,6 +542,8 @@ public class ConfigGroupResourceProvider extends
 
       configGroup.persist();
     }
+
+    getManagementController().getConfigHelper().invalidateStaleConfigsCache();
   }
 
   @SuppressWarnings("unchecked")

+ 8 - 2
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java

@@ -34,6 +34,7 @@ import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.configgroup.ConfigGroup;
 import org.apache.ambari.server.state.configgroup.ConfigGroupFactory;
@@ -55,6 +56,7 @@ import static org.easymock.EasyMock.capture;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -218,6 +220,7 @@ public class ConfigGroupResourceProviderTest {
   public void testUpdateConfigGroup() throws Exception {
     AmbariManagementController managementController = createMock(AmbariManagementController.class);
     RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+    ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     Clusters clusters = createNiceMock(Clusters.class);
     Cluster cluster = createNiceMock(Cluster.class);
     Host h1 = createNiceMock(Host.class);
@@ -248,9 +251,12 @@ public class ConfigGroupResourceProviderTest {
         return configGroupMap;
       }
     });
+    expect(managementController.getConfigHelper()).andReturn(configHelper).once();
+    configHelper.invalidateStaleConfigsCache();
+    expectLastCall().once();
 
     replay(managementController, clusters, cluster,
-      configGroup, response, configGroupResponse);
+      configGroup, response, configGroupResponse, configHelper);
 
     ResourceProvider provider = getConfigGroupResourceProvider
       (managementController);
@@ -299,7 +305,7 @@ public class ConfigGroupResourceProviderTest {
     provider.updateResources(request, predicate);
 
     verify(managementController, clusters, cluster,
-      configGroup, response, configGroupResponse);
+      configGroup, response, configGroupResponse, configHelper);
   }
 
   @SuppressWarnings("unchecked")