[ 
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 <dshaba...@gridgain.com>
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 <anovi...@gridgain.com>
Date:   2017-07-20T08:47:49Z

    IGNITE-5788 Web Console: Fixed dependencies for maven project with c3p0.

commit 162fd2258066543b95633daf81ca5f20e85e3562
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T13:32:44Z

    IGNITE-5786 .NET: Transaction fails with multiple write-through caches

commit fe3f524e1bf350266d19051c85991b7c39ded3ff
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T13:57:17Z

    wip

commit 611bb3eebeb5f9f256147e4beb1465687e63f900
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T14:01:41Z

    wip

commit e7d3b814bba56257a784c4ca488a64ad5063d355
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T14:02:12Z

    wip

commit 2e01158b9d3556e9e64eea02f1b07f0f28b41133
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T14:05:28Z

    tests done

commit 3217782591ae19e891e8b3edbfd0f3cc60aab710
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T14:06:47Z

    tests done

commit cc273a6e6e516d343b3157591f8cad72271abc60
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T14:09:44Z

    wip

commit b8663694cde0d0d2a7f39dca93bf3bc998655111
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T19:29:25Z

    wip

commit c69912dc315632a390bf9c31e1e7b65f631a1cd2
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T19:29:50Z

    wip

commit e795ef51815bd3d18c4f605d22bde19f9f54d6f8
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T19:52:09Z

    Fix tests according to "once per store instance" logic

commit cb0d75d525cbb9f90bd5ff52f917817d8611f4de
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-20T19:56:27Z

    wip TODO

commit 72000904844529401c9d80c50f59748b70e83219
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-21T09:43:57Z

    wip

commit 7b6a452615979caa9978cd23b7dabf6f74da9fa9
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-21T10:07:02Z

    wip

commit 3b2f0aa8f6eaa9273576809def8c5326067c32a4
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-21T10:54:52Z

    fix Java side

commit 98d7e65cf019a797ef5b0d2028615eaad5fa2ec2
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-21T10:56:05Z

    fix .NET

commit 38b4a3987e0e816ef514fc9f60a67c3be2c6f2b0
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-21T11:32:41Z

    fix NPE

commit 4212d0c85578ce481a01973dd6c1bb6bf391171c
Author: Pavel Tupitsyn <ptupit...@apache.org>
Date:   2017-07-21T11:37:41Z

    wip

commit ce5b2b410bab863d35cf9260ca15ea995e92180d
Author: Pavel Tupitsyn <ptupit...@apache.org>
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)

Reply via email to