You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2015/06/05 00:45:09 UTC

ambari git commit: AMBARI-11688. Install services request executes 40 seconds. (mpapirkovskyy)

Repository: ambari
Updated Branches:
  refs/heads/trunk e92007d04 -> fb25e19f6


AMBARI-11688. Install services request executes 40 seconds. (mpapirkovskyy)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fb25e19f
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fb25e19f
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fb25e19f

Branch: refs/heads/trunk
Commit: fb25e19f69549fa129c6370408c5f1b09b0097ce
Parents: e92007d
Author: Myroslav Papirkovskyy <mp...@hortonworks.com>
Authored: Tue Jun 2 21:30:39 2015 +0300
Committer: Myroslav Papirkovskyy <mp...@hortonworks.com>
Committed: Tue Jun 2 21:30:39 2015 +0300

----------------------------------------------------------------------
 .../actionmanager/ActionDBAccessorImpl.java     |  2 +-
 .../server/actionmanager/HostRoleCommand.java   | 14 +++++++++
 .../actionmanager/HostRoleCommandFactory.java   | 13 ++++++++
 .../HostRoleCommandFactoryImpl.java             | 17 +++++++++++
 .../ambari/server/actionmanager/Stage.java      | 31 ++++++++++++++++++++
 .../AmbariManagementControllerImpl.java         |  4 +--
 .../internal/ServiceResourceProvider.java       |  3 +-
 .../orm/entities/HostRoleCommandEntity.java     |  4 +++
 .../org/apache/ambari/server/state/Host.java    |  5 ++++
 .../server/state/ServiceComponentHost.java      |  6 ++++
 .../ambari/server/state/host/HostImpl.java      |  5 ++++
 .../svccomphost/ServiceComponentHostImpl.java   |  5 ++++
 .../stacks/HDPWIN/2.1/services/stack_advisor.py | 10 +++----
 13 files changed, 109 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
index c3dfdb5..959ed2d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
@@ -262,7 +262,7 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
         HostRoleCommandEntity hostRoleCommandEntity = hostRoleCommand.constructNewPersistenceEntity();
         hostRoleCommandEntity.setStage(stageEntity);
 
