Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Concurrent spotlessJava tasks with eclipse hanging on empty p2 repository

Abierto
#2,515 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
java
Área
build-system

Línea de trabajo

Reproduce el bloqueo vaciando ~/.m2/repository/dev/equo/p2-data/ y ejecutando tareas spotlessJava de forma concurrente. Empieza por las entradas de LockFile y P2Client en el stack trace proporcionado y, después, sigue las llamadas de EquoBasedStepBuilder y P2Model; se considera terminado cuando las tareas concurrentes finalicen con el repositorio p2 vacío.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

With spotless gradle plugin 7.0.4 we are seeing the spotlessJava tasks keeps hanging in our CI environments. further investigation showed this seems like a concurrency issue. jstack gives me this stacktrace with two entries (for each active spotless java task) similar to this:

"Execution worker Thread 6" #117 [1841467] prio=5 os_prio=0 cpu=2438.51ms elapsed=100.17s tid=0x00007fcc0400e4e0 nid=1841467 in Object.wait()  [0x00007fcc415e5000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait0(java.base@21.0.6/Native Method)
	- waiting on <no object reference available>
	at java.lang.Object.wait(java.base@21.0.6/Object.java:366)
	at java.lang.Object.wait(java.base@21.0.6/Object.java:339)
	at dev.equo.solstice.p2.LockFile.<init>(LockFile.java:40)
	- locked <0x00000000d2a38d00> (a java.lang.Object)
	at dev.equo.solstice.p2.P2Client.<init>(P2Client.java:72)
	at dev.equo.solstice.p2.P2Model.queryRaw(P2Model.java:105)
	at dev.equo.solstice.p2.P2Model.query(P2Model.java:136)
	at com.diffplug.spotless.extra.EquoBasedStepBuilder.lambda$build$0(EquoBasedStepBuilder.java:128)
	at com.diffplug.spotless.extra.EquoBasedStepBuilder$$Lambda/0x00007fcd9932a9d0.get(Unknown Source)
	at com.diffplug.spotless.JarState$Promised.get(JarState.java:73)
	at com.diffplug.spotless.extra.EquoBasedStepBuilder$EquoStep.state(EquoBasedStepBuilder.java:193)
	at com.diffplug.spotless.extra.EquoBasedStepBuilder.lambda$build$cc29b8bc$1(EquoBasedStepBuilder.java:144)
	at com.diffplug.spotless.extra.EquoBasedStepBuilder$$Lambda/0x00007fcd9932c700.apply(Unknown Source)
	at com.diffplug.spotless.FormatterStepSerializationRoundtrip.stateSupplier(FormatterStepSerializationRoundtrip.java:57)
	at com.diffplug.spotless.FormatterStepSerializationRoundtrip$HackClone$$Lambda/0x00007fcd9972f3a8.get(Unknown Source)
	at com.diffplug.spotless.ThrowingEx.get(ThrowingEx.java:67)
	at com.diffplug.spotless.FormatterStepSerializationRoundtrip$HackClone.writeObject(FormatterStepSerializationRoundtrip.java:113)
	at java.lang.invoke.LambdaForm$DMH/0x00007fcd9813c000.invokeSpecial(java.base@21.0.6/LambdaForm$DMH)
	at java.lang.invoke.LambdaForm$MH/0x00007fcd98018c00.invoke(java.base@21.0.6/LambdaForm$MH)
	at java.lang.invoke.Invokers$Holder.invokeExact_MT(java.base@21.0.6/Invokers$Holder)
	at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@21.0.6/DirectMethodHandleAccessor.java:154)
	at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@21.0.6/DirectMethodHandleAccessor.java:103)
	at java.lang.reflect.Method.invoke(java.base@21.0.6/Method.java:580)
	at java.io.ObjectStreamClass.invokeWriteObject(java.base@21.0.6/ObjectStreamClass.java:1072)
	at java.io.ObjectOutputStream.writeSerialData(java.base@21.0.6/ObjectOutputStream.java:1529)
	at java.io.ObjectOutputStream.writeOrdinaryObject(java.base@21.0.6/ObjectOutputStream.java:1451)
	at java.io.ObjectOutputStream.writeObject0(java.base@21.0.6/ObjectOutputStream.java:1194)
	at java.io.ObjectOutputStream.writeObject(java.base@21.0.6/ObjectOutputStream.java:358)
	at com.diffplug.spotless.ConfigurationCacheHackList.writeObject(ConfigurationCacheHackList.java:76)
	at java.lang.invoke.LambdaForm$DMH/0x00007fcd9813c000.invokeSpecial(java.base@21.0.6/LambdaForm$DMH)

this is reproducible when I cleanup the ~/.m2/repository/dev/equo/p2-data/ folder locally and run our build again.
In general we got biten by this dynamic p2 lookups and I would love to see the resolution of those artifacts would be wired into the gradle dependency resolution instead of being completely hidden deep down in the spotless logic. This currently blocks us from updating to newer spotless gradle plugin versions.

Lenguaje dominante
Java
Estrellas
5.7k
Forks
560
Merge medio
1 d 13 h
PR fusionados (30 d)
43

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de diffplug/spotless

Todos los issues de diffplug/spotless

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.