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