You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ignite TC Bot (Jira)" <ji...@apache.org> on 2020/10/20 17:41:00 UTC

[jira] [Commented] (IGNITE-13160) .NET: wrong affinity key registration with AffinityKeyMapped attribute

    [ https://issues.apache.org/jira/browse/IGNITE-13160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17217821#comment-17217821 ] 

Ignite TC Bot commented on IGNITE-13160:
----------------------------------------

{panel:title=Branch: [pull/8378/head] Base: [master] : Possible Blockers (9)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}MVCC Cache 7{color} [[tests 0 TIMEOUT , Exit Code |https://ci.ignite.apache.org/viewLog.html?buildId=5678294]]

{color:#d04437}Cache 7{color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5678259]]
* IgniteCacheTestSuite7: GracefulShutdownTest.testRollingRestartEmulationReplicatedCache - Test has low fail rate in base branch 0,0% and is not flaky

{color:#d04437}PDS 1{color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5678270]]
* IgnitePdsTestSuite: BPlusTreeReuseListPageMemoryImplTest.testMassiveRemove2_true - Test has low fail rate in base branch 0,0% and is not flaky

{color:#d04437}Thin client: Node.js{color} [[tests 0 Exit Code |https://ci.ignite.apache.org/viewLog.html?buildId=5678232]]

{color:#d04437}Cache 5{color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5678257]]
* IgniteCacheTestSuite5: ClusterStateThinClientReplicatedSelfTest.testDeactivationFromReadOnly - Test has low fail rate in base branch 0,0% and is not flaky

{color:#d04437}Cache (Expiry Policy){color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5678243]]
* IgniteCacheExpiryPolicyTestSuite: IgniteCacheClientNearCacheExpiryTest.testExpirationOnClient - Test has low fail rate in base branch 0,0% and is not flaky

{color:#d04437}Cache 1{color} [[tests 0 TIMEOUT , Exit Code |https://ci.ignite.apache.org/viewLog.html?buildId=5678253]]

{color:#d04437}Platform C++ CMake (Linux Clang){color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5678305]]
* IgniteThinClientTest: CacheClientTestSuite: CacheClientPartitionsInt32 - Test has low fail rate in base branch 0,0% and is not flaky

{color:#d04437}Platform .NET (NuGet)*{color} [[tests 0 Exit Code |https://ci.ignite.apache.org/viewLog.html?buildId=5678279]]

{panel}
{panel:title=Branch: [pull/8378/head] Base: [master] : New Tests (11)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}Queries 2{color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5678217]]
* {color:#013220}IgniteBinaryCacheQueryTestSuite2: SqlCacheStartStopTest.testCustomAffinity - PASSED{color}

{color:#00008b}Platform .NET (Core Linux){color} [[tests 5|https://ci.ignite.apache.org/viewLog.html?buildId=5678275]]
* {color:#013220}dll: QueryEntityMetadataRegistrationTest.TestCacheStartFromCodeRegistersMetaForQueryEntityTypes - PASSED{color}
* {color:#013220}dll: QueryEntityMetadataRegistrationTest.TestCacheStartFromSpringRegistersMetaForQueryEntityTypes - PASSED{color}
* {color:#013220}dll: QueryEntityMetadataRegistrationTest.TestCacheStartFromCodeSkipsInvalidQueryEntityTypes - PASSED{color}
* {color:#013220}dll: AffinityTest.TestAffinityKeyMappedWithQueryEntity - PASSED{color}
* {color:#013220}dll: AffinityTest.TestAffinityKeyMappedWithQueryEntitySpringXml - PASSED{color}

{color:#00008b}Platform .NET{color} [[tests 5|https://ci.ignite.apache.org/viewLog.html?buildId=5678274]]
* {color:#013220}exe: AffinityTest.TestAffinityKeyMappedWithQueryEntitySpringXml - PASSED{color}
* {color:#013220}exe: AffinityTest.TestAffinityKeyMappedWithQueryEntity - PASSED{color}
* {color:#013220}exe: QueryEntityMetadataRegistrationTest.TestCacheStartFromSpringRegistersMetaForQueryEntityTypes - PASSED{color}
* {color:#013220}exe: QueryEntityMetadataRegistrationTest.TestCacheStartFromCodeSkipsInvalidQueryEntityTypes - PASSED{color}
* {color:#013220}exe: QueryEntityMetadataRegistrationTest.TestCacheStartFromCodeRegistersMetaForQueryEntityTypes - PASSED{color}

{panel}
[TeamCity *--&gt; Run :: All* Results|https://ci.ignite.apache.org/viewLog.html?buildId=5678310&amp;buildTypeId=IgniteTests24Java8_RunAll]

> .NET: wrong affinity key registration with AffinityKeyMapped attribute
> ----------------------------------------------------------------------
>
>                 Key: IGNITE-13160
>                 URL: https://issues.apache.org/jira/browse/IGNITE-13160
>             Project: Ignite
>          Issue Type: Bug
>          Components: platforms
>    Affects Versions: 2.8.1
>            Reporter: Alexandr Shapkin
>            Assignee: Pavel Tupitsyn
>            Priority: Major
>             Fix For: 2.10
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When QueryEntities is set alongside a custom key that utilizes the AffinityKeyMapped attribute, the field won't be taken into account for some reason. When QueryEntities configuration gets removed, all works fine, setting KeyConfiguration manually helps as well. At the same time, the BinaryType registration itself looks fine.
> After the investigation, it turned out that affinityKey field is not being registered on cache registration, and null is being cached instead. Later on Ignite correctly tries to register a custom class as a key, but it's never being updated internally case the real value is already cached.
>  
> NOTE: there is a workaround - you need to specify the key configuration explicitly:
> {code:java}
> cacheConfiguration.KeyConfiguration = new List<CacheKeyConfiguration>(1)
> {
>  //affinityKey should be auto adjusted with Reflection
>  new CacheKeyConfiguration(typeof(MyKey))
> };
>  
> {code}
>  
> Reproducer (add to the AffinityTest.cs):
> {code:java}
>         /// <summary>
>         /// Tests AffinityKeyMapped attribute should map to the same partitions
>         /// for the same field value.
>         /// </summary>
>         [Test]
>         public void TestCustomAffinity()
>         {
>             IIgnite g = Ignition.GetIgnite("grid-0");
>             var cacheCfg = new CacheConfiguration("mycache")
>             {
>                 // Without QueryEntities tests passes.
>                 QueryEntities = new List<QueryEntity>()
>                 {
>                     new QueryEntity(typeof(MyKey), typeof(int))
>                 }
>             };
>             g.GetOrCreateCache<MyKey, int>(cacheCfg);
>             var key1 = new MyKey {Data = "data1", AffinityKey = 1};
>             var key2 = new MyKey {Data = "data2", AffinityKey = 1};
>             ICacheAffinity aff = g.GetAffinity(cacheCfg.Name);
>             Assert.AreEqual(aff.GetPartition(key1), aff.GetPartition(key2));
>         }
>         public class MyKey
>         {
>             [QuerySqlField]
>             public string Data { get; set; }
>             [AffinityKeyMapped]
>             public long AffinityKey { get; set; }
>         }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)