Add warning log if ReentrantShortLock is held too long #6186
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
ReentrantShortLock
is designed for short-lived locking in non-blocking threads. However, because blocking calls inside this class are allowed viaBlockHound.allowBlockingCallsInside()
, long lock hold times are not detected by BlockHound. This can potentially hide contention issues or misuses.This change introduces a mechanism to detect when a lock is held longer than expected and logs a warning to help developers identify such cases.
Modifications:
ReentrantShortLock
usingThreadLocal
.-Dcom.linecorp.armeria.reentrantShortLockWarnThresholdMillis=<millis>
.FlagsProvider
,Flags
, andDefaultFlagsProvider
.Result:
ReentrantShortLock
that holds a lock for a long time. #6040.ReentrantShortLock
is held longer than expected.