[
https://issues.apache.org/jira/browse/IGNITE-5786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16096161#comment-16096161
]
ASF GitHub Bot commented on IGNITE-5786:
----------------------------------------
GitHub user ptupitsyn opened a pull request:
https://github.com/apache/ignite/pull/2331
IGNITE-5786 .NET: Fix cache store session handling for cross-cache
transactions
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/ptupitsyn/ignite ignite-5786
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/ignite/pull/2331.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2331
----
commit 70d0f9918c708cb117e69163cc7b7c119c9a693c
Author: Dmitriy Shabalin <[email protected]>
Date: 2017-07-20T08:08:20Z
IGNITE-4728 Web Console: Saved last succeeded state and redirect to it on
reload.
commit 02a1bdca57ce6af7fe7636b0a9f99048c89b88b6
Author: Andrey Novikov <[email protected]>
Date: 2017-07-20T08:47:49Z
IGNITE-5788 Web Console: Fixed dependencies for maven project with c3p0.
commit 162fd2258066543b95633daf81ca5f20e85e3562
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T13:32:44Z
IGNITE-5786 .NET: Transaction fails with multiple write-through caches
commit fe3f524e1bf350266d19051c85991b7c39ded3ff
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T13:57:17Z
wip
commit 611bb3eebeb5f9f256147e4beb1465687e63f900
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T14:01:41Z
wip
commit e7d3b814bba56257a784c4ca488a64ad5063d355
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T14:02:12Z
wip
commit 2e01158b9d3556e9e64eea02f1b07f0f28b41133
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T14:05:28Z
tests done
commit 3217782591ae19e891e8b3edbfd0f3cc60aab710
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T14:06:47Z
tests done
commit cc273a6e6e516d343b3157591f8cad72271abc60
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T14:09:44Z
wip
commit b8663694cde0d0d2a7f39dca93bf3bc998655111
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T19:29:25Z
wip
commit c69912dc315632a390bf9c31e1e7b65f631a1cd2
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T19:29:50Z
wip
commit e795ef51815bd3d18c4f605d22bde19f9f54d6f8
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T19:52:09Z
Fix tests according to "once per store instance" logic
commit cb0d75d525cbb9f90bd5ff52f917817d8611f4de
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-20T19:56:27Z
wip TODO
commit 72000904844529401c9d80c50f59748b70e83219
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T09:43:57Z
wip
commit 7b6a452615979caa9978cd23b7dabf6f74da9fa9
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T10:07:02Z
wip
commit 3b2f0aa8f6eaa9273576809def8c5326067c32a4
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T10:54:52Z
fix Java side
commit 98d7e65cf019a797ef5b0d2028615eaad5fa2ec2
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T10:56:05Z
fix .NET
commit 38b4a3987e0e816ef514fc9f60a67c3be2c6f2b0
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T11:32:41Z
fix NPE
commit 4212d0c85578ce481a01973dd6c1bb6bf391171c
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T11:37:41Z
wip
commit ce5b2b410bab863d35cf9260ca15ea995e92180d
Author: Pavel Tupitsyn <[email protected]>
Date: 2017-07-21T11:47:52Z
Tests adjusted, all done
----
> .NET: Transaction fails with multiple write-through caches
> ----------------------------------------------------------
>
> Key: IGNITE-5786
> URL: https://issues.apache.org/jira/browse/IGNITE-5786
> Project: Ignite
> Issue Type: Bug
> Components: platforms
> Affects Versions: 1.6
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Priority: Critical
> Labels: .NET
> Fix For: 2.2
>
>
> To reproduce: create two caches with {{WriteThrough=true}} and some
> {{CacheStore}} (implementation can be empty).
> Attempt to update both caches within a transaction:
> {code}
> using (var tx = ignite.GetTransactions().TxStart())
> {
> cache1.Put(1, 1);
> cache2.Put(1, 1);
> tx.Commit();
> }
> {code}
> Exception occurs:
> {code}
> (err) Failed to notify listener:
> o.a.i.i.processors.cache.distributed.near.GridNearTxLocal$16@17695df3javax.cache.integration.CacheWriterException:
> PlatformNativeException [cause=System.InvalidOperationException
> [idHash=1909546776, hash=1265661973,
> ClassName=System.InvalidOperationException, Data=null, ExceptionMethod=8
> Get
> Apache.Ignite.Core, Version=2.1.0.19388, Culture=neutral,
> PublicKeyToken=a487a7ff0b2aaa4a
> Apache.Ignite.Core.Impl.Handle.HandleRegistry
> T Get[T](Int64, Boolean), HelpURL=null, HResult=-2146233079,
> InnerException=null, Message=Resource handle has been released (is Ignite
> stopping?)., RemoteStackIndex=0, RemoteStackTraceString=null,
> Source=Apache.Ignite.Core, StackTraceString= at
> Apache.Ignite.Core.Impl.Handle.HandleRegistry.Get[T](Int64 id, Boolean
> throwOnAbsent) in
> C:\w\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Handle\HandleRegistry.cs:line
> 262
> at
> Apache.Ignite.Core.Impl.Cache.Store.CacheStoreInternal`2.Invoke(IBinaryStream
> stream, Ignite grid) in
> C:\w\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Cache\Store\CacheStoreInternal.cs:line
> 112
> at
> Apache.Ignite.Core.Impl.Cache.Store.CacheStore.Invoke(PlatformMemoryStream
> stream, Ignite grid) in
> C:\w\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Cache\Store\CacheStore.cs:line
> 127
> at
> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.CacheStoreInvoke(Int64
> memPtr) in
> C:\w\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Unmanaged\UnmanagedCallbacks.cs:line
> 366
> {code}
> Explanation:
> * Cache stores share same session within a transaction
> * Session in Java is uses to store .NET session handle, so both stores have
> the same .NET session (which is good: consistent with Java)
> * Each store calls sessionEnd, so session gets released multiple times - this
> causes HandleRegistry exception
> Current unit test uses Spring XML with shared
> {{PlatformDotNetCacheStoreFactory}}, which caches created store instance for
> some reason, so the bug is hidden, since both caches use the same store
> instance.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)