This is an automated email from the ASF dual-hosted git repository.
cnauroth pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new a6054bb5cc2 YARN-11925. Fix the configurability of RM webservice class
a6054bb5cc2 is described below
commit a6054bb5cc29dfc1d2c3729bd3e7c867fef50769
Author: Peter Szucs <[email protected]>
AuthorDate: Mon Feb 9 19:19:21 2026 +0000
YARN-11925. Fix the configurability of RM webservice class
Closes #8215
Signed-off-by: Chris Nauroth <[email protected]>
Reviewed-by: K0K0V0K <[email protected]>
Reviewed-by: Hean Chhinling
<[email protected]>
---
.../server/resourcemanager/ResourceManager.java | 2 +-
.../server/resourcemanager/webapp/RMWebApp.java | 22 +++++++++++++---------
.../resourcemanager/webapp/TestRMWebApp.java | 21 +++++++++++++++++++++
3 files changed, 35 insertions(+), 10 deletions(-)
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
index e356dae70e8..b9dde6d96f0 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
@@ -1522,7 +1522,7 @@ protected void startWepApp() {
try {
RMWebApp rmWebApp = new RMWebApp(this);
- builder.withResourceConfig(rmWebApp.resourceConfig());
+ builder.withResourceConfig(rmWebApp.resourceConfig(conf));
webApp = builder.start(rmWebApp, uiWebAppContext,
schedulerUiWebAppContext);
} catch (WebAppException e) {
webApp = e.getWebApp();
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebApp.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebApp.java
index 4b795bb580b..c7022581533 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebApp.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebApp.java
@@ -54,15 +54,19 @@ public RMWebApp(ResourceManager rm) {
this.rm = rm;
}
- public ResourceConfig resourceConfig() {
- ResourceConfig config = new ResourceConfig();
- config.packages("org.apache.hadoop.yarn.server.resourcemanager.webapp");
- config.register(new JerseyBinder());
- config.register(RMWebServices.class);
- config.register(GenericExceptionHandler.class);
- config.register(JsonProviderFeature.class);
- config.register(JAXBContextResolver.class);
- return config;
+ public ResourceConfig resourceConfig(Configuration config) {
+ ResourceConfig resourceConfig = new ResourceConfig();
+ resourceConfig.register(new JerseyBinder());
+
+ Class webService =
config.getClass(YarnConfiguration.YARN_WEBAPP_CUSTOM_WEBSERVICE_CLASS,
+ RMWebServices.class);
+ resourceConfig.register(webService);
+ LOG.debug("Registered webservice class is {}", webService.getName());
+
+ resourceConfig.register(GenericExceptionHandler.class);
+ resourceConfig.register(JsonProviderFeature.class);
+ resourceConfig.register(JAXBContextResolver.class);
+ return resourceConfig;
}
private class JerseyBinder extends AbstractBinder {
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 9581cb59c26..e4e381aafe2 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
@@ -21,6 +21,7 @@
import static
org.apache.hadoop.yarn.server.resourcemanager.MockNodes.newResource;
import static org.apache.hadoop.yarn.webapp.Params.TITLE;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.ArgumentMatchers.any;
@@ -71,6 +72,7 @@
import org.apache.hadoop.yarn.webapp.WebApps;
import org.apache.hadoop.yarn.webapp.YarnWebParams;
import org.apache.hadoop.yarn.webapp.test.WebAppTests;
+import org.glassfish.jersey.server.ResourceConfig;
import org.junit.jupiter.api.Test;
import org.apache.hadoop.thirdparty.com.google.common.collect.Maps;
@@ -417,4 +419,23 @@ public static void main(String[] args) throws Exception {
WebApps.$for("yarn", new TestRMWebApp()).at(8888).inDevMode().
start(new RMWebApp(mockFifoRm(10, 1, 4, 8*GiB))).joinThread();
}
+
+ @Test
+ public void testCustomWebServiceClass() {
+ RMWebApp rmWebApp = new RMWebApp(mock(ResourceManager.class));
+ Configuration conf = new Configuration();
+ conf.set(YarnConfiguration.YARN_WEBAPP_CUSTOM_WEBSERVICE_CLASS,
+
"org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebApp$CustomRMWebServices");
+
+ ResourceConfig resourceConfig = rmWebApp.resourceConfig(conf);
+
+ assertTrue(resourceConfig.isRegistered(CustomRMWebServices.class));
+ assertFalse(resourceConfig.isRegistered(RMWebServices.class));
+ }
+
+ private class CustomRMWebServices extends RMWebServices {
+ public CustomRMWebServices(ResourceManager rm, Configuration conf) {
+ super(rm, conf);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]