You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Semen Boikov (JIRA)" <ji...@apache.org> on 2016/06/09 07:23:20 UTC

[jira] [Commented] (IGNITE-3261) AffinityKey is not stored in the metadata cache

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

Semen Boikov commented on IGNITE-3261:
--------------------------------------

I do not think it makes sense to store all predefined types in metadata cache, this potentially can break something (at least all registered types are visible via IgniteBinary.types, this is not desirable for internal classes). We can do this for AffinityKey since this is public API class, but it should be done only on first usage.

> AffinityKey is not stored in the metadata cache
> -----------------------------------------------
>
>                 Key: IGNITE-3261
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3261
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 1.5.0.final
>            Reporter: Denis Magda
>            Assignee: Semen Boikov
>            Priority: Critical
>              Labels: community, important
>             Fix For: 1.7
>
>         Attachments: Ignite-MarshallBenchmark.zip
>
>
> Presently we don't register predefined and system classes in metadata cache which can lead to significant performance drops when these types used as keys.
> As an example we have {{AffinityKey}} class. It's not registered in the metadata cache and as a result client nodes don't update their {{CacheObjectBinaryProcessorImpl.clientMetaDataCache}}. After that when a client node needs to get {{AffinityKey}} metadata using {{CacheObjectBinaryProcessorImpl.metadata(typeId)}} it will always call metadata cache and this is a bottleneck. The drop can be significant because this method is called from methods like {{GridAffinityProcessor.mapKeyToPrimaryAndBackups}}.
> In attach you can find a simple benchmark that shows how slower a result if AffinityKey is used.
> As a solution we can register {{AffinityKey}} and other system and predefined classes (?) in the metadata cache.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)