apache / apache/maven-artifact-plugin
[MARTIFACT-61] Multithreaded verification fails
- Dominant language
- Java
- Stars
- 14
- Forks
- 23
- Avg merge
- 1h 27m
- Merged PRs (30d)
- 8
Description
**[Mateusz Gajewski](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=JIRAUSER290474)** opened **[MARTIFACT-61](https://issues.apache.org/jira/browse/MARTIFACT-61?redirect=false)** and commented
I'm adding support for reproducible builds to Trino ([https://github.com/trinodb/trino)](https://github.com/trinodb/trino).) and I think to have found an error in the latest artifact plugin version.
Single threaded verification works fine:
```java
[INFO] trino-product-tests-launcher ....................... SUCCESS [ 10.050 s]
[INFO] trino-server-dev ................................... SUCCESS [ 1.795 s]
[INFO] trino-test-jdbc-compatibility-old-driver ........... SUCCESS [ 0.778 s]
[INFO] trino-test-jdbc-compatibility-old-server ........... SUCCESS [ 33.942 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11:54 min
[INFO] Finished at: 2024-04-10T15:43:51+02:00
[INFO] ------------------------------------------------------------------------
(base) ➜ trino git:(master) ✗ ./mvnw clean verify artifact:compare -nsu -DskipTests -pl '!:trino-docs' -Dtest=void -e |& tee build.log
```
while multithreaded invocation fails with:
```java
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-artifact-plugin:3.5.1:compare (default-cli) on project trino-test-jdbc-compatibility-old-server: Artifact io.trino:trino-faulttolerant-tests:jar:445-SNAPSHOT points to a directory: /Users/mateuszgajewski/Projects/src/github.com/trinodb/trino/testing/trino-faulttolerant-tests/target/classes. Packaging should be 'pom'? -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-artifact-plugin:3.5.1:compare (default-cli) on project trino-test-jdbc-compatibility-old-server: Artifact io.trino:trino-faulttolerant-tests:jar:445-SNAPSHOT points to a directory: /Users/mateuszgajewski/Projects/src/github.com/trinodb/trino/testing/trino-faulttolerant-tests/target/classes. Packaging should be 'pom'?
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:193)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:180)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:572)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1570)
Caused by: org.apache.maven.plugin.MojoExecutionException: Artifact io.trino:trino-faulttolerant-tests:jar:445-SNAPSHOT points to a directory: /Users/mateuszgajewski/Projects/src/github.com/trinodb/trino/testing/trino-faulttolerant-tests/target/classes. Packaging should be 'pom'?
at org.apache.maven.plugins.artifact.buildinfo.BuildInfoWriter.printArtifact (BuildInfoWriter.java:240)
at org.apache.maven.plugins.artifact.buildinfo.BuildInfoWriter.printArtifacts (BuildInfoWriter.java:205)
at org.apache.maven.plugins.artifact.buildinfo.AbstractBuildinfoMojo.generateBuildinfo (AbstractBuildinfoMojo.java:256)
at org.apache.maven.plugins.artifact.buildinfo.AbstractBuildinfoMojo.execute (AbstractBuildinfoMojo.java:156)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:193)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:180)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:572)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1570)
```
```java
./mvnw clean verify artifact:compare -nsu -DskipTests -T 2C -pl '!:trino-docs' -Dtest=void -e |& tee build.log
```
---
**Affects:** 3.5.1
**Issue Links:**
- [MARTIFACT-65](https://issues.apache.org/jira/browse/MARTIFACT-65) artifact:compare marked threadsafe, but it is not
(_**"is a parent of"**_)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the reported ./mvnw clean verify artifact:compare invocation using -T 2C and compare it with the single-threaded command. Trace the artifact:compare failure through BuildInfoWriter.printArtifact and the reported MARTIFACT-65 issue; done means multithreaded verification no longer reports the trino-faulttolerant-tests directory as an invalid artifact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100