ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "jaikiran pai (JIRA)" <>
Subject [jira] [Resolved] (IVY-1318) Faster symlink creation (avoid a JVM fork per symlink)
Date Fri, 28 Jul 2017 14:00:11 GMT


jaikiran pai resolved IVY-1318.
       Resolution: Resolved
         Assignee: jaikiran pai
    Fix Version/s: master

The upcoming (2.5) release of Ivy no longer spawns a process to create symlinks. Instead it
uses Java standard APIs (introduced in Java 7) to create symlinks.

> Faster symlink creation (avoid a JVM fork per symlink)
> ------------------------------------------------------
>                 Key: IVY-1318
>                 URL:
>             Project: Ivy
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: 2.2.0
>            Reporter: Oliver Jowett
>            Assignee: jaikiran pai
>            Priority: Minor
>              Labels: patch
>             Fix For: master
>         Attachments: IVY-1318-r1373520.patch, ivy-2.2.0-symlink.txt
> We have a large project using Ivy with many large artifacts.
> In theory we should benefit from symlink="true" (space savings and reduced I/O), but
in practice the overhead of forking the Ant JVM for each individual symlink means that a build
using symlink="true" actually runs a lot (30%+) slower, which is too much of a cost to justify
using it.
> To work around this I modified FileUtils to run a single long-lived shell process that
reads instructions from stdin and performs symlinks accordingly.
> This makes symlink="true" no slower than symlink="false".
> I will attach a patch against 2.2.0. Tested only in a Linux environment, but in theory
it should work on anything POSIX-y, and should fall back to file copy much as the existing
code does if anything goes wrong.
> Any interest in getting this included in an official version?

This message was sent by Atlassian JIRA

View raw message