Skip to content

Conversation

@sebthom
Copy link
Member

@sebthom sebthom commented Dec 26, 2025

Refresh diagnostics only for open Markdown buffers and debounce/serialize refresh requests and de-dupe in-flight refreshes. Make diagnostic pull non-blocking with timeout.


This solves issue that threads like this are piling up:

"ForkJoinPool.commonPool-worker-262" #7921 [21548] daemon prio=5 os_prio=0 cpu=3781.25ms elapsed=124139.24s tid=0x00000226ec161850 nid=21548 waiting on condition  [0x0000002de7ffe000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.9/Native Method)
        - parking to wait for  <0x0000000765001c88> (a java.util.concurrent.CompletableFuture$Signaller)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.9/LockSupport.java:221)
        at java.util.concurrent.CompletableFuture$Signaller.block(java.base@21.0.9/CompletableFuture.java:1864)
        at java.util.concurrent.ForkJoinPool.compensatedBlock(java.base@21.0.9/ForkJoinPool.java:3740)
        at java.util.concurrent.ForkJoinPool.managedBlock(java.base@21.0.9/ForkJoinPool.java:3723)
        at java.util.concurrent.CompletableFuture.waitingGet(java.base@21.0.9/CompletableFuture.java:1898)
        at java.util.concurrent.CompletableFuture.get(java.base@21.0.9/CompletableFuture.java:2072)
        at org.eclipse.wildwebdeveloper.markdown.MarkdownDiagnosticsManager.refreshFile(MarkdownDiagnosticsManager.java:264)
        at org.eclipse.wildwebdeveloper.markdown.MarkdownDiagnosticsManager.lambda$0(MarkdownDiagnosticsManager.java:229)
        at org.eclipse.wildwebdeveloper.markdown.MarkdownDiagnosticsManager$$Lambda/0x00000007c1ddeac0.visit(Unknown Source)
        at org.eclipse.core.internal.resources.Resource.lambda$1(Resource.java:156)
        at org.eclipse.core.internal.resources.Resource$$Lambda/0x00000007c0dccd40.visit(Unknown Source)
        at org.eclipse.core.internal.resources.Resource.lambda$0(Resource.java:124)
        at org.eclipse.core.internal.resources.Resource$$Lambda/0x00000007c07c32e8.visitElement(Unknown Source)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:85)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:90)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:90)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:90)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:90)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:90)
        at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:90)
        at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:129)
        at org.eclipse.core.internal.resources.Resource.accept(Resource.java:133)
        at org.eclipse.core.internal.resources.Resource.accept(Resource.java:92)
        at org.eclipse.core.internal.resources.Resource.accept(Resource.java:156)
        at org.eclipse.core.internal.resources.Resource.accept(Resource.java:144)
        at org.eclipse.wildwebdeveloper.markdown.MarkdownDiagnosticsManager.refreshAllOpenMarkdownFiles(MarkdownDiagnosticsManager.java:225)
        at org.eclipse.wildwebdeveloper.markdown.MarkdownLanguageClient.lambda$1(MarkdownLanguageClient.java:186)
        at org.eclipse.wildwebdeveloper.markdown.MarkdownLanguageClient$$Lambda/0x00000007c1dde3d8.run(Unknown Source)
        at java.util.concurrent.CompletableFuture$AsyncRun.run(java.base@21.0.9/CompletableFuture.java:1804)
        at java.util.concurrent.CompletableFuture$AsyncRun.exec(java.base@21.0.9/CompletableFuture.java:1796)
        at java.util.concurrent.ForkJoinTask.doExec(java.base@21.0.9/ForkJoinTask.java:387)
        at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@21.0.9/ForkJoinPool.java:1312)
        at java.util.concurrent.ForkJoinPool.scan(java.base@21.0.9/ForkJoinPool.java:1843)
        at java.util.concurrent.ForkJoinPool.runWorker(java.base@21.0.9/ForkJoinPool.java:1808)
        at java.util.concurrent.ForkJoinWorkerThread.run(java.base@21.0.9/ForkJoinWorkerThread.java:188)

   Locked ownable synchronizers:
        - None

Refresh diagnostics only for open Markdown buffers and
debounce/serialize refresh requests and de-dupe in-flight refreshes.
Make diagnostic pull non-blocking with timeout.
@sebthom sebthom merged commit b10d63c into eclipse-wildwebdeveloper:master Dec 27, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant