You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by vi...@apache.org on 2012/06/05 23:23:51 UTC
svn commit: r1346598 - in /incubator/ambari/branches/ambari-186: CHANGES.txt
hmc/php/frontend/addNodes/finalizeNodes.php
hmc/php/orchestrator/Cluster.php hmc/php/puppet/PuppetInvoker.php
Author: vikram
Date: Tue Jun 5 21:23:50 2012
New Revision: 1346598
URL: http://svn.apache.org/viewvc?rev=1346598&view=rev
Log:
AMBARI-337. Parallelize puppet kick --ping during bootstrap (Contributed by Hitesh)
Modified:
incubator/ambari/branches/ambari-186/CHANGES.txt
incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes/finalizeNodes.php
incubator/ambari/branches/ambari-186/hmc/php/orchestrator/Cluster.php
incubator/ambari/branches/ambari-186/hmc/php/puppet/PuppetInvoker.php
Modified: incubator/ambari/branches/ambari-186/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/CHANGES.txt?rev=1346598&r1=1346597&r2=1346598&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/CHANGES.txt (original)
+++ incubator/ambari/branches/ambari-186/CHANGES.txt Tue Jun 5 21:23:50 2012
@@ -6,6 +6,8 @@ characters wide.
Release 0.1.x - unreleased
+ AMBARI-337. Parallelize puppet kick --ping during bootstrap (Hitesh via Vikram)
+
AMBARI-335. Redundant downloads even though the artifacts are already installed (Ramya via Vikram)
AMBARI-519. update to fix the ganglia monitor_and_server anchor problem (Rich via Vikram)
Modified: incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes/finalizeNodes.php
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes/finalizeNodes.php?rev=1346598&r1=1346597&r2=1346598&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes/finalizeNodes.php (original)
+++ incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes/finalizeNodes.php Tue Jun 5 21:23:50 2012
@@ -138,33 +138,100 @@ function sign_and_verify_agent ($hosts,
. ", failedHostsCount=" . $countFailed);
sleep(5);
+
+
+ // Run kick ping in batches of 10 hosts
+ $hostsToKick = array();
+ $index = 0;
+ $counter = 0;
foreach ($origHosts as $i => $host) {
$host = trim($host);
if (array_key_exists ($host , $output)) {
continue;
}
+ $counter++;
+ if (!isset($hostsToKick[$index])) {
+ $hostsToKick[$index] = array();
+ }
+ $hostsToKick[$index][] = $host;
+
+ if ($counter == 10) {
+ $index++;
+ $counter = 0;
+ }
+ }
+
+ foreach ($hostsToKick as $idx => $hostKickList) {
+
+ $hostList = implode(",", $hostKickList);
+
/* Give puppet kick --ping to check if agent is working */
- $logger->log_debug("Puppet kick --ping for ".$host."\n");
+ $logger->log_debug("Puppet kick --ping for batch $idx , hosts=".$hostList."\n");
+
+ $hostListStr = "";
+ foreach ($hostKickList as $hostToKick) {
+ $hostListStr .= " --host " . $hostToKick;
+ }
+
$out_arr = array();
- $cmd = "puppet kick -f --host $host --ping 2>/dev/null";
+ $cmd = "puppet kick -f --parallel 10 --ping $hostListStr 2>/dev/null";
exec ($cmd, $out_arr, $err);
- if ($err == 0 && check_error($out_arr, "status is success", 0) == 0) {
- // success
- $logger->log_info("Puppet kick succeeded for host " . $host);
- $hostsState[$host] = TRUE;
- if (isset($output[$host])) {
- unset($output[$host]);
+
+ // TODO do we need to check $err ?
+
+ $pHostOutput = array();
+ $pHostResponse = array();
+ foreach ($out_arr as $line) {
+ foreach ($hostKickList as $host) {
+ if (preg_match ("/$host/", $line)) {
+ if (!isset($pHostOutput[$host])) {
+ $pHostOutput[$host] = array();
+ }
+ $pHostOutput[$host][] = $line;
+ $pattern = $host." finished with exit code (\d+)";
+ $matches = array();
+ if (preg_match("/$pattern/", $line, $matches) > 0) {
+ $retCode = (int)$matches[1];
+ $pHostResponse[$host] = $retCode;
+ }
+ }
}
- } else {
- $logger->log_error("Failed to do puppet kick -ping on host " . $host);
- if (!isset($output[$host])) {
- $output[$host] =
- array ( "discoveryStatus" => "FAILED",
- "badHealthReason" => "Puppet kick failed: "
- . ", error=" . $err . ", outputLogs="
- . implode(";", $out_arr));
+ }
+
+ $logger->log_debug("Output for batch $idx, outputLogs="
+ . print_r($pHostOutput, true) . " , errorCodes="
+ . print_r($pHostResponse, true) );
+
+ foreach ($hostKickList as $host) {
+ if (isset($pHostResponse[$host])
+ && $pHostResponse[$host] == 0) {
+ $logger->log_info("Puppet kick succeeded for host " . $host);
+ $hostsState[$host] = TRUE;
+ if (isset($output[$host])) {
+ unset($output[$host]);
+ }
+ } else {
+ $logger->log_error("Failed to do puppet kick -ping on host " . $host);
+
+ $errorCode = -1;
+ if (isset($pHostResponse[$host])) {
+ $errorCode = $pHostResponse[$host];
+ }
+
+ $errorLogs = "Puppet kick failed";
+ if (isset($pHostOutput[$host])) {
+ $errorLogs = implode(";", $pHostOutput[$host]);
+ }
+
+ if (!isset($output[$host])) {
+ $output[$host] =
+ array ( "discoveryStatus" => "FAILED",
+ "badHealthReason" => "Puppet kick failed: "
+ . ", error=" . $errorCode
+ . ", outputLogs=" . $errorLogs);
+ }
+ $hostsState[$host] = FALSE;
}
- $hostsState[$host] = FALSE;
}
}
Modified: incubator/ambari/branches/ambari-186/hmc/php/orchestrator/Cluster.php
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/hmc/php/orchestrator/Cluster.php?rev=1346598&r1=1346597&r2=1346598&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/hmc/php/orchestrator/Cluster.php (original)
+++ incubator/ambari/branches/ambari-186/hmc/php/orchestrator/Cluster.php Tue Jun 5 21:23:50 2012
@@ -570,7 +570,7 @@ class Cluster {
$result = $this->installService($svcTxnMap[$service->name], $service, $dryRun);
if ($result['result'] !== 0) {
$this->setState(State::FAILED, $transaction, $dryRun);
- $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, TRUE);
+ $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, FALSE);
return $result;
}
}
@@ -583,7 +583,7 @@ class Cluster {
$this->logger->log_error("Installing HDP failed with: " . $result['error']);
$this->setState(State::FAILED, $transaction, $dryRun);
foreach ($services as $service) {
- $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, TRUE);
+ $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, FALSE);
}
return $result;
}
@@ -611,7 +611,7 @@ class Cluster {
$this->logger->log_error("Installing HDP failed with: " . $result['error']);
$this->setState(State::FAILED, $transaction, $dryRun);
foreach ($services as $service) {
- $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, TRUE);
+ $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, FALSE);
}
return $result;
}
@@ -621,7 +621,7 @@ class Cluster {
$this->logger->log_error("Puppet kick failed, no successful nodes");
$this->setState(State::FAILED, $transaction, $dryRun);
foreach ($services as $service) {
- $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, TRUE);
+ $service->setState(State::FAILED, $svcTxnMap[$service->name], $dryRun, FALSE);
}
return array ( "result" => -3,
"error" => "Puppet kick failed on all nodes");
Modified: incubator/ambari/branches/ambari-186/hmc/php/puppet/PuppetInvoker.php
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/hmc/php/puppet/PuppetInvoker.php?rev=1346598&r1=1346597&r2=1346598&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/hmc/php/puppet/PuppetInvoker.php (original)
+++ incubator/ambari/branches/ambari-186/hmc/php/puppet/PuppetInvoker.php Tue Jun 5 21:23:50 2012
@@ -103,7 +103,7 @@
}
public function kickPuppet($nodes, $txnObj, $clusterName, $nodesComponents,
- $globalOptions) {
+ $globalOptions = array()) {
//Get host config from db
$txnId = $txnObj->toString();
$components = array_keys($nodesComponents);