You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2015/12/14 18:45:56 UTC

[4/6] incubator-slider git commit: SLIDER-1024 extract and rethrow nested IOEs from webapp creation

SLIDER-1024 extract and rethrow nested IOEs from webapp creation


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/3f8bfbd8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/3f8bfbd8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/3f8bfbd8

Branch: refs/heads/develop
Commit: 3f8bfbd8bf6c610c1b7d46e6277afdc920b8ad56
Parents: 8803886
Author: Steve Loughran <st...@apache.org>
Authored: Mon Dec 14 17:36:56 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Dec 14 17:40:29 2015 +0000

----------------------------------------------------------------------
 .../server/appmaster/SliderAppMaster.java       | 51 ++++++++++++--------
 1 file changed, 32 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3f8bfbd8/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index a268c97..7e75c10 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -79,6 +79,7 @@ import org.apache.hadoop.registry.server.integration.RMRegistryOperationsService
 import org.apache.hadoop.yarn.security.AMRMTokenIdentifier;
 import org.apache.hadoop.yarn.security.client.ClientToAMTokenSecretManager;
 import org.apache.hadoop.yarn.util.ConverterUtils;
+import org.apache.hadoop.yarn.webapp.WebAppException;
 import org.apache.hadoop.yarn.webapp.WebApps;
 import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
 import org.apache.slider.api.ClusterDescription;
@@ -173,7 +174,6 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
-import java.net.BindException;
 import java.net.InetSocketAddress;
 import java.net.URI;
 import java.net.URL;
@@ -797,7 +797,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
       // This will start heartbeating to the RM
       // address = SliderUtils.getRmSchedulerAddress(asyncRMClient.getConfig());
       // *****************************************************
-      log.info("Connecting to RM at {},address tracking URL={}",
+      log.info("Connecting to RM at {}; AM tracking URL={}",
                appMasterRpcPort, appMasterTrackingUrl);
       amRegistrationData = asyncRMClient.registerApplicationMaster(appMasterHostname,
                                    appMasterRpcPort,
@@ -1016,24 +1016,37 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
    *   a managed web application shutdown.
    * @param port port to deploy the web application on
    * @param webAppApi web app API instance
+   * @throws IOException general problems starting the webapp (network, etc)
+   * @throws WebAppException other issues
    */
-  private void deployWebApplication(int port, WebAppApiImpl webAppApi) {
+  private void deployWebApplication(int port, WebAppApiImpl webAppApi)
+    throws IOException {
 
-    log.info("Creating and launching web application");
-    webApp = new SliderAMWebApp(webAppApi);
-    WebApps.$for(SliderAMWebApp.BASE_PATH,
-        WebAppApi.class,
-        webAppApi,
-        RestPaths.WS_CONTEXT)
-           .withHttpPolicy(getConfig(), HttpConfig.Policy.HTTP_ONLY)
-           .at(port)
-           .inDevMode()
-           .start(webApp);
-
-    WebAppService<SliderAMWebApp> webAppService =
-      new WebAppService<>("slider", webApp);
-
-    deployChildService(webAppService);
+    try {
+      webApp = new SliderAMWebApp(webAppApi);
+      HttpConfig.Policy policy = HttpConfig.Policy.HTTP_ONLY;
+      log.info("Launching web application at port {} with policy {}", port, policy);
+
+      WebApps.$for(SliderAMWebApp.BASE_PATH,
+          WebAppApi.class,
+          webAppApi,
+          RestPaths.WS_CONTEXT)
+             .withHttpPolicy(getConfig(), policy)
+             .at(port)
+             .inDevMode()
+             .start(webApp);
+
+      WebAppService<SliderAMWebApp> webAppService =
+        new WebAppService<>("slider", webApp);
+
+      deployChildService(webAppService);
+    } catch (WebAppException e) {
+      if (e.getCause() instanceof IOException) {
+        throw (IOException)e.getCause();
+      } else {
+        throw e;
+      }
+    }
   }
 
   private void processAMCredentials(SecurityConfiguration securityConfiguration)
@@ -1174,7 +1187,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
         .getAppConfOperations().getComponent(SliderKeys.COMPONENT_AM);
     AgentWebApp agentWebApp = AgentWebApp.$for(AgentWebApp.BASE_PATH,
         webAppApi,
-                     RestPaths.AGENT_WS_CONTEXT)
+        RestPaths.AGENT_WS_CONTEXT)
         .withComponentConfig(appMasterConfig)
         .start();
     agentOpsUrl =