You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrew Mashenkov (JIRA)" <ji...@apache.org> on 2017/09/06 13:10:00 UTC

[jira] [Commented] (IGNITE-6280) Cassandra ignores AffinityKeyMapped annotation in parent classes.

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

Andrew Mashenkov commented on IGNITE-6280:
------------------------------------------

[~irudyak],

Would you please take a look at this and suggest correct way it can be fixed? 

Why we override key mapping when AffinityKeyMapped annotation is used, if
it as valid case to have alternative key affinity mapping for cassandra store
and keyPersistence configuration is mandatory.

May be I've missed smth...?




> Cassandra ignores AffinityKeyMapped annotation in parent classes.
> -----------------------------------------------------------------
>
>                 Key: IGNITE-6280
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6280
>             Project: Ignite
>          Issue Type: Bug
>          Components: cassandra
>    Affects Versions: 2.1
>            Reporter: Andrew Mashenkov
>
> By default, using @AffinityKeyMapped annotation force Ignire to override user _keyPersistence_ configuration that may cause confusing results.
> PFA repro attached.
> h3. Description
> 1. Let there is 2 keys A and B that has same fields with one difference. Key A has affinity key in parent class. So, it looks like this.
> {code}
> class BaseKey {
> @AffinityKeyMapped
>  Object affinityKey
> }
> {code}
> {code}
> class A extends BaseKey {
>  int id;
> }
> {code}
> {code}
> class B {
> @AffinityKeyMapped
>  Object affinityKey;
>  int uid;
> }
> {code}
> 2. Let we make different affinity mapping for Cassandra store, that looks like a valid case
> {code:xml}
> <keyPersistence class="..."  strategy="POJO">
>     <partitionKey>
>          <field name="affinityKey" column="partID"/>
>          <field name="uid" column="uid"/>
>    </partitionKey>
> ....
> {code}
> 3. We have different behavior for these similar cases that makes user confused.
> For key A this will work fine and expected DDL will be generated.
> For key B we'll get different DDL as Ignite will remove "_uid_" field from "_partitionKey_".
> So, we should either to not allow Ignite to override key mapping or force Ignite to check if parent classes has @AffinityKeyMapped annotation.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)