You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-commits@hadoop.apache.org by cn...@apache.org on 2014/02/19 18:24:04 UTC
svn commit: r1569833 - in
/hadoop/common/branches/HDFS-4685/hadoop-yarn-project: ./
hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/
hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop...
Author: cnauroth
Date: Wed Feb 19 17:24:02 2014
New Revision: 1569833
URL: http://svn.apache.org/r1569833
Log:
Merge trunk to HDFS-4685.
Modified:
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/RMApplicationHistoryWriter.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/TestRMApplicationHistoryWriter.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt Wed Feb 19 17:24:02 2014
@@ -15,6 +15,18 @@ Trunk - Unreleased
YARN-524 TestYarnVersionInfo failing if generated properties doesn't
include an SVN URL. (stevel)
+Release 2.5.0 - UNRELEASED
+
+ INCOMPATIBLE CHANGES
+
+ NEW FEATURES
+
+ IMPROVEMENTS
+
+ OPTIMIZATIONS
+
+ BUG FIXES
+
Release 2.4.0 - UNRELEASED
INCOMPATIBLE CHANGES
@@ -277,6 +289,20 @@ Release 2.4.0 - UNRELEASED
instead rely on the http policy framework. And also fix some bugs related
to https handling in YARN web-apps. (Haohui Mai via vinodkv)
+ YARN-1721. When moving app between queues in Fair Scheduler, grab lock on
+ FSSchedulerApp (Sandy Ryza)
+
+ YARN-1724. Race condition in Fair Scheduler when continuous scheduling is
+ turned on (Sandy Ryza)
+
+ YARN-1590. Fixed ResourceManager, web-app proxy and MR JobHistoryServer to
+ expand _HOST properly in their kerberos principles. (Mohammad Kamrul Islam
+ va vinodkv)
+
+ YARN-1428. Fixed RM to write the final state of RMApp/RMAppAttempt to the
+ application history store in the transition to the final state. (Contributed
+ by Zhijie Shen)
+
Release 2.3.1 - UNRELEASED
INCOMPATIBLE CHANGES
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java Wed Feb 19 17:24:02 2014
@@ -861,6 +861,9 @@ public class YarnConfiguration extends C
/** The address for the web proxy.*/
public static final String PROXY_ADDRESS =
PROXY_PREFIX + "address";
+ public static final int DEFAULT_PROXY_PORT = 9099;
+ public static final String DEFAULT_PROXY_ADDRESS =
+ "0.0.0.0:" + DEFAULT_RM_PORT;
/**
* YARN Service Level Authorization
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java Wed Feb 19 17:24:02 2014
@@ -19,6 +19,7 @@
package org.apache.hadoop.yarn.server.resourcemanager;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
@@ -894,8 +895,9 @@ public class ResourceManager extends Com
}
protected void doSecureLogin() throws IOException {
+ InetSocketAddress socAddr = getBindAddress(conf);
SecurityUtil.login(this.conf, YarnConfiguration.RM_KEYTAB,
- YarnConfiguration.RM_PRINCIPAL);
+ YarnConfiguration.RM_PRINCIPAL, socAddr.getHostName());
}
@Override
@@ -1042,4 +1044,17 @@ public class ResourceManager extends Com
addIfService(rmDispatcher);
rmContext.setDispatcher(rmDispatcher);
}
+
+
+ /**
+ * Retrieve RM bind address from configuration
+ *
+ * @param conf
+ * @return InetSocketAddress
+ */
+public static InetSocketAddress getBindAddress(Configuration conf) {
+ return conf.getSocketAddr(YarnConfiguration.RM_ADDRESS,
+ YarnConfiguration.DEFAULT_RM_ADDRESS,
+ YarnConfiguration.DEFAULT_RM_PORT);
+ }
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/RMApplicationHistoryWriter.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/RMApplicationHistoryWriter.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/RMApplicationHistoryWriter.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/RMApplicationHistoryWriter.java Wed Feb 19 17:24:02 2014
@@ -43,9 +43,12 @@ import org.apache.hadoop.yarn.server.app
import org.apache.hadoop.yarn.server.applicationhistoryservice.records.ApplicationStartData;
import org.apache.hadoop.yarn.server.applicationhistoryservice.records.ContainerFinishData;
import org.apache.hadoop.yarn.server.applicationhistoryservice.records.ContainerStartData;
+import org.apache.hadoop.yarn.server.resourcemanager.RMServerUtils;
import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
+import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt;
+import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
/**
@@ -219,12 +222,13 @@ public class RMApplicationHistoryWriter
}
@SuppressWarnings("unchecked")
- public void applicationFinished(RMApp app) {
+ public void applicationFinished(RMApp app, RMAppState finalState) {
dispatcher.getEventHandler().handle(
new WritingApplicationFinishEvent(app.getApplicationId(),
ApplicationFinishData.newInstance(app.getApplicationId(),
app.getFinishTime(), app.getDiagnostics().toString(),
- app.getFinalApplicationStatus(), app.createApplicationState())));
+ app.getFinalApplicationStatus(),
+ RMServerUtils.createApplicationState(finalState))));
}
@SuppressWarnings("unchecked")
@@ -239,15 +243,16 @@ public class RMApplicationHistoryWriter
}
@SuppressWarnings("unchecked")
- public void applicationAttemptFinished(RMAppAttempt appAttempt) {
+ public void applicationAttemptFinished(RMAppAttempt appAttempt,
+ RMAppAttemptState finalState) {
if (historyServiceEnabled) {
dispatcher.getEventHandler().handle(
new WritingApplicationAttemptFinishEvent(appAttempt.getAppAttemptId(),
ApplicationAttemptFinishData.newInstance(
appAttempt.getAppAttemptId(), appAttempt.getDiagnostics()
.toString(), appAttempt.getTrackingUrl(), appAttempt
- .getFinalApplicationStatus(), appAttempt
- .createApplicationAttemptState())));
+ .getFinalApplicationStatus(),
+ RMServerUtils.createApplicationAttemptState(finalState))));
}
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java Wed Feb 19 17:24:02 2014
@@ -112,9 +112,7 @@ public class RMAppImpl implements RMApp,
private long storedFinishTime = 0;
private RMAppAttempt currentAttempt;
private String queue;
- @SuppressWarnings("rawtypes")
private EventHandler handler;
- private static final FinalTransition FINAL_TRANSITION = new FinalTransition();
private static final AppFinishedTransition FINISHED_TRANSITION =
new AppFinishedTransition();
@@ -705,7 +703,6 @@ public class RMAppImpl implements RMApp,
* either as an exception for failure or null for success, or the client will
* be left waiting forever.
*/
- @SuppressWarnings("unchecked")
private static final class RMAppMoveTransition extends RMAppTransition {
public void transition(RMAppImpl app, RMAppEvent event) {
RMAppMoveEvent moveEvent = (RMAppMoveEvent) event;
@@ -723,7 +720,6 @@ public class RMAppImpl implements RMApp,
}
}
- @SuppressWarnings("unchecked")
private static final class RMAppRecoveredTransition implements
MultipleArcTransition<RMAppImpl, RMAppEvent, RMAppState> {
@@ -742,7 +738,7 @@ public class RMAppImpl implements RMApp,
// The app has completed.
if (app.recoveredFinalState != null) {
- FINAL_TRANSITION.transition(app, event);
+ new FinalTransition(app.recoveredFinalState).transition(app, event);
return app.recoveredFinalState;
}
@@ -824,7 +820,7 @@ public class RMAppImpl implements RMApp,
LOG.info(msg);
app.diagnostics.append(msg);
// Inform the node for app-finish
- FINAL_TRANSITION.transition(app, event);
+ new FinalTransition(RMAppState.FAILED).transition(app, event);
}
}
@@ -937,6 +933,10 @@ public class RMAppImpl implements RMApp,
}
private static class AppFinishedTransition extends FinalTransition {
+ public AppFinishedTransition() {
+ super(RMAppState.FINISHED);
+ }
+
public void transition(RMAppImpl app, RMAppEvent event) {
RMAppFinishedAttemptEvent finishedEvent =
(RMAppFinishedAttemptEvent)event;
@@ -980,6 +980,10 @@ public class RMAppImpl implements RMApp,
private static class AppKilledTransition extends FinalTransition {
+ public AppKilledTransition() {
+ super(RMAppState.KILLED);
+ }
+
@Override
public void transition(RMAppImpl app, RMAppEvent event) {
app.diagnostics.append(getAppKilledDiagnostics());
@@ -1002,6 +1006,10 @@ public class RMAppImpl implements RMApp,
private static final class AppRejectedTransition extends
FinalTransition{
+ public AppRejectedTransition() {
+ super(RMAppState.FAILED);
+ }
+
public void transition(RMAppImpl app, RMAppEvent event) {
RMAppRejectedEvent rejectedEvent = (RMAppRejectedEvent)event;
app.diagnostics.append(rejectedEvent.getMessage());
@@ -1011,6 +1019,12 @@ public class RMAppImpl implements RMApp,
private static class FinalTransition extends RMAppTransition {
+ private final RMAppState finalState;
+
+ public FinalTransition(RMAppState finalState) {
+ this.finalState = finalState;
+ }
+
private Set<NodeId> getNodesOnWhichAttemptRan(RMAppImpl app) {
Set<NodeId> nodes = new HashSet<NodeId>();
for (RMAppAttempt attempt : app.attempts.values()) {
@@ -1035,10 +1049,8 @@ public class RMAppImpl implements RMApp,
new RMAppManagerEvent(app.applicationId,
RMAppManagerEventType.APP_COMPLETED));
- // TODO: We need to fix for the problem that RMApp enters the final state
- // after RMAppAttempt in the killing case
app.rmContext.getRMApplicationHistoryWriter()
- .applicationFinished(app);
+ .applicationFinished(app, finalState);
};
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java Wed Feb 19 17:24:02 2014
@@ -1053,7 +1053,7 @@ public class RMAppAttemptImpl implements
appAttempt.removeCredentials(appAttempt);
appAttempt.rmContext.getRMApplicationHistoryWriter()
- .applicationAttemptFinished(appAttempt);
+ .applicationAttemptFinished(appAttempt, finalAttemptState);
}
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java Wed Feb 19 17:24:02 2014
@@ -989,7 +989,13 @@ public class FairScheduler extends Abstr
private void continuousScheduling() {
while (true) {
List<NodeId> nodeIdList = new ArrayList<NodeId>(nodes.keySet());
- Collections.sort(nodeIdList, nodeAvailableResourceComparator);
+ // Sort the nodes by space available on them, so that we offer
+ // containers on emptier nodes first, facilitating an even spread. This
+ // requires holding the scheduler lock, so that the space available on a
+ // node doesn't change during the sort.
+ synchronized (this) {
+ Collections.sort(nodeIdList, nodeAvailableResourceComparator);
+ }
// iterate all nodes
for (NodeId nodeId : nodeIdList) {
@@ -1366,24 +1372,26 @@ public class FairScheduler extends Abstr
throw new YarnException("App to be moved " + appId + " not found.");
}
FSSchedulerApp attempt = (FSSchedulerApp) app.getCurrentAppAttempt();
-
- FSLeafQueue oldQueue = (FSLeafQueue) app.getQueue();
- FSLeafQueue targetQueue = queueMgr.getLeafQueue(queueName, false);
- if (targetQueue == null) {
- throw new YarnException("Target queue " + queueName
- + " not found or is not a leaf queue.");
- }
- if (targetQueue == oldQueue) {
- return oldQueue.getQueueName();
- }
-
- if (oldQueue.getRunnableAppSchedulables().contains(
- attempt.getAppSchedulable())) {
- verifyMoveDoesNotViolateConstraints(attempt, oldQueue, targetQueue);
+ // To serialize with FairScheduler#allocate, synchronize on app attempt
+ synchronized (attempt) {
+ FSLeafQueue oldQueue = (FSLeafQueue) app.getQueue();
+ FSLeafQueue targetQueue = queueMgr.getLeafQueue(queueName, false);
+ if (targetQueue == null) {
+ throw new YarnException("Target queue " + queueName
+ + " not found or is not a leaf queue.");
+ }
+ if (targetQueue == oldQueue) {
+ return oldQueue.getQueueName();
+ }
+
+ if (oldQueue.getRunnableAppSchedulables().contains(
+ attempt.getAppSchedulable())) {
+ verifyMoveDoesNotViolateConstraints(attempt, oldQueue, targetQueue);
+ }
+
+ executeMove(app, attempt, oldQueue, targetQueue);
+ return targetQueue.getQueueName();
}
-
- executeMove(app, attempt, oldQueue, targetQueue);
- return targetQueue.getQueueName();
}
private void verifyMoveDoesNotViolateConstraints(FSSchedulerApp app,
@@ -1420,8 +1428,8 @@ public class FairScheduler extends Abstr
}
/**
- * Helper for moveApplication, which is synchronized, so all operations will
- * be atomic.
+ * Helper for moveApplication, which has appropriate synchronization, so all
+ * operations will be atomic.
*/
private void executeMove(SchedulerApplication app, FSSchedulerApp attempt,
FSLeafQueue oldQueue, FSLeafQueue newQueue) {
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/TestRMApplicationHistoryWriter.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/TestRMApplicationHistoryWriter.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/TestRMApplicationHistoryWriter.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/ahs/TestRMApplicationHistoryWriter.java Wed Feb 19 17:24:02 2014
@@ -137,8 +137,6 @@ public class TestRMApplicationHistoryWri
new StringBuilder("test diagnostics info"));
when(app.getFinalApplicationStatus()).thenReturn(
FinalApplicationStatus.UNDEFINED);
- when(app.createApplicationState())
- .thenReturn(YarnApplicationState.FINISHED);
return app;
}
@@ -156,8 +154,6 @@ public class TestRMApplicationHistoryWri
when(appAttempt.getTrackingUrl()).thenReturn("test url");
when(appAttempt.getFinalApplicationStatus()).thenReturn(
FinalApplicationStatus.UNDEFINED);
- when(appAttempt.createApplicationAttemptState()).thenReturn(
- YarnApplicationAttemptState.FINISHED);
return appAttempt;
}
@@ -200,7 +196,7 @@ public class TestRMApplicationHistoryWri
Assert.assertEquals(0L, appHD.getSubmitTime());
Assert.assertEquals(1L, appHD.getStartTime());
- writer.applicationFinished(app);
+ writer.applicationFinished(app, RMAppState.FINISHED);
for (int i = 0; i < MAX_RETRIES; ++i) {
appHD = store.getApplication(ApplicationId.newInstance(0, 1));
if (appHD.getYarnApplicationState() != null) {
@@ -241,7 +237,7 @@ public class TestRMApplicationHistoryWri
ApplicationAttemptId.newInstance(ApplicationId.newInstance(0, 1), 1), 1),
appAttemptHD.getMasterContainerId());
- writer.applicationAttemptFinished(appAttempt);
+ writer.applicationAttemptFinished(appAttempt, RMAppAttemptState.FINISHED);
for (int i = 0; i < MAX_RETRIES; ++i) {
appAttemptHD =
store.getApplicationAttempt(ApplicationAttemptId.newInstance(
@@ -326,9 +322,10 @@ public class TestRMApplicationHistoryWri
writer.containerStarted(container);
writer.containerFinished(container);
}
- writer.applicationAttemptFinished(appAttempt);
+ writer.applicationAttemptFinished(
+ appAttempt, RMAppAttemptState.FINISHED);
}
- writer.applicationFinished(app);
+ writer.applicationFinished(app, RMAppState.FINISHED);
}
for (int i = 0; i < MAX_RETRIES; ++i) {
if (allEventsHandled(20 * 10 * 10 + 20 * 10 + 20)) {
@@ -369,7 +366,7 @@ public class TestRMApplicationHistoryWri
}
@Override
- public void applicationFinished(RMApp app) {
+ public void applicationFinished(RMApp app, RMAppState finalState) {
}
@Override
@@ -377,7 +374,8 @@ public class TestRMApplicationHistoryWri
}
@Override
- public void applicationAttemptFinished(RMAppAttempt appAttempt) {
+ public void applicationAttemptFinished(
+ RMAppAttempt appAttempt, RMAppAttemptState finalState) {
}
@Override
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java Wed Feb 19 17:24:02 2014
@@ -57,7 +57,6 @@ import org.apache.hadoop.yarn.server.res
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEventType;
-import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptUpdateSavedEvent;
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler;
@@ -71,6 +70,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.mockito.ArgumentCaptor;
@RunWith(value = Parameterized.class)
@@ -308,16 +308,6 @@ public class TestRMAppTransitions {
"Application killed by user.", diag.toString());
}
- private void assertAppAndAttemptKilled(RMApp application)
- throws InterruptedException {
- sendAttemptUpdateSavedEvent(application);
- sendAppUpdateSavedEvent(application);
- assertKilled(application);
- Assert.assertEquals(RMAppAttemptState.KILLED, application
- .getCurrentAppAttempt().getAppAttemptState());
- assertAppFinalStateSaved(application);
- }
-
private void assertFailed(RMApp application, String regex) {
assertTimesAtFinish(application);
assertAppState(RMAppState.FAILED, application);
@@ -511,7 +501,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertKilled(application);
assertAppFinalStateNotSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.KILLED);
}
@Test
@@ -528,7 +518,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertFailed(application, rejectedText);
assertAppFinalStateNotSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.FAILED);
}
@Test (timeout = 30000)
@@ -543,7 +533,7 @@ public class TestRMAppTransitions {
rmDispatcher.await();
sendAppUpdateSavedEvent(application);
assertKilled(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.KILLED);
}
@Test (timeout = 30000)
@@ -560,7 +550,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertFailed(application, rejectedText);
assertAppFinalStateSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.FAILED);
}
@Test (timeout = 30000)
@@ -577,7 +567,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertFailed(application, rejectedText);
assertAppFinalStateSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.FAILED);
}
@Test
@@ -592,7 +582,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertKilled(application);
assertAppFinalStateSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.KILLED);
}
@Test
@@ -627,7 +617,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertFailed(application, ".*" + message + ".*Failing the application.*");
assertAppFinalStateSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.FAILED);
}
@Test
@@ -649,7 +639,7 @@ public class TestRMAppTransitions {
sendAppUpdateSavedEvent(application);
assertKilled(application);
assertAppFinalStateSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.KILLED);
}
@Test
@@ -672,7 +662,7 @@ public class TestRMAppTransitions {
sendAttemptUpdateSavedEvent(application);
sendAppUpdateSavedEvent(application);
assertKilled(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.KILLED);
}
@Test
@@ -727,7 +717,7 @@ public class TestRMAppTransitions {
rmDispatcher.await();
assertFailed(application, ".*Failing the application.*");
assertAppFinalStateSaved(application);
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.FAILED);
}
@Test
@@ -785,7 +775,7 @@ public class TestRMAppTransitions {
StringBuilder diag = application.getDiagnostics();
Assert.assertEquals("application diagnostics is not correct",
"", diag.toString());
- verify(writer).applicationFinished(any(RMApp.class));
+ verifyApplicationFinished(RMAppState.FINISHED);
}
@Test (timeout = 30000)
@@ -810,10 +800,10 @@ public class TestRMAppTransitions {
rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.FAILED, application);
+ verifyApplicationFinished(RMAppState.FAILED);
assertTimesAtFinish(application);
assertAppState(RMAppState.FAILED, application);
- verify(writer).applicationFinished(any(RMApp.class));
}
@Test (timeout = 30000)
@@ -856,10 +846,10 @@ public class TestRMAppTransitions {
rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
+ verifyApplicationFinished(RMAppState.KILLED);
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
- verify(writer).applicationFinished(any(RMApp.class));
}
@Test
@@ -871,4 +861,11 @@ public class TestRMAppTransitions {
report = app.createAndGetApplicationReport("clientuser", true);
Assert.assertNotNull(report.getApplicationResourceUsageReport());
}
+
+ private void verifyApplicationFinished(RMAppState state) {
+ ArgumentCaptor<RMAppState> finalState =
+ ArgumentCaptor.forClass(RMAppState.class);
+ verify(writer).applicationFinished(any(RMApp.class), finalState.capture());
+ Assert.assertEquals(state, finalState.getValue());
+ }
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java Wed Feb 19 17:24:02 2014
@@ -103,6 +103,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.mockito.ArgumentCaptor;
@RunWith(value = Parameterized.class)
public class TestRMAppAttemptTransitions {
@@ -367,6 +368,7 @@ public class TestRMAppAttemptTransitions
// verify(application).handle(anyObject());
verify(application).handle(any(RMAppRejectedEvent.class));
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
/**
@@ -384,9 +386,9 @@ public class TestRMAppAttemptTransitions
assertEquals(0, applicationAttempt.getRanNodes().size());
assertNull(applicationAttempt.getFinalApplicationStatus());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
- verify(writer).applicationAttemptFinished(any(RMAppAttempt.class));
verifyAttemptFinalStateSaved();
assertFalse(transferStateFromPreviousAttempt);
+ verifyApplicationAttemptFinished(RMAppAttemptState.KILLED);
}
/**
@@ -460,8 +462,8 @@ public class TestRMAppAttemptTransitions
// Check events
verify(application, times(1)).handle(any(RMAppFailedAttemptEvent.class));
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
- verify(writer).applicationAttemptFinished(any(RMAppAttempt.class));
verifyAttemptFinalStateSaved();
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
/**
@@ -496,7 +498,6 @@ public class TestRMAppAttemptTransitions
assertEquals(getProxyUrl(applicationAttempt),
applicationAttempt.getTrackingUrl());
}
- verify(writer).applicationAttemptStarted(any(RMAppAttempt.class));
// TODO - need to add more checks relevant to this state
}
@@ -544,6 +545,7 @@ public class TestRMAppAttemptTransitions
assertEquals(finalStatus, applicationAttempt.getFinalApplicationStatus());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
assertFalse(transferStateFromPreviousAttempt);
+ verifyApplicationAttemptFinished(RMAppAttemptState.FINISHED);
}
@@ -806,7 +808,7 @@ public class TestRMAppAttemptTransitions
assertEquals(RMAppAttemptState.FAILED,
applicationAttempt.getAppAttemptState());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
- verify(writer).applicationAttemptFinished(any(RMAppAttempt.class));
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
@Test
@@ -846,6 +848,7 @@ public class TestRMAppAttemptTransitions
assertEquals(rmAppPageUrl, applicationAttempt.getOriginalTrackingUrl());
assertEquals(rmAppPageUrl, applicationAttempt.getTrackingUrl());
verifyAMHostAndPortInvalidated();
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
@Test
@@ -883,6 +886,7 @@ public class TestRMAppAttemptTransitions
assertEquals(rmAppPageUrl, applicationAttempt.getTrackingUrl());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
verifyAMHostAndPortInvalidated();
+ verifyApplicationAttemptFinished(RMAppAttemptState.KILLED);
}
@Test(timeout=10000)
@@ -903,6 +907,7 @@ public class TestRMAppAttemptTransitions
assertEquals(rmAppPageUrl, applicationAttempt.getOriginalTrackingUrl());
assertEquals(rmAppPageUrl, applicationAttempt.getTrackingUrl());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
@Test(timeout=20000)
@@ -925,6 +930,7 @@ public class TestRMAppAttemptTransitions
assertEquals(rmAppPageUrl, applicationAttempt.getTrackingUrl());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
verifyAMHostAndPortInvalidated();
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
@Test
@@ -1177,6 +1183,7 @@ public class TestRMAppAttemptTransitions
applicationAttempt.getAppAttemptState());
// should not kill containers when attempt fails.
assertTrue(transferStateFromPreviousAttempt);
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
// failed attempt captured the container finished event.
assertEquals(0, applicationAttempt.getJustFinishedContainers().size());
@@ -1216,6 +1223,7 @@ public class TestRMAppAttemptTransitions
assertEquals(RMAppAttemptState.FAILED,
applicationAttempt.getAppAttemptState());
assertFalse(transferStateFromPreviousAttempt);
+ verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
private void verifyTokenCount(ApplicationAttemptId appAttemptId, int count) {
@@ -1245,4 +1253,13 @@ public class TestRMAppAttemptTransitions
assertEquals("N/A", applicationAttempt.getHost());
assertEquals(-1, applicationAttempt.getRpcPort());
}
+
+ private void verifyApplicationAttemptFinished(RMAppAttemptState state) {
+ ArgumentCaptor<RMAppAttemptState> finalState =
+ ArgumentCaptor.forClass(RMAppAttemptState.class);
+ verify(writer).applicationAttemptFinished(
+ any(RMAppAttempt.class), finalState.capture());
+ Assert.assertEquals(state, finalState.getValue());
+ }
+
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java?rev=1569833&r1=1569832&r2=1569833&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java Wed Feb 19 17:24:02 2014
@@ -19,6 +19,7 @@
package org.apache.hadoop.yarn.server.webproxy;
import java.io.IOException;
+import java.net.InetSocketAddress;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -69,8 +70,21 @@ public class WebAppProxyServer extends C
* @throws IOException on any error.
*/
protected void doSecureLogin(Configuration conf) throws IOException {
+ InetSocketAddress socAddr = getBindAddress(conf);
SecurityUtil.login(conf, YarnConfiguration.PROXY_KEYTAB,
- YarnConfiguration.PROXY_PRINCIPAL);
+ YarnConfiguration.PROXY_PRINCIPAL, socAddr.getHostName());
+ }
+
+ /**
+ * Retrieve PROXY bind address from configuration
+ *
+ * @param conf
+ * @return InetSocketAddress
+ */
+ public static InetSocketAddress getBindAddress(Configuration conf) {
+ return conf.getSocketAddr(YarnConfiguration.PROXY_ADDRESS,
+ YarnConfiguration.DEFAULT_PROXY_ADDRESS,
+ YarnConfiguration.DEFAULT_PROXY_PORT);
}
public static void main(String[] args) {