You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nemo.apache.org by jo...@apache.org on 2018/11/05 00:20:14 UTC

[incubator-nemo] branch master updated: [NEMO-202] Make job launcher handle empty user_args #147

This is an automated email from the ASF dual-hosted git repository.

johnyangk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nemo.git


The following commit(s) were added to refs/heads/master by this push:
     new f34324e  [NEMO-202] Make job launcher handle empty user_args #147
f34324e is described below

commit f34324e9aa22e78b0cb00e745f5c9e031f61417e
Author: Yunseong Lee <yu...@me.com>
AuthorDate: Mon Nov 5 09:20:09 2018 +0900

    [NEMO-202] Make job launcher handle empty user_args #147
    
    JIRA: [NEMO-202: Bug with empty string user_args](https://issues.apache.org/jira/projects/NEMO/issues/NEMO-202)
    
    **Major changes:**
    - Make JobLauncher handle an empty string ("") for user_args
    - When an empty string is given, JobLauncher passes an empty array (String[0]) to the application.
    
    **Minor changes to note:**
    - N/A
    
    **Tests for the changes:**
    - Added SparkScala#testALSEmptyUserArgs.
    
    **Other comments:**
    - N/A
    
    Closes #147
---
 client/src/main/java/org/apache/nemo/client/JobLauncher.java |  4 +++-
 .../test/java/org/apache/nemo/examples/spark/SparkScala.java | 12 +++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/client/src/main/java/org/apache/nemo/client/JobLauncher.java b/client/src/main/java/org/apache/nemo/client/JobLauncher.java
index 00d1ba1..7ec5fdd 100644
--- a/client/src/main/java/org/apache/nemo/client/JobLauncher.java
+++ b/client/src/main/java/org/apache/nemo/client/JobLauncher.java
@@ -86,6 +86,7 @@ public final class JobLauncher {
   private static CountDownLatch jobDoneLatch;
   private static String serializedDAG;
   private static final List<?> COLLECTED_DATA = new ArrayList<>();
+  private static final String[] EMPTY_USER_ARGS = new String[0];
 
   /**
    * private constructor.
@@ -239,7 +240,8 @@ public final class JobLauncher {
   private static void runUserProgramMain(final Configuration jobConf) throws Exception {
     final Injector injector = TANG.newInjector(jobConf);
     final String className = injector.getNamedInstance(JobConf.UserMainClass.class);
-    final String[] args = injector.getNamedInstance(JobConf.UserMainArguments.class).split(" ");
+    final String userArgsString = injector.getNamedInstance(JobConf.UserMainArguments.class);
+    final String[] args = userArgsString.isEmpty() ? EMPTY_USER_ARGS : userArgsString.split(" ");
     final Class userCode = Class.forName(className);
     final Method method = userCode.getMethod("main", String[].class);
     if (!Modifier.isStatic(method.getModifiers())) {
diff --git a/examples/spark/src/test/java/org/apache/nemo/examples/spark/SparkScala.java b/examples/spark/src/test/java/org/apache/nemo/examples/spark/SparkScala.java
index 108fa29..3dcf490 100644
--- a/examples/spark/src/test/java/org/apache/nemo/examples/spark/SparkScala.java
+++ b/examples/spark/src/test/java/org/apache/nemo/examples/spark/SparkScala.java
@@ -113,7 +113,17 @@ public final class SparkScala {
     JobLauncher.main(builder
       .addJobId(SparkALS.class.getSimpleName() + "_test")
       .addUserMain(SparkALS.class.getCanonicalName())
-      .addUserArgs("100") // TODO #202: Bug with empty string user_args
+      .addUserArgs("100")
+      .addOptimizationPolicy(DefaultPolicy.class.getCanonicalName())
+      .build());
+  }
+
+  @Test(timeout = TIMEOUT)
+  public void testALSEmptyUserArgs() throws Exception {
+    JobLauncher.main(builder
+      .addJobId(SparkALS.class.getSimpleName() + "_test")
+      .addUserMain(SparkALS.class.getCanonicalName())
+      .addUserArgs("")
       .addOptimizationPolicy(DefaultPolicy.class.getCanonicalName())
       .build());
   }