apache / apache/maven-artifact-plugin

[MARTIFACT-61] Multithreaded verification fails

Open
#95 3 comments 0 reactions 0 assignees View on GitHub
bug priority:major
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.