-        HostEntity hostEntity = hostDAO.findByName(hostRoleCommandEntity.getHostName());
+        HostEntity hostEntity = hostDAO.findById(hostRoleCommandEntity.getHostId());
         if (hostEntity == null) {
           String msg = String.format("Host %s doesn't exist in database", hostRoleCommandEntity.getHostName());
           LOG.error(msg);

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
index 871ce30..20ec9ea 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
@@ -25,6 +25,7 @@ import org.apache.ambari.server.orm.dao.HostDAO;
 import org.apache.ambari.server.orm.entities.ExecutionCommandEntity;
 import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
+import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.ServiceComponentHostEvent;
 
 import com.google.inject.Injector;
@@ -104,6 +105,19 @@ public class HostRoleCommand {
   }
 
   @AssistedInject
+  public HostRoleCommand(Host host, Role role, ServiceComponentHostEvent event, RoleCommand command,
+                         boolean retryAllowed, HostDAO hostDAO, ExecutionCommandDAO executionCommandDAO) {
+    this.hostDAO = hostDAO;
+    this.executionCommandDAO = executionCommandDAO;
+
+    this.role = role;
+    this.event = new ServiceComponentHostEventWrapper(event);
+    this.roleCommand = command;
+    this.retryAllowed = retryAllowed;
+    this.hostEntity = hostDAO.findById(host.getHostId());
+  }
+
+  @AssistedInject
   public HostRoleCommand(@Assisted HostRoleCommandEntity hostRoleCommandEntity, HostDAO hostDAO, ExecutionCommandDAO executionCommandDAO) {
     this.hostDAO = hostDAO;
     this.executionCommandDAO = executionCommandDAO;

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactory.java
index 0c92526..84c2d2a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactory.java
@@ -21,6 +21,7 @@ package org.apache.ambari.server.actionmanager;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
+import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.ServiceComponentHostEvent;
 
 public interface HostRoleCommandFactory {
@@ -47,6 +48,18 @@ public interface HostRoleCommandFactory {
   HostRoleCommand create(String hostName, Role role, ServiceComponentHostEvent event, RoleCommand command, boolean retryAllowed);
 
   /**
+   * Constructor via factory.
+   * @param host Host object
+   * @param role Action to run
+   * @param event Event on the host and component
+   * @param command Type of command
+   * @param retryAllowed Whether the command can be repeated
+   * @return An instance of a HostRoleCommand.
+   */
+  HostRoleCommand create(Host host, Role role, ServiceComponentHostEvent event, RoleCommand command, boolean
+      retryAllowed);
+
+  /**
    * Constructor via factory
    * @param hostRoleCommandEntity Object to copy fields from.
    * @return An instance constructed from the input object.

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactoryImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactoryImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactoryImpl.java
index 653da89..0440f87 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactoryImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommandFactoryImpl.java
@@ -26,6 +26,7 @@ import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.orm.dao.ExecutionCommandDAO;
 import org.apache.ambari.server.orm.dao.HostDAO;
 import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
+import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.ServiceComponentHostEvent;
 
 @Singleton
@@ -72,6 +73,22 @@ public class HostRoleCommandFactoryImpl implements HostRoleCommandFactory {
   }
 
   /**
+   * Constructor via factory.
+   * @param host Host object
+   * @param role Action to run
+   * @param event Event on the host and component
+   * @param command Type of command
+   * @param retryAllowed Whether the command can be repeated
+   * @return An instance of a HostRoleCommand.
+   */
+  @Override
+  public HostRoleCommand create(Host host, Role role, ServiceComponentHostEvent event, RoleCommand command, boolean retryAllowed) {
+    return new HostRoleCommand(host, role, event, command, retryAllowed,
+        this.injector.getInstance(HostDAO.class),
+        this.injector.getInstance(ExecutionCommandDAO.class));
+  }
+
+  /**
    * Constructor via factory
    * @param hostRoleCommandEntity Object to copy fields from.
    * @return An instance constructed from the input object.

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
index 135bdc1..17411ac 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
@@ -37,7 +37,9 @@ import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
 import org.apache.ambari.server.orm.entities.RoleSuccessCriteriaEntity;
 import org.apache.ambari.server.orm.entities.StageEntity;
 import org.apache.ambari.server.serveraction.ServerAction;
+import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.ServiceComponentHostEvent;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostServerActionEvent;
 import org.apache.ambari.server.utils.StageUtils;
@@ -270,6 +272,19 @@ public class Stage {
 
     //used on stage creation only, no need to check if wrappers loaded
     HostRoleCommand hrc = hostRoleCommandFactory.create(hostName, role, event, command, retryAllowed);
+    return addGenericExecutionCommand(clusterName, hostName, role, command, event, hrc);
+  }
+
+  private ExecutionCommandWrapper addGenericExecutionCommand(
+      Cluster cluster, Host host, Role role,
+      RoleCommand command, ServiceComponentHostEvent event, boolean retryAllowed) {
+    HostRoleCommand hrc = hostRoleCommandFactory.create(host, role, event, command, retryAllowed);
+    return addGenericExecutionCommand(cluster.getClusterName(), host.getHostName(), role, command, event, hrc);
+
+  }
+
+  //TODO refactor method to use Host object (host_id support)
+  private ExecutionCommandWrapper addGenericExecutionCommand(String clusterName, String hostName, Role role, RoleCommand command, ServiceComponentHostEvent event, HostRoleCommand hrc) {
     ExecutionCommand cmd = new ExecutionCommand();
     ExecutionCommandWrapper wrapper = new ExecutionCommandWrapper(cmd);
     hrc.setExecutionCommandWrapper(wrapper);
@@ -325,6 +340,22 @@ public class Stage {
   }
 
   /**
+   * A new host role command is created for execution.
+   * Creates both ExecutionCommand and HostRoleCommand objects and
+   * adds them to the Stage. This should be called only once for a host-role
+   * for a given stage.
+   */
+  public synchronized void addHostRoleExecutionCommand(Host host, Role role, RoleCommand command,
+                                                       ServiceComponentHostEvent event, Cluster cluster,
+                                                       String serviceName, boolean retryAllowed) {
+
+    ExecutionCommandWrapper commandWrapper =
+        addGenericExecutionCommand(cluster, host, role, command, event, retryAllowed);
+
+    commandWrapper.getExecutionCommand().setServiceName(serviceName);
+  }
+
+  /**
    * Creates server-side execution command.
    * <p/>
    * The action name for this command is expected to be the classname of a

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index b9b2b1a..a675c26 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -1774,9 +1774,9 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
 
     String serviceName = scHost.getServiceName();
 
-    stage.addHostRoleExecutionCommand(scHost.getHostName(), Role.valueOf(scHost
+    stage.addHostRoleExecutionCommand(scHost.getHost(), Role.valueOf(scHost
       .getServiceComponentName()), roleCommand,
-      event, scHost.getClusterName(),
+      event, cluster,
       serviceName, false);
     String componentName = scHost.getServiceComponentName();
     String hostname = scHost.getHostName();

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
index 96cad45..a13bbd3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
@@ -168,7 +168,6 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
   }
 
   @Override
-  @Transactional
   public Set<Resource> getResources(Request request, Predicate predicate) throws
       SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
 
@@ -484,7 +483,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
   }
 
   // Get services from the given request.
-  private synchronized Set<ServiceResponse> getServices(ServiceRequest request)
+  private Set<ServiceResponse> getServices(ServiceRequest request)
       throws AmbariException {
     if (request.getClusterName() == null
         || request.getClusterName().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java
index 81a1b00..a2e5b31 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java
@@ -196,6 +196,10 @@ public class HostRoleCommandEntity {
     return hostEntity != null ? hostEntity.getHostName() : null;
   }
 
+  public Long getHostId() {
+    return hostEntity != null ? hostEntity.getHostId() : null;
+  }
+
   public Role getRole() {
     return Role.valueOf(role);
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/state/Host.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Host.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Host.java
index d8a6c6a..7a53c21 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Host.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Host.java
@@ -38,6 +38,11 @@ public interface Host {
   public String getHostName();
 
   /**
+   * @return host id
+   */
+  Long getHostId();
+
+  /**
    * @param hostName the hostName to set
    */
   public void setHostName(String hostName);

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
index 0c614dd..2dc4789 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
@@ -59,6 +59,12 @@ public interface ServiceComponentHost {
   public String getHostName();
 
   /**
+   * Get the Host this object maps to
+   * @return Host Object
+   */
+  Host getHost();
+
+  /**
    * Send a ServiceComponentHostState event to the StateMachine
    * @param event Event to handle
    * @throws InvalidStateTransitionException

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
index cb19286..e59f4aa 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
@@ -599,6 +599,11 @@ public class HostImpl implements Host {
   }
 
   @Override
+  public Long getHostId() {
+    return hostEntity.getHostId();
+  }
+
+  @Override
   public void setHostName(String hostName) {
     try {
       writeLock.lock();

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
index 5bf2506..484bf79 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
@@ -940,6 +940,11 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
     return host.getHostName();
   }
 
+  @Override
+  public Host getHost() {
+    return host;
+  }
+
   /**
    * @return the lastOpStartTime
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb25e19f/ambari-server/src/main/resources/stacks/HDPWIN/2.1/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDPWIN/2.1/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDPWIN/2.1/services/stack_advisor.py
index 0affe64..dc64770 100644
--- a/ambari-server/src/main/resources/stacks/HDPWIN/2.1/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDPWIN/2.1/services/stack_advisor.py
@@ -209,8 +209,8 @@ class HDPWIN21StackAdvisor(DefaultStackAdvisor):
         putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.lowerLimit", 0.25)
         putAmsHbaseSiteProperty("phoenix.query.maxGlobalMemoryPercentage", 20)
         putTimelineServiceProperty("phoenix.query.maxGlobalMemoryPercentage", 30)
-        putAmsHbaseSiteProperty("hbase_master_xmn_size", "512m")
-        putAmsHbaseSiteProperty("regionserver_xmn_size", "512m")
+        putHbaseEnvProperty("hbase_master_xmn_size", "512m")
+        putHbaseEnvProperty("regionserver_xmn_size", "512m")
       elif totalHostsCount >= 100:
         putHbaseEnvProperty("hbase_regionserver_heapsize", "6144m")
         putAmsEnvProperty("metrics_collector_heapsize", "4096m")
@@ -218,18 +218,18 @@ class HDPWIN21StackAdvisor(DefaultStackAdvisor):
         putAmsHbaseSiteProperty("hbase.regionserver.hlog.blocksize", 134217728)
         putAmsHbaseSiteProperty("hbase.regionserver.maxlogs", 64)
         putAmsHbaseSiteProperty("hbase.hregion.memstore.flush.size", 268435456)
-        putAmsHbaseSiteProperty("hbase_master_xmn_size", "512m")
+        putHbaseEnvProperty("hbase_master_xmn_size", "512m")
       elif totalHostsCount >= 50:
         putHbaseEnvProperty("hbase_regionserver_heapsize", "2048m")
         putHbaseEnvProperty("hbase_master_heapsize", "512m")
         putAmsEnvProperty("metrics_collector_heapsize", "2048m")
-        putAmsHbaseSiteProperty("hbase_master_xmn_size", "256m")
+        putHbaseEnvProperty("hbase_master_xmn_size", "256m")
       else:
         # Embedded mode heap size : master + regionserver
         putHbaseEnvProperty("hbase_regionserver_heapsize", "512m")
         putHbaseEnvProperty("hbase_master_heapsize", "512m")
         putAmsEnvProperty("metrics_collector_heapsize", "512m")
-        putAmsHbaseSiteProperty("hbase_master_xmn_size", "128m")
+        putHbaseEnvProperty("hbase_master_xmn_size", "128m")
       pass
     pass