ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Igor Rudyak (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-6280) Cassandra ignores AffinityKeyMapped annotation in parent classes.
Date Tue, 13 Feb 2018 05:37:00 GMT

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

Igor Rudyak commented on IGNITE-6280:
-------------------------------------

[~amashenkov] could you please clarify what do you mean? It looks like ticket name doesn't
reflect the case you are trying to do. I checked the test class attached - it works fine.

Moreover in your case all the annotations you are using don't make any sense, cause you already
explicitly specified cluster key and partition key. Persistent settings which are explicitly
specified (using persistence descriptor) always take precedence over settings specified using
annotations.

 

> 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
>            Assignee: Igor Rudyak
>            Priority: Major
>         Attachments: CassandraConfigTest.java
>
>
> 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
(v7.6.3#76005)

Mime
View raw message