Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Concurrent spotlessJava tasks with eclipse hanging on empty p2 repository

Aperta
#2,515 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
38/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
java
Ambito
build-system

Direzione di ricerca

Riproduci il blocco svuotando ~/.m2/repository/dev/equo/p2-data/ ed eseguendo task spotlessJava concorrenti. Inizia dalle voci LockFile e P2Client nello stack trace fornito, quindi segui le chiamate a EquoBasedStepBuilder e P2Model; il lavoro è completato quando i task concorrenti terminano con il repository p2 vuoto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Java
Stelle
5.7k
Fork
560
Merge medio
1g 13h
PR unite (30g)
43

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di diffplug/spotless

Tutte le issue di diffplug/spotless

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.