[jdk17] RFR: 8269865: Async UL needs to handle ERANGE on exceeding SEM_VALUE_MAX [v7]
Xin Liu
xliu at openjdk.java.net
Tue Jul 13 19:08:47 UTC 2021
> This patch solved the sempahore overflow issue with errno ERANGE or EOVERFLOW.
> Previously, we have asymmetric p/v operations for semaphore _sem. Each iteration
> only decrements _sem 1 but dequeues N messages. If logging threads keep preempting
> async logging thread, it may cause the value of _sem accumulates until overflow!
>
> The patch corrects the value of _sem after write(). n messages are dequeued/processed.
> We need to invoke _sem.wait() max(n-1, 1) time. This ensures that each iteration
> decrements n instead of 1.
Xin Liu has updated the pull request incrementally with one additional commit since the last revision:
Replace counting semaphore with os::PlatformMontor.
Second attempt. This patch also removed semaphore-based lock because
PlatformMonitor can also be used as a Mutex lock.
-------------
Changes:
- all: https://git.openjdk.java.net/jdk17/pull/216/files
- new: https://git.openjdk.java.net/jdk17/pull/216/files/7ac1c26c..0816eb2d
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk17&pr=216&range=06
- incr: https://webrevs.openjdk.java.net/?repo=jdk17&pr=216&range=05-06
Stats: 11 lines in 2 files changed: 0 ins; 4 del; 7 mod
Patch: https://git.openjdk.java.net/jdk17/pull/216.diff
Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/216/head:pull/216
PR: https://git.openjdk.java.net/jdk17/pull/216
More information about the hotspot-runtime-dev
mailing list