Description
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.