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

ASF GitHub Bot commented on MNG-7705:
-------------------------------------

cstamas commented on code in PR #269:
URL: https://github.com/apache/maven-resolver/pull/269#discussion_r1153762590


##########
maven-resolver-sync-context-ipc/src/main/java/org/eclipse/aether/sync/ipc/IpcSyncContextFactory.java:
##########
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.eclipse.aether.sync.ipc;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.SyncContext;
+import org.eclipse.aether.spi.synccontext.SyncContextFactory;
+import org.eclipse.sisu.Priority;
+
+/**
+ * The SyncContextFactory implementation.
+ */
+@Named(IpcSyncContextFactory.NAME)
+@Priority(-1)
+@Singleton
+public class IpcSyncContextFactory implements SyncContextFactory {
+
+    public static final String NAME = "ipc";
+
+    private final Map<Path, IpcClient> clients = new ConcurrentHashMap<>();
+
+    @Override
+    public SyncContext newInstance(RepositorySystemSession session, boolean 
shared) {
+        Path repository = session.getLocalRepository().getBasedir().toPath();
+        Path logPath = 
Optional.ofNullable(System.getProperty(IpcServer.STORAGE_PROP))
+                .map(Paths::get)
+                .orElseGet(() -> 
Paths.get(System.getProperty("user.home")).resolve(".m2/ipc-sync/"));
+        Path syncPath = null; // this is the path to a natively built server
+        IpcClient client = clients.computeIfAbsent(repository, r -> new 
IpcClient(r, logPath, syncPath));
+        return new IpcSyncContext(client, shared);
+    }
+
+    @PreDestroy

Review Comment:
   String no: the component should hook into 
https://github.com/apache/maven-resolver/blob/d0f8564846863c8a88f2fb1da8391fc860517192/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/RepositorySystemLifecycle.java#L41
 and remain oblivious of who and how handles lifecycle. Just register a 
callback that will close clients and rely that resolver will be shut down.





> Sporadic failures on multiple builds sharing the same local repo when writing 
> the .lastUpdated file
> ---------------------------------------------------------------------------------------------------
>
>                 Key: MNG-7705
>                 URL: https://issues.apache.org/jira/browse/MNG-7705
>             Project: Maven
>          Issue Type: Bug
>    Affects Versions: 3.9.0
>         Environment: Apache Maven 3.9.0 
> (9b58d2bad23a66be161c4664ef21ce219c2c8584)
> Maven home: /data00/bamboo/maven/maven-next
> Java version: 1.8.0_362, vendor: Red Hat, Inc., runtime: 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-2.el8_7.x86_64/jre
> Default locale: en_CA, platform encoding: ISO-8859-1
> OS name: "linux", version: "4.18.0-193.el8.x86_64", arch: "amd64", family: 
> "unix"
>            Reporter: Jim Sellers
>            Priority: Major
>         Attachments: 2023-02-28_failure.zip, MNG-7705-2023-02-27.zip, 
> MNG-7705-2023-03-07.zip, MNG-7705.zip, MNG-7705_strace_2023-02-27.zip, 
> apache-maven-3.9.1-SNAPSHOT-bin.tar-1.gz, failed_plan-377290782-JOB1-15.zip, 
> maven-resolver-util-1.9.6-SNAPSHOT.jar, xaa-1.xz, xab-1.xz, xac-1.xz, xad-1.xz
>
>
> On a CI server, we have multiple builds running on the same host and sharing 
> the same repo.
> While testing 3.9.0, I started to see a NIO exception for the 
> {{.lastUpdated}} file. This has worked fine for years, all the way up to 
> 3.8.7.
> If you re-run the build, it will work. I think that it's just a collision 
> between the different processes.
> {code:title=example command}
> mvn --batch-mode dependency:sources dependency:resolve -Dclassifier=javadoc
> # this uses dependency:3.5.0:sources
> {code}
> {code:title=stracktrace}
> [WARNING] Failed to write tracking file 
> '/home/bamboo/.m2/repository/io/smallrye/config/smallrye-config/2.3.0/smallrye-config-2.3.0-javadoc.jar.lastUpdated'
>     java.nio.file.NoSuchFileException: 
> /home/bamboo/.m2/repository/io/smallrye/config/smallrye-config/2.3.0/smallrye-config-2.3.0-javadoc.jar.lastUpdated
>         at sun.nio.fs.UnixException.translateToIOException 
> (UnixException.java:86)
>         at sun.nio.fs.UnixException.rethrowAsIOException 
> (UnixException.java:102)
>         at sun.nio.fs.UnixException.rethrowAsIOException 
> (UnixException.java:107)
>         at sun.nio.fs.UnixFileSystemProvider.newByteChannel 
> (UnixFileSystemProvider.java:214)
>         at java.nio.file.Files.newByteChannel (Files.java:361)
>         at java.nio.file.Files.newByteChannel (Files.java:407)
>         at java.nio.file.spi.FileSystemProvider.newInputStream 
> (FileSystemProvider.java:384)
>         at java.nio.file.Files.newInputStream (Files.java:152)
>         at org.eclipse.aether.internal.impl.DefaultTrackingFileManager.update 
> (DefaultTrackingFileManager.java:90)
>         at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.write 
> (DefaultUpdateCheckManager.java:604)
>         at 
> org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.touchArtifact 
> (DefaultUpdateCheckManager.java:539)
>         at 
> org.eclipse.aether.internal.impl.DefaultArtifactResolver.evaluateDownloads 
> (DefaultArtifactResolver.java:701)
>         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.shared.transfer.artifact.resolve.internal.Maven31ArtifactResolver.resolveArtifact
>  (Maven31ArtifactResolver.java:97)
>         at 
> org.apache.maven.shared.transfer.artifact.resolve.internal.Maven31ArtifactResolver.resolveArtifact
>  (Maven31ArtifactResolver.java:78)
>         at 
> org.apache.maven.shared.transfer.artifact.resolve.internal.DefaultArtifactResolver.resolveArtifact
>  (DefaultArtifactResolver.java:70)
>         at 
> org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo.resolve
>  (AbstractDependencyFilterMojo.java:464)
>         at 
> org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo.getClassifierTranslatedDependencies
>  (AbstractDependencyFilterMojo.java:408)
>         at 
> org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo.getDependencySets
>  (AbstractDependencyFilterMojo.java:340)
>         at 
> org.apache.maven.plugins.dependency.resolvers.ResolveDependenciesMojo.doExecute
>  (ResolveDependenciesMojo.java:103)
>         at 
> org.apache.maven.plugins.dependency.resolvers.ResolveDependencySourcesMojo.doExecute
>  (ResolveDependencySourcesMojo.java:52)
>         at org.apache.maven.plugins.dependency.AbstractDependencyMojo.execute 
> (AbstractDependencyMojo.java:159)
>         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:342)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:330)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:213)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:175)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:76)
>         at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:163)
>         at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:160)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>         at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>         at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
>         at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
>         at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
>         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 sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke (Method.java:498)
>         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)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to