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

Denis Magda commented on IGNITE-4293:
-------------------------------------

In my understanding all we need to do is to pass {{cfg.isCopyOnRead()}} value 
instead of {{ctx0.storeValue()}} into this call 

{code}
        CacheObjectContext res = new CacheObjectBinaryContext(ctx,
            cfg.getName(),
            ctx0.copyOnGet(),
            ctx0.storeValue(),
            binaryEnabled,
            ctx0.addDeploymentInfo());
{code}

that is inside of {{CacheObjectBinaryProcessorImpl.contextForCache()}} method.

> Deserialized value is cached if queries are enabled
> ---------------------------------------------------
>
>                 Key: IGNITE-4293
>                 URL: https://issues.apache.org/jira/browse/IGNITE-4293
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 1.7
>            Reporter: Valentin Kulichenko
>            Priority: Critical
>
> Here is the problematic piece of code in {{IgniteCacheObjectProcessorImpl}}:
> {code}
> boolean storeVal = ctx.config().isPeerClassLoadingEnabled() ||
>     GridQueryProcessor.isEnabled(ccfg) ||
>     !ccfg.isCopyOnRead();
> {code}
> This flag is set to true if queries are enabled even when binary marshaller 
> is used (this condition makes sense to other marshallers though). It is then 
> use in {{BinaryObjectImpl.deserializeValue}}:
> {code}
> if (coCtx != null && coCtx.storeValue())
>     obj = obj0;
> {code}
> As a result, memory consumption doubles.



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

Reply via email to