>>  > -        File file = new File("target/test/foo2.jar");
>>  > +        final File file = new File("target/test/foo.jar");

Andy, did you also look at the Resolution of JDK-4715154? 
It will not be fixed. As far as I've seen it (only?) happens if you have 
WindowsDefender running. 

I'm not quite sure if the gc() call really helps in all situations, but using 
different files did.

LieGrue,
strub





> On Thursday, 12 March 2015, 14:58, Romain Manni-Bucau <[email protected]> 
> wrote:
> > Id revert it using a fixed jvm - we shoulfnt rely on gc at all + you
> reverted fixes from Mark so please correct it.
> Le 12 mars 2015 11:36, "Jean-Louis Monteiro" 
> <[email protected]> a
> écrit :
> 
> 
>>  In case you missed it, there is one System.gc() not in the if condition.
>>  As System.gc() should in theory never been called, I would try to minimize
>>  the number of calls (performance, memory, etc side effects).
>> 
>>  What do you think?
>> 
>>  --
>>  Jean-Louis Monteiro
>>  http://twitter.com/jlouismonteiro
>>  http://www.tomitribe.com
>> 
>>  On Thu, Mar 12, 2015 at 10:07 AM, <[email protected]> wrote:
>> 
>>  > Repository: tomee
>>  > Updated Branches:
>>  >   refs/heads/master 53c704852 -> bda2f2767
>>  >
>>  >
>>  > Workaround for Windows bug JDK-4715154
>>  >
>>  >
>>  > Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
>>  > Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bda2f276
>>  > Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bda2f276
>>  > Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bda2f276
>>  >
>>  > Branch: refs/heads/master
>>  > Commit: bda2f276764926022db730c5d145a7d5add450b0
>>  > Parents: 53c7048
>>  > Author: [email protected] <[email protected]>
>>  > Authored: Thu Mar 12 10:07:25 2015 +0100
>>  > Committer: [email protected] <[email protected]>
>>  > Committed: Thu Mar 12 10:07:42 2015 +0100
>>  >
>>  > ----------------------------------------------------------------------
>>  >  .../openejb/loader/BasicURLClassPath.java       |  2 +-
>>  >  .../java/org/apache/openejb/loader/Files.java   | 41
>>  +++++++++++++++++++-
>>  >  .../loader/provisining/MavenResolverTest.java   | 12 +++---
>>  >  3 files changed, 47 insertions(+), 8 deletions(-)
>>  > ----------------------------------------------------------------------
>>  >
>>  >
>>  >
>>  >
>> 
> http://git-wip-us.apache.org/repos/asf/tomee/blob/bda2f276/container/openejb-loader/src/main/java/org/apache/openejb/loader/BasicURLClassPath.java
>>  > ----------------------------------------------------------------------
>>  > diff --git
>>  >
>> 
> a/container/openejb-loader/src/main/java/org/apache/openejb/loader/BasicURLClassPath.java
>>  >
>> 
> b/container/openejb-loader/src/main/java/org/apache/openejb/loader/BasicURLClassPath.java
>>  > index e0d4837..b4c8af1 100644
>>  > ---
>>  >
>> 
> a/container/openejb-loader/src/main/java/org/apache/openejb/loader/BasicURLClassPath.java
>>  > +++
>>  >
>> 
> b/container/openejb-loader/src/main/java/org/apache/openejb/loader/BasicURLClassPath.java
>>  > @@ -76,7 +76,7 @@ public abstract class BasicURLClassPath implements
>>  > ClassPath {
>>  >          });
>>  >
>>  >          final URL[] jars = new URL[jarNames.length];
>>  > -        final boolean isWindows = 
> System.getProperty("os.name",
>>  > "unknown").toLowerCase().startsWith("windows");
>>  > +        final boolean isWindows = 
> System.getProperty("os.name",
>>  > "unknown").toLowerCase().startsWith("win");
>>  >
>>  >          for (int j = 0; j < jarNames.length; j++) {
>>  >              final String name = isWindows ? jarNames[j].toLowerCase() 
> :
>>  > jarNames[j];
>>  >
>>  >
>>  >
>> 
> http://git-wip-us.apache.org/repos/asf/tomee/blob/bda2f276/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
>>  > ----------------------------------------------------------------------
>>  > diff --git
>>  >
>> 
> a/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
>>  >
>> 
> b/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
>>  > index 1b0e6f8..04793f4 100644
>>  > ---
>>  >
>> 
> a/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
>>  > +++
>>  >
>> 
> b/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
>>  > @@ -44,6 +44,7 @@ import static
>>  > org.apache.openejb.loader.JarLocation.decode;
>>  >   */
>>  >  public class Files {
>>  >      private static final Map<String, MessageDigest> DIGESTS = 
> new
>>  > HashMap<String, MessageDigest>();
>>  > +    private static final boolean isWindows = 
> System.getProperty("
>>  os.name",
>>  > "unknown").toLowerCase().startsWith("win");
>>  >
>>  >      public static File path(final String... parts) {
>>  >          File dir = null;
>>  > @@ -119,6 +120,8 @@ public class Files {
>>  >          if (!file.isDirectory()) {
>>  >              throw new FileRuntimeException("Not a directory: 
> " +
>>  > file.getAbsolutePath());
>>  >          }
>>  > +
>>  > +        System.gc();
>>  >          return file;
>>  >      }
>>  >
>>  > @@ -167,6 +170,12 @@ public class Files {
>>  >          if (file.exists()) {
>>  >              return file;
>>  >          }
>>  > +
>>  > +        if (isWindows) {
>>  > +            //Known Windows bug JDK-4715154 and as of JDK8 still not
>>  > fixable due to OS
>>  > +            System.gc();
>>  > +        }
>>  > +
>>  >          if (!file.mkdirs()) {
>>  >              throw new FileRuntimeException("Cannot mkdir: " 
> +
>>  > file.getAbsolutePath());
>>  >          }
>>  > @@ -179,12 +188,18 @@ public class Files {
>>  >
>>  >      public static File tmpdir() {
>>  >          try {
>>  > -            File file = null;
>>  > +            File file;
>>  >              try {
>>  >                  file = File.createTempFile("temp", 
> "dir");
>>  >              } catch (final Throwable e) {
>>  >                  //Use a local tmp directory
>>  >                  final File tmp = new File("tmp");
>>  > +
>>  > +                if (isWindows) {
>>  > +                    //Known Windows bug JDK-4715154 and as of JDK8 
> still
>>  > not fixable due to OS
>>  > +                    System.gc();
>>  > +                }
>>  > +
>>  >                  if (!tmp.exists() && !tmp.mkdirs()) {
>>  >                      throw new IOException("Failed to create 
> local tmp
>>  > directory: " + tmp.getAbsolutePath());
>>  >                  }
>>  > @@ -192,6 +207,11 @@ public class Files {
>>  >                  file = File.createTempFile("temp", 
> "dir", tmp);
>>  >              }
>>  >
>>  > +            if (isWindows) {
>>  > +                //Known Windows bug JDK-4715154 and as of JDK8 still 
> not
>>  > fixable due to OS
>>  > +                System.gc();
>>  > +            }
>>  > +
>>  >              if (!file.delete()) {
>>  >                  throw new IOException("Failed to create temp 
> dir. Delete
>>  > failed");
>>  >              }
>>  > @@ -215,6 +235,11 @@ public class Files {
>>  >
>>  >          if (!file.exists()) {
>>  >
>>  > +            if (isWindows) {
>>  > +                //Known Windows bug JDK-4715154 and as of JDK8 still 
> not
>>  > fixable due to OS
>>  > +                System.gc();
>>  > +            }
>>  > +
>>  >              if (!file.mkdirs()) {
>>  >                  throw new FileRuntimeException("Cannot mkdirs: 
> " +
>>  > file.getAbsolutePath());
>>  >              }
>>  > @@ -275,6 +300,7 @@ public class Files {
>>  >      }
>>  >
>>  >      public static void delete(final File file) {
>>  > +
>>  >          if (file.exists()) {
>>  >              if (file.isDirectory()) {
>>  >                  final File[] files = file.listFiles();
>>  > @@ -285,6 +311,12 @@ public class Files {
>>  >                  }
>>  >              }
>>  >              try {
>>  > +
>>  > +                if (isWindows) {
>>  > +                    //Known Windows bug JDK-4715154 and as of JDK8 
> still
>>  > not fixable due to OS
>>  > +                    System.gc();
>>  > +                }
>>  > +
>>  >                  if (!file.delete()) {
>>  >                      file.deleteOnExit();
>>  >                  }
>>  > @@ -295,6 +327,7 @@ public class Files {
>>  >      }
>>  >
>>  >      public static void remove(final File file) {
>>  > +
>>  >          if (file == null) {
>>  >              return;
>>  >          }
>>  > @@ -310,6 +343,12 @@ public class Files {
>>  >                  }
>>  >              }
>>  >          }
>>  > +
>>  > +        if (isWindows) {
>>  > +            //Known Windows bug JDK-4715154 and as of JDK8 still not
>>  > fixable due to OS
>>  > +            System.gc();
>>  > +        }
>>  > +
>>  >          if (!file.delete()) {
>>  >              throw new IllegalStateException("Could not delete 
> file: " +
>>  > file.getAbsolutePath());
>>  >          }
>>  >
>>  >
>>  >
>> 
> http://git-wip-us.apache.org/repos/asf/tomee/blob/bda2f276/container/openejb-loader/src/test/java/org/apache/openejb/loader/provisining/MavenResolverTest.java
>>  > ----------------------------------------------------------------------
>>  > diff --git
>>  >
>> 
> a/container/openejb-loader/src/test/java/org/apache/openejb/loader/provisining/MavenResolverTest.java
>>  >
>> 
> b/container/openejb-loader/src/test/java/org/apache/openejb/loader/provisining/MavenResolverTest.java
>>  > index 9988bcc..7d005c1 100644
>>  > ---
>>  >
>> 
> a/container/openejb-loader/src/test/java/org/apache/openejb/loader/provisining/MavenResolverTest.java
>>  > +++
>>  >
>> 
> b/container/openejb-loader/src/test/java/org/apache/openejb/loader/provisining/MavenResolverTest.java
>>  > @@ -45,10 +45,10 @@ public class MavenResolverTest {
>>  >
>>  >      @Test
>>  >      public void resolve() throws Exception {
>>  > -        File file = new File("target/test/foo1.jar");
>>  > +        final File file = new File("target/test/foo.jar");
>>  >          Files.remove(file);
>>  >          Files.mkdirs(file.getParentFile());
>>  > -        FileOutputStream to = new FileOutputStream(file);
>>  > +        final FileOutputStream to = new FileOutputStream(file);
>>  >          
> IO.copy(resolver.resolve("mvn:junit:junit:4.12:jar"), to);
>>  >          IO.close(to);
>>  >          assertTrue(file.exists());
>>  > @@ -57,10 +57,10 @@ public class MavenResolverTest {
>>  >
>>  >      @Test
>>  >      public void customRepo() throws Exception {
>>  > -        File file = new File("target/test/foo2.jar");
>>  > +        final File file = new File("target/test/foo.jar");
>>  >          Files.remove(file);
>>  >          Files.mkdirs(file.getParentFile());
>>  > -        FileOutputStream to = new FileOutputStream(file);
>>  > +        final FileOutputStream to = new FileOutputStream(file);
>>  >          IO.copy(resolver.resolve("mvn:
>>  > http://repo1.maven.org/maven2/!junit:junit:4.12:jar";), to);
>>  >          IO.close(to);d
>>  >          assertTrue(file.exists());
>>  > @@ -69,10 +69,10 @@ public class MavenResolverTest {
>>  >
>>  >      @Test
>>  >      public void latest() throws Exception {
>>  > -        File file = new File("target/test/foo3.jar");
>>  > +        final File file = new File("target/test/foo.jar");
>>  >          Files.remove(file);
>>  >          Files.mkdirs(file.getParentFile());
>>  > -        FileOutputStream to = new FileOutputStream(file);
>>  > +        final FileOutputStream to = new FileOutputStream(file);
>>  >          IO.copy(resolver.resolve("mvn:
>>  > http://repo1.maven.org/maven2/!junit:junit:LATEST:jar";), to);
>>  >          IO.close(to);
>>  >          assertTrue(file.exists());
>>  >
>>  >
>> 
>

Reply via email to