Concurrent spotlessJava tasks with eclipse hanging on empty p2 repository
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- build-system
Hướng nghiên cứu
Tái hiện tình trạng treo bằng cách xóa sạch ~/.m2/repository/dev/equo/p2-data/ và chạy đồng thời các tác vụ spotlessJava. Bắt đầu với các mục LockFile và P2Client trong stack trace được cung cấp, sau đó lần theo các lệnh gọi EquoBasedStepBuilder và P2Model; được xem là hoàn tất khi các tác vụ đồng thời hoàn thành trong khi repository p2 trống.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Java
- Star
- 5.7k
- Fork
- 560
- Merge trung bình
- 1 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 43
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của diffplug/spotless
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 66/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
Tất cả issue của diffplug/spotless
Issue tương tự
-
certification
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Đang mởbug ecr
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Needs: Triage Type: Feature request
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
github/copilot-sdk#2760 ·