Folks, It looks like we cache the deserialized value in case indexing is enabled and a read operation happens on server side (e.g. affinity closure does get() on primary node).
This must be caused by this piece of code in IgniteCacheObjectProcessorImpl: boolean storeVal = ctx.config().isPeerClassLoadingEnabled() || GridQueryProcessor.isEnabled(ccfg) || !ccfg.isCopyOnRead(); This actually means that we store deserialized values in case indexing is configured even if copyOnRead is true. My understanding is that this is a bug and GridQueryProcessor.isEnabled(ccfg) condition should be removed from there (at least for the case when binary marshaller is used). Am I missing something? -Val