redhat-developer / redhat-developer/vscode-java

Cannot open large project (keycloak)

オープン
#2,660 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

ls-error/crash Maven performance
主要言語
TypeScript
スター
2.3k
フォーク
546
平均マージ
20時間 1分
マージ済み PR(30日)
11

説明

Type: Bug

Thank you for the great work on the Java support for VS Code.

Sadly large projects seem to struggle with "Connection to server got closed. Server will not be restarted." issue.

Steps to reproduce:

  1. Checkout https://github.com/keycloak/keycloak
  2. Open this project in VS Code

Related information:
Perhaps the following exception is related:

[Error - 2:00:57 PM] Sep 2, 2022, 2:00:57 PM Exception thrown by Java annotation processor io.fabric8.crd.generator.apt.CustomResourceAnnotationProcessor@26a90b40
java.lang.IllegalArgumentException: Found a cyclic reference involving the field subGroups of type org.keycloak.representations.idm.GroupRepresentation
java.lang.Exception: java.lang.IllegalArgumentException: Found a cyclic reference involving the field subGroups of type org.keycloak.representations.idm.GroupRepresentation
	at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:172)
	at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:113)
	at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:172)
	at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:138)
	at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:991)
	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:450)
	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
	at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:379)
	at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:214)
	at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:311)
	at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:79)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:273)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:199)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1024)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:254)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:311)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:400)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:403)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:514)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:462)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:544)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:161)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:255)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.IllegalArgumentException: Found a cyclic reference involving the field subGroups of type org.keycloak.representations.idm.GroupRepresentation
	at io.fabric8.crd.generator.AbstractJsonSchema.resolveNestedClass(AbstractJsonSchema.java:618)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:599)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:558)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:259)
	at io.fabric8.crd.generator.AbstractJsonSchema.resolveNestedClass(AbstractJsonSchema.java:623)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:599)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:558)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:259)
	at io.fabric8.crd.generator.AbstractJsonSchema.resolveNestedClass(AbstractJsonSchema.java:623)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:599)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:558)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:259)
	at io.fabric8.crd.generator.AbstractJsonSchema.resolveNestedClass(AbstractJsonSchema.java:623)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:599)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:259)
	at io.fabric8.crd.generator.AbstractJsonSchema.resolveNestedClass(AbstractJsonSchema.java:623)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:599)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFromImpl(AbstractJsonSchema.java:259)
	at io.fabric8.crd.generator.AbstractJsonSchema.internalFrom(AbstractJsonSchema.java:128)
	at io.fabric8.crd.generator.v1beta1.JsonSchema.from(JsonSchema.java:47)
	at io.fabric8.crd.generator.v1beta1.CustomResourceHandler.addDecorators(CustomResourceHandler.java:68)
	at io.fabric8.crd.generator.AbstractCustomResourceHandler.handle(AbstractCustomResourceHandler.java:72)
	at io.fabric8.crd.generator.v1beta1.CustomResourceHandler.handle(CustomResourceHandler.java:99)
	at io.fabric8.crd.generator.CRDGenerator.lambda$detailedGenerate$4(CRDGenerator.java:154)
	at java.base/java.util.HashMap$Values.forEach(Unknown Source)
	at io.fabric8.crd.generator.CRDGenerator.detailedGenerate(CRDGenerator.java:154)
	at io.fabric8.crd.generator.apt.CustomResourceAnnotationProcessor.process(CustomResourceAnnotationProcessor.java:54)
	at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:142)
	... 25 more

The CPU utilization remains over 200% even after the "Server will not be restarted" message.

It would be great if it would be possible to open Keycloak in VSCode.

Extension version: 1.10.0
VS Code version: Code 1.70.2 (e4503b30fc78200f846c62cf8091b76ff5547662, 2022-08-16T05:36:25.715Z)
OS version: Linux x64 5.17.11-300.fc36.x86_64
Modes:

System Info
Item Value
CPUs Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz (12 x 2875)
GPU Status 2d_canvas: enabled
canvas_oop_rasterization: disabled_off
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_renderer: enabled_on
video_decode: disabled_software
video_encode: disabled_software
vulkan: disabled_off
webgl: enabled
webgl2: enabled
Load (avg) 10, 9, 5
Memory (System) 30.99GB (0.74GB free)
Process Argv --unity-launch --crash-reporter-id ef8565c1-6ec2-4c0e-8977-6c25d39f07a9
Screen Reader no
VM 0%
DESKTOP_SESSION plasmax11
XDG_CURRENT_DESKTOP KDE
XDG_SESSION_DESKTOP plasmax11
XDG_SESSION_TYPE x11

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

VS Code で Keycloak repository を開き、接続が閉じられた箇所と CPU 使用率が高い箇所の周辺にある Java server logs を調べて、障害を再現します。まず AbstractJsonSchema と CustomResourceAnnotationProcessor の annotation-processor stack のエントリから始め、その後、cyclic subGroups exception が server failure の原因かどうかを確認します。Keycloak が開き、Java server が CPU の持続的な暴走なしに実行され続ければ完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, vscode
領域
devtools
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。