[
https://issues.apache.org/jira/browse/IGNITE-25641?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ilya Shishkov updated IGNITE-25641:
-----------------------------------
Description:
{{CacheInterceptor#onBeforePut}} can be invoked twice, and second call occurs
after committing to external database in {{CacheStoreSession#onSessionEnd}}. In
case of failure in interceptor during second invocation we will get
inconsistency between external database and Ignite cache.
As you can see in attached reproducer
([^CacheStoreWithInterceptorFailureTest.patch]), second invocation happens on
origination node, i.e. on transaction coordinator.
If transaction coordinator is primary, then fail in second invocation on
primary leads to inconsistency between cache and external storage.
was:
{{CacheInterceptor#onBeforePut}} can be invoked twice, and second call occurs
after committing to external database in {{CacheStoreSession#onSessionEnd}}. In
case of failure in interceptor during second invocation we will get
inconsistency between external database and Ignite cache.
> Failure in CacheInterceptor#onBeforePut can lead to CacheStore inconsitency
> ---------------------------------------------------------------------------
>
> Key: IGNITE-25641
> URL: https://issues.apache.org/jira/browse/IGNITE-25641
> Project: Ignite
> Issue Type: Bug
> Reporter: Ilya Shishkov
> Priority: Major
> Labels: ise
> Attachments: CacheStoreWithInterceptorFailureTest.patch
>
>
> {{CacheInterceptor#onBeforePut}} can be invoked twice, and second call occurs
> after committing to external database in {{CacheStoreSession#onSessionEnd}}.
> In case of failure in interceptor during second invocation we will get
> inconsistency between external database and Ignite cache.
> As you can see in attached reproducer
> ([^CacheStoreWithInterceptorFailureTest.patch]), second invocation happens on
> origination node, i.e. on transaction coordinator.
> If transaction coordinator is primary, then fail in second invocation on
> primary leads to inconsistency between cache and external storage.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)