[ 
https://issues.apache.org/jira/browse/IGNITE-5839?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Chugunov updated IGNITE-5839:
------------------------------------
    Description: 
Simple test where {{BinaryObjectBuilder}} builder object is reused fails with 
exception {noformat}org.apache.ignite.binary.BinaryObjectException: Wrong value 
has been set [typeName=SimpleCls, fieldName=str, fieldType=String, 
assignedValueType=Object]{noformat}

{noformat}
        IgniteCache<Object, Object> cache = /* obtain a reference to 
withKeepBinary cache instance */;

        BinaryObjectBuilder bldr = grid(0).binary().builder("SimpleCls");

        bldr.setField("str", "abc");
        c.put(0, bldr.build());

        bldr.setField("str", null);
        c.put(1, bldr.build());

        bldr.setField("str", "def");
        c.put(2, bldr.build()); //exception will be thrown by call bldr.build()
{noformat}

It can be fixed by simply recreating BinaryObjectBuilder instead of reusing the 
same instance. 

However reusing builder object must be either explicitly prohibited or 
exception must be fixed.

Right now documentation on builder class says nothing about reusing this object.

  was:
Simple test where {{BinaryObjectBuilder}} builder object is reused fails with 
exception {noformat}org.apache.ignite.binary.BinaryObjectException: Wrong value 
has been set [typeName=SimpleCls, fieldName=str, fieldType=String, 
assignedValueType=Object]{noformat}

{noformat}
        IgniteCache<Object, Object> cache = /* obtain a reference to 
withKeepBinary cache instance */;

        BinaryObjectBuilder bldr = grid(0).binary().builder("SimpleCls");

        bldr.setField("str", "abc");
        c.put(0, bldr.build());

        bldr.setField("str", null);
        c.put(1, bldr.build());

        bldr.setField("str", "def");
        c.put(2, bldr.build()); //exception will be thrown by call bldr.build()
{noformat}

It can be fixed by simply recreating BinaryObjectBuilder instead of reusing the 
same instance. However reusing builder object must be either explicitly 
prohibited or exception must be fixed.
Right now documentation on builder class says nothing about reusing this object.


> Unclear exception from BinaryObjectBuilder::build call when builder is reused
> -----------------------------------------------------------------------------
>
>                 Key: IGNITE-5839
>                 URL: https://issues.apache.org/jira/browse/IGNITE-5839
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.1
>            Reporter: Sergey Chugunov
>             Fix For: 2.2
>
>
> Simple test where {{BinaryObjectBuilder}} builder object is reused fails with 
> exception {noformat}org.apache.ignite.binary.BinaryObjectException: Wrong 
> value has been set [typeName=SimpleCls, fieldName=str, fieldType=String, 
> assignedValueType=Object]{noformat}
> {noformat}
>         IgniteCache<Object, Object> cache = /* obtain a reference to 
> withKeepBinary cache instance */;
>         BinaryObjectBuilder bldr = grid(0).binary().builder("SimpleCls");
>         bldr.setField("str", "abc");
>         c.put(0, bldr.build());
>         bldr.setField("str", null);
>         c.put(1, bldr.build());
>         bldr.setField("str", "def");
>         c.put(2, bldr.build()); //exception will be thrown by call 
> bldr.build()
> {noformat}
> It can be fixed by simply recreating BinaryObjectBuilder instead of reusing 
> the same instance. 
> However reusing builder object must be either explicitly prohibited or 
> exception must be fixed.
> Right now documentation on builder class says nothing about reusing this 
> object.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to