Repository: hadoop
Updated Branches:
refs/heads/branch-2.7 1ae8a8342 -> 6a30d93aa
YARN-3840. Resource Manager web ui issue when sorting application by id (with
application having id > 9999). Contributed by Mohammad Shahid Khan and Varun
Saxena
(cherry picked from commit 9f77ccad735f4843ce2c38355de9f434838d4507)
Conflicts:
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TaskPage.java
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6a30d93a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6a30d93a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6a30d93a
Branch: refs/heads/branch-2.7
Commit: 6a30d93aa433188aa51b0fd417e80fcb227226f3
Parents: 1ae8a83
Author: Jian He <[email protected]>
Authored: Thu Dec 3 12:42:53 2015 -0800
Committer: Jian He <[email protected]>
Committed: Thu Dec 3 14:11:48 2015 -0800
----------------------------------------------------------------------
.../mapreduce/v2/app/webapp/TasksPage.java | 2 +-
hadoop-yarn-project/CHANGES.txt | 4 ++
.../hadoop/yarn/webapp/view/JQueryUI.java | 21 ++++----
.../webapps/static/dt-sorting/natural.js | 54 ++++++++++++++++++++
.../webapp/AppAttemptPage.java | 2 +-
.../webapp/AppPage.java | 2 +-
.../webapp/TestAHSWebApp.java | 50 +++++++++++++++++-
.../hadoop/yarn/server/webapp/WebPageUtils.java | 9 ++--
.../nodemanager/webapp/AllApplicationsPage.java | 9 +++-
.../nodemanager/webapp/AllContainersPage.java | 8 ++-
.../resourcemanager/webapp/TestRMWebApp.java | 5 ++
11 files changed, 143 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java
----------------------------------------------------------------------
diff --git
a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java
b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java
index 9648527..e2f12dc 100644
---
a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java
+++
b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java
@@ -43,7 +43,7 @@ public class TasksPage extends AppView {
.append(", bProcessing: true")
.append("\n, aoColumnDefs: [\n")
- .append("{'sType':'string', 'aTargets': [0]")
+ .append("{'sType':'natural', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }")
.append("\n, {'sType':'numeric', bSearchable:false, 'aTargets': [1]")
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 9ade6b3..c77d6b0 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -39,6 +39,10 @@ Release 2.7.3 - UNRELEASED
YARN-4398. Remove unnecessary synchronization in RMStateStore. (Ning Ding
via jianhe)
+ YARN-3840. Resource Manager web ui issue when sorting application by id
+ (with application having id > 9999) ï¼Mohammad Shahid Khan & Varun Saxena
+ via jianhe)
+
Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/view/JQueryUI.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/view/JQueryUI.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/view/JQueryUI.java
index 9abfdac..06372e3 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/view/JQueryUI.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/view/JQueryUI.java
@@ -65,14 +65,14 @@ public class JQueryUI extends HtmlBlock {
@Override
protected void render(Block html) {
- html.
- link(root_url("static/jquery/themes-1.9.1/base/jquery-ui.css")).
- link(root_url("static/dt-1.9.4/css/jui-dt.css")).
- script(root_url("static/jquery/jquery-1.8.2.min.js")).
- script(root_url("static/jquery/jquery-ui-1.9.1.custom.min.js")).
- script(root_url("static/dt-1.9.4/js/jquery.dataTables.min.js")).
- script(root_url("static/yarn.dt.plugins.js")).
- style("#jsnotice { padding: 0.2em; text-align: center; }",
+ html.link(root_url("static/jquery/themes-1.9.1/base/jquery-ui.css"))
+ .link(root_url("static/dt-1.9.4/css/jui-dt.css"))
+ .script(root_url("static/jquery/jquery-1.8.2.min.js"))
+ .script(root_url("static/jquery/jquery-ui-1.9.1.custom.min.js"))
+ .script(root_url("static/dt-1.9.4/js/jquery.dataTables.min.js"))
+ .script(root_url("static/yarn.dt.plugins.js"))
+ .script(root_url("static/dt-sorting/natural.js"))
+ .style("#jsnotice { padding: 0.2em; text-align: center; }",
".ui-progressbar { height: 1em; min-width: 5em }"); // required
List<String> list = Lists.newArrayList();
@@ -82,9 +82,8 @@ public class JQueryUI extends HtmlBlock {
initProgressBars(list);
if (!list.isEmpty()) {
- html.
- script().$type("text/javascript").
- _("$(function() {")._(list.toArray())._("});")._();
+ html.script().$type("text/javascript")._("$(function() {")
+ ._(list.toArray())._("});")._();
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-sorting/natural.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-sorting/natural.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-sorting/natural.js
new file mode 100644
index 0000000..3475edd
--- /dev/null
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/dt-sorting/natural.js
@@ -0,0 +1,54 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+ function naturalSort (a, b) {
+ var diff = a.length - b.length;
+ if (diff != 0) {
+ var splitA = a.split("_");
+ var splitB = b.split("_");
+ if (splitA.length != splitB.length) {
+ return a.localeCompare(b);
+ }
+ for (var i=1; i < splitA.length; i++) {
+ var splitdiff = splitA[i].length - splitB[i].length;
+ if (splitdiff != 0) {
+ return splitdiff;
+ }
+ var splitCompare = splitA[i].localeCompare(splitB[i]);
+ if (splitCompare != 0) {
+ return splitCompare;
+ }
+ }
+ return diff;
+ }
+ return a.localeCompare(b);
+ }
+
+jQuery.extend( jQuery.fn.dataTableExt.oSort, {
+ "natural-asc": function ( a, b ) {
+ return naturalSort(a,b);
+ },
+
+ "natural-desc": function ( a, b ) {
+ return naturalSort(a,b) * -1;
+ }
+} );
+
+}());
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppAttemptPage.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppAttemptPage.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppAttemptPage.java
index c7fe318..a08297d 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppAttemptPage.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppAttemptPage.java
@@ -53,7 +53,7 @@ public class AppAttemptPage extends AHSView {
protected String getContainersTableColumnDefs() {
StringBuilder sb = new StringBuilder();
- return sb.append("[\n").append("{'sType':'string', 'aTargets': [0]")
+ return sb.append("[\n").append("{'sType':'natural', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }]").toString();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppPage.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppPage.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppPage.java
index 50dcd96..c0e1394 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppPage.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AppPage.java
@@ -55,7 +55,7 @@ public class AppPage extends AHSView {
protected String getAttemptsTableColumnDefs() {
StringBuilder sb = new StringBuilder();
- return sb.append("[\n").append("{'sType':'string', 'aTargets': [0]")
+ return sb.append("[\n").append("{'sType':'natural', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }")
.append("\n, {'sType':'numeric', 'aTargets': [1]")
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
index 2cd7580..195a397 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
@@ -21,7 +21,7 @@ package
org.apache.hadoop.yarn.server.applicationhistoryservice.webapp;
import static org.apache.hadoop.yarn.webapp.Params.TITLE;
import static org.mockito.Mockito.mock;
-import org.junit.Assert;
+import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
@@ -38,6 +38,7 @@ import
org.apache.hadoop.yarn.server.applicationhistoryservice.MemoryApplication
import org.apache.hadoop.yarn.util.StringHelper;
import org.apache.hadoop.yarn.webapp.YarnWebParams;
import org.apache.hadoop.yarn.webapp.test.WebAppTests;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -88,6 +89,21 @@ public class TestAHSWebApp extends
ApplicationHistoryStoreTestUtils {
}
@Test
+ public void testAPPViewNaturalSortType() throws Exception {
+ Injector injector =
+ WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+ mockApplicationHistoryClientService(5, 1, 1));
+ AHSView ahsViewInstance = injector.getInstance(AHSView.class);
+
+ ahsViewInstance.render();
+ WebAppTests.flushOutput(injector);
+ Map<String, String> moreParams =
+ ahsViewInstance.context().requestContext().moreParams();
+ String appTableColumnsMeta = moreParams.get("ui.dataTables.apps.init");
+ Assert.assertTrue(appTableColumnsMeta.indexOf("natural") != -1);
+ }
+
+ @Test
public void testAppPage() throws Exception {
Injector injector =
WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
@@ -104,6 +120,22 @@ public class TestAHSWebApp extends
ApplicationHistoryStoreTestUtils {
}
@Test
+ public void testAppPageNaturalSortType() throws Exception {
+ Injector injector =
+ WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+ mockApplicationHistoryClientService(1, 5, 1));
+ AppPage appPageInstance = injector.getInstance(AppPage.class);
+
+ appPageInstance.render();
+ WebAppTests.flushOutput(injector);
+ Map<String, String> moreParams =
+ appPageInstance.context().requestContext().moreParams();
+ String attemptsTableColumnsMeta =
+ moreParams.get("ui.dataTables.attempts.init");
+ Assert.assertTrue(attemptsTableColumnsMeta.indexOf("natural") != -1);
+ }
+
+ @Test
public void testAppAttemptPage() throws Exception {
Injector injector =
WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
@@ -122,6 +154,21 @@ public class TestAHSWebApp extends
ApplicationHistoryStoreTestUtils {
}
@Test
+ public void testAppAttemptPageNaturalSortType() throws Exception {
+ Injector injector =
+ WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+ mockApplicationHistoryClientService(1, 1, 5));
+ AppAttemptPage appAttemptPageInstance =
+ injector.getInstance(AppAttemptPage.class);
+ appAttemptPageInstance.render();
+ WebAppTests.flushOutput(injector);
+ Map<String, String> moreParams =
+ appAttemptPageInstance.context().requestContext().moreParams();
+ String tableColumnsMeta = moreParams.get("ui.dataTables.containers.init");
+ Assert.assertTrue(tableColumnsMeta.indexOf("natural") != -1);
+ }
+
+ @Test
public void testContainerPage() throws Exception {
Injector injector =
WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
@@ -181,5 +228,4 @@ public class TestAHSWebApp extends
ApplicationHistoryStoreTestUtils {
return store;
}
};
-
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
index 5acabf5..208cc70 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
@@ -42,9 +42,8 @@ public class WebPageUtils {
private static String getAppsTableColumnDefs(boolean isFairSchedulerPage) {
StringBuilder sb = new StringBuilder();
- return sb
- .append("[\n")
- .append("{'sType':'string', 'aTargets': [0]")
+ return sb.append("[\n")
+ .append("{'sType':'natural', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }")
.append("\n, {'sType':'numeric', 'aTargets': " +
(isFairSchedulerPage ? "[6, 7]": "[5, 6]"))
@@ -63,7 +62,7 @@ public class WebPageUtils {
private static String getAttemptsTableColumnDefs() {
StringBuilder sb = new StringBuilder();
- return sb.append("[\n").append("{'sType':'string', 'aTargets': [0]")
+ return sb.append("[\n").append("{'sType':'natural', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }")
.append("\n, {'sType':'numeric', 'aTargets': [1]")
.append(", 'mRender': renderHadoopDate }]").toString();
@@ -79,7 +78,7 @@ public class WebPageUtils {
private static String getContainersTableColumnDefs() {
StringBuilder sb = new StringBuilder();
- return sb.append("[\n").append("{'sType':'string', 'aTargets': [0]")
+ return sb.append("[\n").append("{'sType':'natural', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }]").toString();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
index 9a22743..d32b271 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
@@ -54,7 +54,14 @@ public class AllApplicationsPage extends NMView {
// Sort by id upon page load
append(", aaSorting: [[0, 'asc']]").
// applicationid, applicationstate
- append(", aoColumns:[null, null]} ").toString();
+ append(", aoColumns:[").append(getApplicationsIdColumnDefs())
+ .append(", null]} ").toString();
+ }
+
+ private String getApplicationsIdColumnDefs() {
+ StringBuilder sb = new StringBuilder();
+ return sb.append("{'sType':'natural', 'aTargets': [0]")
+ .append(", 'mRender': parseHadoopID }").toString();
}
@Override
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
index 1bbb945..24b8575 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
@@ -52,9 +52,15 @@ public class AllContainersPage extends NMView {
private String containersTableInit() {
return tableInit().
// containerid, containerid, log-url
- append(", aoColumns:[null, null, {bSearchable:false}]} ").toString();
+ append(", aoColumns:[").append(getContainersIdColumnDefs())
+ .append(", null, {bSearchable:false}]} ").toString();
}
+ private String getContainersIdColumnDefs() {
+ StringBuilder sb = new StringBuilder();
+ return sb.append("{'sType':'natural', 'aTargets': [0]")
+ .append(", 'mRender': parseHadoopID }").toString();
+ }
@Override
protected Class<? extends SubView> content() {
return AllContainersBlock.class;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a30d93a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebApp.java
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebApp.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebApp.java
index 481a53b..3edb56c 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebApp.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebApp.java
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import org.apache.hadoop.conf.Configuration;
@@ -119,6 +120,10 @@ public class TestRMWebApp {
YarnApplicationState.RUNNING.toString()));
rmViewInstance.render();
WebAppTests.flushOutput(injector);
+ Map<String, String> moreParams =
+ rmViewInstance.context().requestContext().moreParams();
+ String appsTableColumnsMeta = moreParams.get("ui.dataTables.apps.init");
+ Assert.assertTrue(appsTableColumnsMeta.indexOf("natural") != -1);
}
@Test public void testNodesPage() {