[
https://issues.apache.org/jira/browse/IGNITE-23716?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Tkalenko updated IGNITE-23716:
-------------------------------------
Ignite Flags: (was: Docs Required,Release Notes Required)
> Improve contented locks usage
> -----------------------------
>
> Key: IGNITE-23716
> URL: https://issues.apache.org/jira/browse/IGNITE-23716
> Project: Ignite
> Issue Type: Improvement
> Reporter: Alexey Scherbakov
> Assignee: Kirill Tkalenko
> Priority: Major
> Labels: ignite-3
>
> IGNITE-23303 addressed some of condended lock usages, but not all.
> 1.
> {noformat}
> public Executor executorFor(short executorIndex, int stripeIndex) {
> assert executorIndex >= 0 : "Executor index is negative: " +
> executorIndex;
> if (!busyLock.enterBusy()) {
> return NO_OP_EXECUTOR;
> }
> try {
> return stripedExecutorFor(executorIndex).stripeExecutor(stripeIndex);
> } finally {
> busyLock.leaveBusy();
> }
> }{noformat}
> is called on every incoming message, and they might be millions.
> 2. ClockWaiter's busyLock can be removed, because it delegates to tracker
> which already has (already optimized) busy locks.
>
> 3. IgniteAttachmentLock writes to shared location both for sync and async
> paths - it should be striped in some way.
> 4. StripedRWLock used in PendingComparableValuesTracker and ReplicaManager
> doesn't check if write lock is already held
> 5. IgniteSpinBusyLock duplicates VersatileReadWriteLock in many aspects and
> vice versa. I believe ISBL can be replaces with VRWL.
> See for example org.apache.ignite.internal.util.IgniteUtils#inBusyLockAsync
> NOTE: don't forget to check results with UpsertKvBenchmark
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)