Jurrie Overgoor created MRESOLVER-536:
-----------------------------------------

             Summary: Skip setting last modified time when FS does not support 
it
                 Key: MRESOLVER-536
                 URL: https://issues.apache.org/jira/browse/MRESOLVER-536
             Project: Maven Resolver
          Issue Type: Improvement
          Components: Resolver
    Affects Versions: 1.9.18
            Reporter: Jurrie Overgoor
         Attachments: Stacktrace.txt

When Maven resolver downloads a file and writes it to disk, it tries to set the 
last modified time on it. There are filesystems that do not support the "set 
last modified time" operation. In that case the operation will fail, and the 
Maven build will error out with a {{FileSystemException}}. Attached is (the 
last part of) such a stack track trace.

I encountered such a file system when running in a Kubernetes (Openshift 
actually, but that's Kubernetes based) cloud setup. I mapped the {{~/.m2}} 
directory to a Persistent Volume Claim so that files downloaded in one build 
are retained in the next build. I explicitly set the access mode to 
ReadWriteMany (a.k.a. RWX, a.k.a. Shared Access) so that multiple build nodes 
can use the same PVC. The PVC is provisioned by a `file.csi.azure.com` 
provisioner. And that translates to a file system that does not support setting 
the last modified time on a file. Thus the call to 
{{java.nio.file.Files.setLastModifiedTime(Path, FileTime)}} in 
{{org.eclipse.aether.transport.http.HttpTransporter.EntityGetter.handle(CloseableHttpResponse)org.eclipse.aether.transport.http.HttpTransporter.EntityGetter.handle(CloseableHttpResponse)}}
 comes crashing down.

There is no good way to query if the FS supports the call. So I resorted to 
wrapping the call in a `try .. catch` block. This seems to work. Maven 
downloads dependencies again, and my build progresses.



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

Reply via email to