[
https://issues.apache.org/jira/browse/IGNITE-17385?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17569370#comment-17569370
]
Ignite TC Bot commented on IGNITE-17385:
----------------------------------------
{panel:title=Branch: [pull/10160/head] Base: [master] : No blockers
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/10160/head] Base: [master] : New Tests
(3)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}Cache 13{color} [[tests
3|https://ci.ignite.apache.org/viewLog.html?buildId=6691365]]
* {color:#013220}IgniteCacheTestSuite13:
TxAsyncOpsSemaphorePermitsExceededTest.testSyncPutOps - PASSED{color}
* {color:#013220}IgniteCacheTestSuite13:
TxAsyncOpsSemaphorePermitsExceededTest.testImplicitAsyncPutOps - PASSED{color}
* {color:#013220}IgniteCacheTestSuite13:
TxAsyncOpsSemaphorePermitsExceededTest.testAsyncPutOps - PASSED{color}
{panel}
[TeamCity *--> Run :: All*
Results|https://ci.ignite.apache.org/viewLog.html?buildId=6688316&buildTypeId=IgniteTests24Java8_RunAll]
> Frequent commits of single cache transactions can lead
> GridCacheAdapter#asyncOpsSem permits overflow
> ----------------------------------------------------------------------------------------------------
>
> Key: IGNITE-17385
> URL: https://issues.apache.org/jira/browse/IGNITE-17385
> Project: Ignite
> Issue Type: Bug
> Affects Versions: 2.13
> Reporter: Ilya Shishkov
> Assignee: Maksim Timonin
> Priority: Major
> Labels: ise
> Fix For: 2.14
>
> Attachments: SemaphorePermitsExceeded.patch
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> When you commit a transaction, which was _explicitly started only over a
> single cache_, then {{GridCacheAdapter#asyncOpRelease}} is called without
> {{GridCacheAdapter#asyncOpAcquire}}. This situation can lead to continuous
> grow of permits count in {{GridCacheAdapter#asyncOpsSem}} and to overflow
> with a further failure of node started the transaction:
> {code}
> Critical system error detected. Will be handled accordingly to configured
> handler
> [hnd=o.a.i.i.processors.cache.transactions.TxAsyncOpsSemaphorePermitsExeededTest$$Lambda$42/1924582348@7379bebb,
> failureCtx=FailureContext [type=CRITICAL_ERROR, err=java.lang.Error: Maximum
> permit count exceeded]]
> {code}
> As you can see in [1], in case of the single cache context, transaction will
> be commited by calling of {{GridCacheAdapter#commitTxAsync}}, which invokes
> {{GridCacheAdapter#asyncOpRelease}} later. But, when multiple caches affected
> by transaction, {{GridNearTxLocal#commitNearTxLocalAsync}} is called to
> commit transaction, and no invokes of {{GridCacheAdapter#asyncOpRelease}}
> occur.
> So, the greater the load (RPS / TPS) with a such single cache transactions,
> the faster the failure of a node will happen.
> Reproducer of the problem: [^SemaphorePermitsExceeded.patch]. It prints
> additional messages, when semaphore is released, or acquired.
> Links:
> #
> https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java#L1122
--
This message was sent by Atlassian Jira
(v8.20.10#820010)