[ https://issues.apache.org/jira/browse/MRESOLVER-325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17693631#comment-17693631 ]
Michael Osipov edited comment on MRESOLVER-325 at 2/26/23 7:39 PM: ------------------------------------------------------------------- Another Windows test: {code:java} import java.io.BufferedReader; import java.io.IOException; import java.io.Writer; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.WinBase; import com.sun.jna.platform.win32.WinDef.DWORD; public class AtomicMove { public static void main(String[] args) throws IOException, InterruptedException { Path target = Paths.get("mumu"); for (int i = 0; i < 100; i++) { Path temp = Paths.get("mumu." + i); try (Writer w = Files.newBufferedWriter(temp)) { w.write(i + ": I was made for crashing you, baby!"); } //Files.move(temp, target, StandardCopyOption.ATOMIC_MOVE); Kernel32.INSTANCE.MoveFileEx( temp.toAbsolutePath().toString(), target.toAbsolutePath().toString(), new DWORD( WinBase.MOVEFILE_REPLACE_EXISTING | WinBase.MOVEFILE_WRITE_THROUGH ) ); try (BufferedReader r = Files.newBufferedReader(target)) { System.out.println(r.readLine()); } } } } {code} Output: {noformat} 0: I was made for crashing you, baby! 1: I was made for crashing you, baby! 2: I was made for crashing you, baby! 3: I was made for crashing you, baby! 4: I was made for crashing you, baby! 5: I was made for crashing you, baby! 6: I was made for crashing you, baby! 7: I was made for crashing you, baby! 8: I was made for crashing you, baby! 9: I was made for crashing you, baby! 10: I was made for crashing you, baby! 11: I was made for crashing you, baby! 12: I was made for crashing you, baby! 13: I was made for crashing you, baby! 14: I was made for crashing you, baby! 15: I was made for crashing you, baby! 16: I was made for crashing you, baby! 17: I was made for crashing you, baby! 18: I was made for crashing you, baby! 19: I was made for crashing you, baby! 20: I was made for crashing you, baby! 21: I was made for crashing you, baby! 22: I was made for crashing you, baby! 23: I was made for crashing you, baby! 24: I was made for crashing you, baby! 25: I was made for crashing you, baby! 26: I was made for crashing you, baby! 27: I was made for crashing you, baby! 28: I was made for crashing you, baby! 29: I was made for crashing you, baby! 30: I was made for crashing you, baby! 31: I was made for crashing you, baby! 32: I was made for crashing you, baby! 33: I was made for crashing you, baby! 34: I was made for crashing you, baby! 35: I was made for crashing you, baby! 36: I was made for crashing you, baby! 37: I was made for crashing you, baby! 38: I was made for crashing you, baby! 39: I was made for crashing you, baby! 40: I was made for crashing you, baby! 41: I was made for crashing you, baby! 42: I was made for crashing you, baby! 43: I was made for crashing you, baby! 44: I was made for crashing you, baby! 45: I was made for crashing you, baby! 46: I was made for crashing you, baby! 47: I was made for crashing you, baby! 48: I was made for crashing you, baby! 49: I was made for crashing you, baby! 50: I was made for crashing you, baby! 51: I was made for crashing you, baby! 52: I was made for crashing you, baby! 53: I was made for crashing you, baby! 54: I was made for crashing you, baby! 55: I was made for crashing you, baby! 56: I was made for crashing you, baby! 57: I was made for crashing you, baby! 58: I was made for crashing you, baby! 59: I was made for crashing you, baby! 60: I was made for crashing you, baby! 61: I was made for crashing you, baby! 62: I was made for crashing you, baby! 63: I was made for crashing you, baby! 64: I was made for crashing you, baby! 65: I was made for crashing you, baby! 66: I was made for crashing you, baby! 67: I was made for crashing you, baby! 68: I was made for crashing you, baby! 69: I was made for crashing you, baby! 70: I was made for crashing you, baby! 71: I was made for crashing you, baby! 72: I was made for crashing you, baby! 73: I was made for crashing you, baby! 74: I was made for crashing you, baby! 75: I was made for crashing you, baby! 75: I was made for crashing you, baby! 77: I was made for crashing you, baby! 78: I was made for crashing you, baby! 79: I was made for crashing you, baby! 80: I was made for crashing you, baby! 81: I was made for crashing you, baby! 82: I was made for crashing you, baby! 83: I was made for crashing you, baby! 84: I was made for crashing you, baby! 85: I was made for crashing you, baby! 86: I was made for crashing you, baby! 87: I was made for crashing you, baby! 88: I was made for crashing you, baby! 89: I was made for crashing you, baby! 90: I was made for crashing you, baby! 91: I was made for crashing you, baby! 92: I was made for crashing you, baby! 93: I was made for crashing you, baby! 94: I was made for crashing you, baby! 95: I was made for crashing you, baby! 96: I was made for crashing you, baby! 97: I was made for crashing you, baby! 98: I was made for crashing you, baby! 99: I was made for crashing you, baby! {noformat} There are a few leftover tempfiles, but the content has arrived. was (Author: michael-o): Another Windows test: {code:java} import java.io.BufferedReader; import java.io.IOException; import java.io.Writer; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.WinBase; import com.sun.jna.platform.win32.WinDef.DWORD; public class AtomicMove { public static void main(String[] args) throws IOException, InterruptedException { Path target = Paths.get("mumu"); for (int i = 0; i < 100; i++) { Path temp = Paths.get("mumu." + i); try (Writer w = Files.newBufferedWriter(temp)) { w.write(i + ": I was made for crashing your, baby!"); } //Files.move(temp, target, StandardCopyOption.ATOMIC_MOVE); Kernel32.INSTANCE.MoveFileEx( temp.toAbsolutePath().toString(), target.toAbsolutePath().toString(), new DWORD( WinBase.MOVEFILE_REPLACE_EXISTING | WinBase.MOVEFILE_WRITE_THROUGH ) ); try (BufferedReader r = Files.newBufferedReader(target)) { System.out.println(r.readLine()); } } } } {code} Output: {noformat} 0: I was made for crashing your, baby! 1: I was made for crashing your, baby! 2: I was made for crashing your, baby! 3: I was made for crashing your, baby! 4: I was made for crashing your, baby! 5: I was made for crashing your, baby! 6: I was made for crashing your, baby! 7: I was made for crashing your, baby! 8: I was made for crashing your, baby! 9: I was made for crashing your, baby! 10: I was made for crashing your, baby! 11: I was made for crashing your, baby! 12: I was made for crashing your, baby! 13: I was made for crashing your, baby! 14: I was made for crashing your, baby! 15: I was made for crashing your, baby! 16: I was made for crashing your, baby! 17: I was made for crashing your, baby! 18: I was made for crashing your, baby! 19: I was made for crashing your, baby! 20: I was made for crashing your, baby! 21: I was made for crashing your, baby! 22: I was made for crashing your, baby! 23: I was made for crashing your, baby! 24: I was made for crashing your, baby! 25: I was made for crashing your, baby! 26: I was made for crashing your, baby! 27: I was made for crashing your, baby! 28: I was made for crashing your, baby! 29: I was made for crashing your, baby! 30: I was made for crashing your, baby! 31: I was made for crashing your, baby! 32: I was made for crashing your, baby! 33: I was made for crashing your, baby! 34: I was made for crashing your, baby! 35: I was made for crashing your, baby! 36: I was made for crashing your, baby! 37: I was made for crashing your, baby! 38: I was made for crashing your, baby! 39: I was made for crashing your, baby! 40: I was made for crashing your, baby! 41: I was made for crashing your, baby! 42: I was made for crashing your, baby! 43: I was made for crashing your, baby! 44: I was made for crashing your, baby! 45: I was made for crashing your, baby! 46: I was made for crashing your, baby! 47: I was made for crashing your, baby! 48: I was made for crashing your, baby! 49: I was made for crashing your, baby! 50: I was made for crashing your, baby! 51: I was made for crashing your, baby! 52: I was made for crashing your, baby! 53: I was made for crashing your, baby! 54: I was made for crashing your, baby! 55: I was made for crashing your, baby! 56: I was made for crashing your, baby! 57: I was made for crashing your, baby! 58: I was made for crashing your, baby! 59: I was made for crashing your, baby! 60: I was made for crashing your, baby! 61: I was made for crashing your, baby! 62: I was made for crashing your, baby! 63: I was made for crashing your, baby! 64: I was made for crashing your, baby! 65: I was made for crashing your, baby! 66: I was made for crashing your, baby! 67: I was made for crashing your, baby! 68: I was made for crashing your, baby! 69: I was made for crashing your, baby! 70: I was made for crashing your, baby! 71: I was made for crashing your, baby! 72: I was made for crashing your, baby! 73: I was made for crashing your, baby! 74: I was made for crashing your, baby! 75: I was made for crashing your, baby! 75: I was made for crashing your, baby! 77: I was made for crashing your, baby! 78: I was made for crashing your, baby! 79: I was made for crashing your, baby! 80: I was made for crashing your, baby! 81: I was made for crashing your, baby! 82: I was made for crashing your, baby! 83: I was made for crashing your, baby! 84: I was made for crashing your, baby! 85: I was made for crashing your, baby! 86: I was made for crashing your, baby! 87: I was made for crashing your, baby! 88: I was made for crashing your, baby! 89: I was made for crashing your, baby! 90: I was made for crashing your, baby! 91: I was made for crashing your, baby! 92: I was made for crashing your, baby! 93: I was made for crashing your, baby! 94: I was made for crashing your, baby! 95: I was made for crashing your, baby! 96: I was made for crashing your, baby! 97: I was made for crashing your, baby! 98: I was made for crashing your, baby! 99: I was made for crashing your, baby! {noformat} There are a few leftover tempfiles, but the content has arrived. > [REGRESSION] Suddenly seeing I/O errors under windows aborting the build > ------------------------------------------------------------------------ > > Key: MRESOLVER-325 > URL: https://issues.apache.org/jira/browse/MRESOLVER-325 > Project: Maven Resolver > Issue Type: Bug > Components: Resolver > Affects Versions: 1.9.4 > Reporter: Christoph Läubrich > Priority: Major > Fix For: 1.9.6 > > > If one runs a build that otherwise works fine on 3.8.x with 3.9 we now get > the following exception (full output can be found here > https://github.com/eclipse-platform/eclipse.platform/actions/runs/4211467991/jobs/7309831666): > {code:java} > Error: 5.889 [ERROR] Internal error: java.io.UncheckedIOException: > java.nio.file.AccessDeniedException: > C:\Users\runneradmin\.m2\repository\com\google\code\gson\gson\2.10.1\_remote.repositories.15650462061630955031.tmp > -> > C:\Users\runneradmin\.m2\repository\com\google\code\gson\gson\2.10.1\_remote.repositories > -> [Help 1] > org.apache.maven.InternalErrorException: Internal error: > java.io.UncheckedIOException: java.nio.file.AccessDeniedException: > C:\Users\runneradmin\.m2\repository\com\google\code\gson\gson\2.10.1\_remote.repositories.15650462061630955031.tmp > -> > C:\Users\runneradmin\.m2\repository\com\google\code\gson\gson\2.10.1\_remote.repositories > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:108) > at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) > at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) > at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) > at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) > at jdk.internal.reflect.NativeMethodAccessorImpl.invoke > (NativeMethodAccessorImpl.java:77) > at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke > (DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke (Method.java:568) > at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced > (Launcher.java:282) > at org.codehaus.plexus.classworlds.launcher.Launcher.launch > (Launcher.java:225) > at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode > (Launcher.java:406) > at org.codehaus.plexus.classworlds.launcher.Launcher.main > (Launcher.java:347) > Caused by: java.io.UncheckedIOException: java.nio.file.AccessDeniedException: > C:\Users\runneradmin\.m2\repository\com\google\code\gson\gson\2.10.1\_remote.repositories.15650462061630955031.tmp > -> > C:\Users\runneradmin\.m2\repository\com\google\code\gson\gson\2.10.1\_remote.repositories > at org.eclipse.aether.internal.impl.DefaultTrackingFileManager.update > (DefaultTrackingFileManager.java:121) > at > org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager.addRepo > (EnhancedLocalRepositoryManager.java:274) > at > org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager.addArtifact > (EnhancedLocalRepositoryManager.java:252) > at org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager.add > (EnhancedLocalRepositoryManager.java:225) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.evaluateDownloads > (DefaultArtifactResolver.java:680) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads > (DefaultArtifactResolver.java:592) > at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve > (DefaultArtifactResolver.java:478) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts > (DefaultArtifactResolver.java:278) > at > org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact > (DefaultArtifactResolver.java:255) > at > org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact > (DefaultRepositorySystem.java:296) > at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve > (DefaultArtifactResolver.java:197) > at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve > (DefaultArtifactResolver.java:413) > at org.apache.maven.repository.legacy.LegacyRepositorySystem.resolve > (LegacyRepositorySystem.java:332) > at > org.eclipse.tycho.osgi.configuration.MavenDependenciesResolverConfigurer.resolve > (MavenDependenciesResolverConfigurer.java:104) > at org.eclipse.tycho.core.shared.MavenDependenciesResolver.resolve > (MavenDependenciesResolver.java:60) > at org.eclipse.tycho.core.resolver.MavenTargetDefinitionContent.<init> > (MavenTargetDefinitionContent.java:262) > at > org.eclipse.tycho.p2resolver.TargetDefinitionResolver.resolveContentWithExceptions > (TargetDefinitionResolver.java:179) > at org.eclipse.tycho.p2resolver.TargetDefinitionResolver.resolveContent > (TargetDefinitionResolver.java:110) > at > org.eclipse.tycho.p2resolver.TargetDefinitionResolverService.resolveFromArguments > (TargetDefinitionResolverService.java:90) > at java.util.concurrent.ConcurrentHashMap.computeIfAbsent > (ConcurrentHashMap.java:1708) > at > org.eclipse.tycho.p2resolver.TargetDefinitionResolverService.getTargetDefinitionContent > (TargetDefinitionResolverService.java:65) > at > org.eclipse.tycho.p2resolver.TargetPlatformFactoryImpl.resolveTargetDefinitions > (TargetPlatformFactoryImpl.java:214) > at > org.eclipse.tycho.p2resolver.TargetPlatformFactoryImpl.createTargetPlatform > (TargetPlatformFactoryImpl.java:164) > at > org.eclipse.tycho.p2resolver.TargetPlatformFactoryImpl.createTargetPlatform > (TargetPlatformFactoryImpl.java:137) > at > org.eclipse.tycho.p2resolver.TargetPlatformFactoryImpl.createTargetPlatform > (TargetPlatformFactoryImpl.java:88) > at > org.eclipse.tycho.p2resolver.ReactorRepositoryManagerImpl.computePreliminaryTargetPlatform > (ReactorRepositoryManagerImpl.java:61) > at > org.eclipse.tycho.p2resolver.P2DependencyResolver.computePreliminaryTargetPlatform > (P2DependencyResolver.java:202) > at org.eclipse.tycho.core.resolver.DefaultTychoResolver.resolveProject > (DefaultTychoResolver.java:130) > at > org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.lambda$resolveProjects$2 > (TychoMavenLifecycleParticipant.java:256) > at java.util.stream.ForEachOps$ForEachOp$OfRef.accept > (ForEachOps.java:183) > at java.util.stream.SpinedBuffer$1Splitr.forEachRemaining > (SpinedBuffer.java:364) > at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:509) > at java.util.stream.ForEachOps$ForEachTask.compute (ForEachOps.java:290) > at java.util.concurrent.CountedCompleter.exec (CountedCompleter.java:754) > at java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:373) > at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec > (ForkJoinPool.java:1182) > at java.util.concurrent.ForkJoinPool.scan (ForkJoinPool.java:1655) > at java.util.concurrent.ForkJoinPool.runWorker (ForkJoinPool.java:1622) > at java.util.concurrent.ForkJoinWorkerThread.run > (ForkJoinWorkerThread.java:165) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)