YARN-500. Fixed YARN webapps to not roll-over ports when explicitly asked to use non-ephemeral ports. Contributed by Kenji Kikushima.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1468739 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9bebccc755
commit
dbcda89fef
|
@ -238,6 +238,9 @@ Release 2.0.5-beta - UNRELEASED
|
||||||
than its host:port during scheduling which caused incorrect locality for
|
than its host:port during scheduling which caused incorrect locality for
|
||||||
containers. (Roger Hoover via acmurthy)
|
containers. (Roger Hoover via acmurthy)
|
||||||
|
|
||||||
|
YARN-500. Fixed YARN webapps to not roll-over ports when explicitly asked
|
||||||
|
to use non-ephemeral ports. (Kenji Kikushima via vinodkv)
|
||||||
|
|
||||||
Release 2.0.4-alpha - UNRELEASED
|
Release 2.0.4-alpha - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -97,13 +97,14 @@ public class WebApps {
|
||||||
public Builder<T> at(String bindAddress) {
|
public Builder<T> at(String bindAddress) {
|
||||||
String[] parts = StringUtils.split(bindAddress, ':');
|
String[] parts = StringUtils.split(bindAddress, ':');
|
||||||
if (parts.length == 2) {
|
if (parts.length == 2) {
|
||||||
return at(parts[0], Integer.parseInt(parts[1]), true);
|
int port = Integer.parseInt(parts[1]);
|
||||||
|
return at(parts[0], port, port == 0);
|
||||||
}
|
}
|
||||||
return at(bindAddress, 0, true);
|
return at(bindAddress, 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder<T> at(int port) {
|
public Builder<T> at(int port) {
|
||||||
return at("0.0.0.0", port, false);
|
return at("0.0.0.0", port, port == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder<T> at(String address, int port, boolean findPort) {
|
public Builder<T> at(String address, int port, boolean findPort) {
|
||||||
|
|
|
@ -161,6 +161,30 @@ public class TestWebApp {
|
||||||
app.stop();
|
app.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected=org.apache.hadoop.yarn.webapp.WebAppException.class)
|
||||||
|
public void testCreateWithBindAddressNonZeroPort() {
|
||||||
|
WebApp app = WebApps.$for(this).at("0.0.0.0:50000").start();
|
||||||
|
int port = app.getListenerAddress().getPort();
|
||||||
|
assertEquals(50000, port);
|
||||||
|
// start another WebApp with same NonZero port
|
||||||
|
WebApp app2 = WebApps.$for(this).at("0.0.0.0:50000").start();
|
||||||
|
// An exception occurs (findPort disabled)
|
||||||
|
app.stop();
|
||||||
|
app2.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=org.apache.hadoop.yarn.webapp.WebAppException.class)
|
||||||
|
public void testCreateWithNonZeroPort() {
|
||||||
|
WebApp app = WebApps.$for(this).at(50000).start();
|
||||||
|
int port = app.getListenerAddress().getPort();
|
||||||
|
assertEquals(50000, port);
|
||||||
|
// start another WebApp with same NonZero port
|
||||||
|
WebApp app2 = WebApps.$for(this).at(50000).start();
|
||||||
|
// An exception occurs (findPort disabled)
|
||||||
|
app.stop();
|
||||||
|
app2.stop();
|
||||||
|
}
|
||||||
|
|
||||||
@Test public void testServePaths() {
|
@Test public void testServePaths() {
|
||||||
WebApp app = WebApps.$for("test", this).start();
|
WebApp app = WebApps.$for("test", this).start();
|
||||||
assertEquals("/test", app.getRedirectPath());
|
assertEquals("/test", app.getRedirectPath());
|
||||||
|
|
Loading…
Reference in New Issue