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

Ivan Pavlukhin commented on IGNITE-12468:
-----------------------------------------

[~alex_pl], I took a look and I would like to spend some more time to complete 
the review. There are a couple of things which bothers me:
# It seems we duplicate 
{{org.apache.ignite.internal.processors.cache.CacheObjectUtils#unwrapBinary}} 
code for a client. If we cannot avoid duplication, we can at least cover thin 
and thick client with the same set of tests to guarantee consistent behavior. 
And it would be really useful to have such tests.
# A little bit side note. Also I noticed that 
{{org.apache.ignite.internal.binary.GridBinaryMarshaller#KEEP_BINARIES}} flag 
holder can be used to enable deserialization to Java objects. But it is not 
used at all and seems it is not sufficient to do full deserialization.

> ClassCastException on thinClient in Apache Ignite
> -------------------------------------------------
>
>                 Key: IGNITE-12468
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12468
>             Project: Ignite
>          Issue Type: Bug
>          Components: binary, clients, thin client
>    Affects Versions: 2.6
>            Reporter: LEE PYUNG BEOM
>            Assignee: Aleksey Plekhanov
>            Priority: Major
>
>  
> {code:java}
>     ClientConfiguration cfg = new 
> ClientConfiguration().setAddresses("127.0.0.1:10800");
>     try (IgniteClient igniteClient = Ignition.startClient(cfg)) {
>         System.out.println(">>> Thin client put-get example started.");
>         final String CACHE_NAME = "put-get-example";
>         ClientCache<Integer, Object> cache = 
> igniteClient.getOrCreateCache(CACHE_NAME);
>         Person p = new Person();
>         //put
>         HashMap<Integer, Person> hm = new HashMap<Integer, Person>();
>         hm.put(1, p);
>         cache.put(1, hm);
>         //get
>         HashMap<Integer, Person> map = (HashMap<Integer, Person>)cache.get(1);
>         Person p2 = map.get(1);
>         System.out.format(">>> Loaded [%s] from the cache.\n",p2);
>     }
>     catch (ClientException e) {
>         System.err.println(e.getMessage());
>         e.printStackTrace();
>     }
>     catch (Exception e) {
>         System.err.format("Unexpected failure: %s\n", e);
>         e.printStackTrace();
>     }
> {code}
>  
> I use the thin client of apache-ignite.
> I Create a hashmap and put the Person 
> class(org.apache.ignite.examples.model.Person) object into it.
> And when I take it out of the hashmap, I get the following exceptions:
>  
> {code:java}
> > java.lang.ClassCastException:
> > org.apache.enite.internal.binary.BinaryObjectImpl cannot be cast to
> > org.apache.engite.examples.model.Person.
> {code}
> An exception is given in the code below.
>  
> {code:java}
> Person p2 = map.get(1);
> {code}
>  
> However, there is no exception if I modify the code as follows:
>  
> {code:java}
> BinaryObject bo = (BinaryObject) map.get(1);
> Person p2 = bo.deserialize();
> {code}
> I don't think that's necessary. Is there another solution?
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to