You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Java package taking 100% CPU under very specific conditions #4052
Here are the minimal conditions needed to reproduce this issue:
A Java package has a dependency on Lombok.
A method uses Lombok's @NonNull on a parameter.
The first line of the method is a comment.
The line after the comment is NOT empty.
The lombok.nonNull.exceptionType = JDK option is set in a lombok.config file.
If you open this project in VS Code with the redhat.java extension, any modification in that same file that does not break the above criteria (such as adding a comment on the last line and saving) will take 100% of one CPU core. Do it 5 times, and it will take 5 cores!
This high CPU usage stops after a while, but it makes the whole machine unresponsive if you make several modifications quickly.
Upstream yes, but the culprit appears to be lombok illegally creating instances of internal classes with illegal / missing values, see eclipse-jdt/eclipse.jdt.core#4713 (review)
Even if JDT might add extra resilience for this case, it would be good to report this to lombok. The bottom line would probably be: any internal AST generated by lombok must have suitable source locations throughout. As this internal AST is not intended to be accessed by clients, it's entirely lombok's responsibility to create these things in a way that doesn't blow up in any way.
Activity
snjeza commentedon Dec 23, 2025
This is an upstream jdt.core issue.
The related issue - eclipse-jdt/eclipse.jdt.core#4712
stephan-herrmann commentedon Aug 9, 2026
Upstream yes, but the culprit appears to be lombok illegally creating instances of internal classes with illegal / missing values, see eclipse-jdt/eclipse.jdt.core#4713 (review)
Even if JDT might add extra resilience for this case, it would be good to report this to lombok. The bottom line would probably be: any internal AST generated by lombok must have suitable source locations throughout. As this internal AST is not intended to be accessed by clients, it's entirely lombok's responsibility to create these things in a way that doesn't blow up in any way.