[ 
https://issues.apache.org/jira/browse/TWILL-63?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14997591#comment-14997591
 ] 

ASF GitHub Bot commented on TWILL-63:
-------------------------------------

Github user chtyim commented on a diff in the pull request:

    https://github.com/apache/incubator-twill/pull/66#discussion_r44346230
  
    --- Diff: 
twill-core/src/main/java/org/apache/twill/internal/ApplicationBundler.java ---
    @@ -145,41 +145,63 @@ public void createBundle(Location target, Class<?> 
clz, Class<?>...classes) thro
        * @throws IOException
        */
       public void createBundle(Location target, Iterable<Class<?>> classes, 
Iterable<URI> resources) throws IOException {
    -    LOG.debug("start creating bundle {}. building a temporary file locally 
at first", target.getName());
    +    createBundleAndGetClassPathUrls(target, classes, resources);
    +  }
    +
    +  public Set<URL> createBundleAndGetClassPathUrls(Location target, 
Iterable<Class<?>> classes,
    +                                                  Iterable<URI> resources) 
throws IOException {
    +    return createBundleAndGetClassPathUrls(target.getName(), 
target.toString(),
    +                                           target.getOutputStream(), 
classes, resources);
    +  }
    +
    +  private Set<URL> createBundleAndGetClassPathUrls(String targetName, 
String targetPath,
    +                                                   OutputStream 
targetOutputStream,
    +                                                   Iterable<Class<?>> 
classes,
    +                                                   Iterable<URI> 
resources) throws IOException {
    +    LOG.debug("start creating bundle {}. building a temporary file locally 
at first", targetName);
         // Write the jar to local tmp file first
    -    File tmpJar = File.createTempFile(target.getName(), ".tmp");
    +    File tmpJar = File.createTempFile(targetName, ".tmp");
    +    Set<URL> classPathUrls;
         try {
           Set<String> entries = Sets.newHashSet();
           try (JarOutputStream jarOut = new JarOutputStream(new 
FileOutputStream(tmpJar))) {
             // Find class dependencies
    -        findDependencies(classes, entries, jarOut);
    +        classPathUrls = findDependenciesAndGetClassPathUrls(classes, 
entries, jarOut);
     
             // Add extra resources
             for (URI resource : resources) {
               copyResource(resource, entries, jarOut);
             }
           }
    -      LOG.debug("copying temporary bundle to destination {} ({} bytes)", 
target, tmpJar.length());
    +      LOG.debug("copying temporary bundle to destination {} ({} bytes)", 
targetPath, tmpJar.length());
           // Copy the tmp jar into destination.
           try {
    -        OutputStream os = new 
BufferedOutputStream(target.getOutputStream());
    +        OutputStream os = new BufferedOutputStream(targetOutputStream);
             try {
               Files.copy(tmpJar, os);
             } finally {
               Closeables.closeQuietly(os);
             }
           } catch (IOException e) {
    -        throw new IOException("failed to copy bundle from " + 
tmpJar.toURI() + " to " + target, e);
    +        throw new IOException("failed to copy bundle from " + 
tmpJar.toURI() + " to " + targetPath, e);
           }
    -      LOG.debug("finished creating bundle at {}", target);
    +      LOG.debug("finished creating bundle at {}", targetPath);
         } finally {
           tmpJar.delete();
           LOG.debug("cleaned up local temporary for bundle {}", 
tmpJar.toURI());
         }
    +    return classPathUrls;
    +
    --- End diff --
    
    remove extra new line.


> Speed up application launch time
> --------------------------------
>
>                 Key: TWILL-63
>                 URL: https://issues.apache.org/jira/browse/TWILL-63
>             Project: Apache Twill
>          Issue Type: Improvement
>          Components: yarn
>    Affects Versions: 0.2.0-incubating
>            Reporter: Terence Yim
>            Assignee: Shankar Selvam
>             Fix For: 0.7.0-incubating
>
>
> Currently when launching an application, two new jars are always created 
> locally, one for AM (appMaster.jar) and one for Container (container.jar) and 
> copied to HDFS before submitting the application. The jar files could 
> potentially be big and if it doesn't changed, it should require copying to 
> HDFS again.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to