ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Griggs (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-1903) CacheStore implementation is serialised to grid clients whether they require it or not
Date Fri, 13 Nov 2015 09:13:11 GMT
Michael Griggs created IGNITE-1903:
--------------------------------------

             Summary: 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
            Reporter: Michael Griggs


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:

{{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}}

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