Replace platform threads with virtual threads to fix busy-waiting#3446
Replace platform threads with virtual threads to fix busy-waiting#3446Kaaldut8 wants to merge 4 commits into
Conversation
PR SummaryRefactors busy-wait loops by replacing platform threads with virtual threads to improve concurrency handling and avoid busy-wait scenarios. Includes formatting enforcement via Spotless across modules, minor formatting tweaks in several modules, and updates to the session-server to use a virtual-thread-based scheduler for session expiration. Also adds license headers to rate-limiting-pattern sources and expands test file formatting for consistency across the project. Changes
autogenerated by presubmit.ai |
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- ea68115: Apply Spotless formatting
Files Processed (2)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (3 hunks)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java (2 hunks)
Actionable Comments (0)
Skipped Comments (8)
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [1-25]
maintainability: "License header added"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [89-93]
maintainability: "Initialize TokenBucketRateLimiter outside try for proper cleanup"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [107-109]
maintainability: "Ensure TokenBucketRateLimiter is shutdown to avoid thread leaks"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [66-68]
maintainability: "Expose shutdown for the rate limiter's scheduler"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [74-75]
design: "Track last refill timestamp for per-second refill policy"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [79-80]
maintainability: "Initialize refill timestamp during bucket construction"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [82-91]
concurrency: "Make token consumption synchronized and refilling lazy via refillIfNeeded"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [93-99]
behavior: "Periodic refill for tokens based on elapsed time"
There was a problem hiding this comment.
🚨 Pull request needs attention.
Review Summary
Commits Considered (1)
- 90b794b: Removes expression which is always true
Files Processed (1)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (2 hunks)
Actionable Comments (2)
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [89-89]
possible bug: "Initialize rate limiter variable outside try."
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [91-91]
possible bug: "Potential risk of null after initialization."
Skipped Comments (1)
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [1-24]
maintainability: "Add license header to App.java."
| ExecutorService executor = Executors.newFixedThreadPool(3); | ||
| ScheduledExecutorService statsPrinter = Executors.newSingleThreadScheduledExecutor(); | ||
|
|
||
| TokenBucketRateLimiter tb = null; |
There was a problem hiding this comment.
TokenBucketRateLimiter tb = null;
| TokenBucketRateLimiter tb = null; | ||
| try { | ||
| TokenBucketRateLimiter tb = new TokenBucketRateLimiter(2, 1); | ||
| tb = new TokenBucketRateLimiter(2, 1); |
There was a problem hiding this comment.
tb = new TokenBucketRateLimiter(2, 1);
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- 6d3356e: Add test coverage for sessionserver App
Files Processed (0)
Actionable Comments (0)
Skipped Comments (0)
|
|
This PR is stale because it has been open 60 days with no activity. |
|
While the PR correctly attempts to address resource usage, the changes introduced functional bugs in the rate limiter, resource leaks in tests, and broke the educational demonstration of the Twin design pattern. |


Refactors busy-waiting loops by replacing platform threads with virtual threads and improving concurrency handling across affected components.
Fixes #2977