ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Magda (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-1903) CacheStore implementation is serialised to grid clients whether they require it or not
Date Wed, 09 Mar 2016 11:28:40 GMT

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

Denis Magda commented on IGNITE-1903:
-------------------------------------

Hi Michael,

I would better avoid sending of {{CacheStore}} to client nodes if store's cache is non TRANSACTIONAL.
In any case I checked the code and see that the exception that happens on client's side during
the de-serialization is harmless because the client can be used without any problem unless
{{CacheStore}} that wasn't de-serialized belonged to a TRANSACTIONAL cache.

Also it's quite normal to resurrect discussions on the dev lest reminding that an issue has
not been fixed yet and that you have a view on how it can be fixed.

> CacheStore implementation is serialised to grid clients whether they require it or not
> --------------------------------------------------------------------------------------
>
>                 Key: IGNITE-1903
>                 URL: https://issues.apache.org/jira/browse/IGNITE-1903
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 1.5.0.final
>            Reporter: Michael Griggs
>            Assignee: Denis Magda
>            Priority: Critical
>              Labels: community
>             Fix For: 1.6
>
>
> See User discussion thread:  http://apache-ignite-users.70518.x6.nabble.com/CacheStore-being-serialized-to-client-td1931.html
> Brief summary:  When a grid client joins the grid (clientMode=true) it receives a message
from the server node(s) on the grid that contains the serialized CacheStore implementation
object.  If the client does not have this class on its CLASSPATH (and there is no reason it
should, as it is a client) then the de-serialization of this message will fail, causing this
exception:
> {code}SEVERE: Failed to unmarshal discovery data for component: 1 
> class org.apache.ignite.IgniteCheckedException: Failed to find class with given class
loader for unmarshalling (make sure same versions of all classes are available on all nodes
or enable peer-class-loading): sun.misc.Launcher$AppClassLoader@14dad5dc 
>         at org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:104)

>         at org.apache.ignite.marshaller.AbstractMarshaller.unmarshal(AbstractMarshaller.java:67)

>         at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.onExchange(TcpDiscoverySpi.java:1529)

>         at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.processNodeAddFinishedMessage(ClientImpl.java:1317)

>         at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.processDiscoveryMessage(ClientImpl.java:1229)

>         at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.body(ClientImpl.java:1199)

>         at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62) 
> Caused by: java.lang.ClassNotFoundException: c.g.r.cachewrapper.ignite.CacheMissHandlerIgnite
> {code}
> where {{c.g.r.cachewrapper.ignite.CacheMissHandlerIgnite}} is the CacheStore implementation.
> The ostensible reason for the CacheStore serialization is so that clients of a TRANSACTIONAL
cache can begin the transaction on the underlying store.  
> The only current solution to this is to add the grid node's CacheStore implementation
class definition to the CLASSPATH of the client.  This creates an *undesirable coupling* between
server and client.



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

Mime
View raw message