[ https://issues.apache.org/jira/browse/IGNITE-1722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vasilisa Sidorova updated IGNITE-1722: --------------------------------------- Summary: Most examples fail if they are running with JdkMarshaller and in the cluster with different vendors and versions jvm (was: Compute examples fail if they are running with JdkMarshaller and in the cluster with different vendors and versions jvm) > Most examples fail if they are running with JdkMarshaller and in the cluster > with different vendors and versions jvm > -------------------------------------------------------------------------------------------------------------------- > > Key: IGNITE-1722 > URL: https://issues.apache.org/jira/browse/IGNITE-1722 > Project: Ignite > Issue Type: Bug > Components: general > Affects Versions: 1.5 > Environment: Ubuntu 14.04, community 1.5.0 build #319 > Reporter: Vasilisa Sidorova > Fix For: 1.5 > > > --------------------------------------------- > DESCRIPTION > --------------------------------------------- > When default optimizedMarshaller is changed into JdkMarshaller in > example-ignite.xml and cluster with different vendors and versions jvm is > started then most of Compute examples (ClusterGroupExample, > CreditRiskExample, ComputeAsyncExample, ComputeBroadcastExample, > ComputeCallableExample, ComputeClosureExample, ComputeReducerExample, > ComputeRunnableExample) fail during running in this cluster > --------------------------------------------- > STEPS FOR REPRODUCE > --------------------------------------------- > # Build examples project in IDE (for example, for the ibm-java-7 jvm) > # In the example-ignite.xml change property from: > {noformat} > <property name="marshaller"> > <bean > class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller"> --> > <!-- Set to false to allow non-serializable objects in > examples, default is true. --> > <!-- <property name="requireSerializable" value="false"/> > </bean> > </property> > {noformat} > to > {noformat} > <property name="marshaller"> > <bean class="org.apache.ignite.marshaller.jdk.JdkMarshaller"/> > </property> > {noformat} > # Run ExampleNodeStartup on the ibm-java-7 jvm > # In the same cluster run second ExampleNodeStartup (or corresponding node > from command line) on the, for example, oracle-java-7 jvm > # For example, run CreditRiskExample on the ibm-java-7 jvm > --------------------------------------------- > ACTUAL RESULT > --------------------------------------------- > Example is failed with exception: > {noformat} > [18:32:50,486][ERROR][ignite-#19%sys-null%][GridTaskWorker] Failed to obtain > remote job result policy for result from ComputeTask.result(..) method (will > fail the whole task): GridJobResultImpl [job=C2 [], sib=GridJobSiblingImpl > [sesId=4e238417051-f0bdd2e0-2e1b-40c9-b395-5adeea3abb80, > jobId=6e238417051-b4bcdc8a-d015-4add-a605-63dff152b030, > nodeId=b4bcdc8a-d015-4add-a605-63dff152b030, isJobDone=false], > jobCtx=GridJobContextImpl > [jobId=6e238417051-b4bcdc8a-d015-4add-a605-63dff152b030, timeoutObj=null, > attrs={}], node=TcpDiscoveryNode [id=b4bcdc8a-d015-4add-a605-63dff152b030, > addrs=[127.0.0.1], sockAddrs=[/127.0.0.1:47501], discPort=47501, order=4, > intOrder=3, lastExchangeTime=1445009569431, loc=false, > ver=1.5.0#20151012-sha1:6844370d, isClient=false], ex=class > o.a.i.IgniteException: Failed to deserialize object with given class loader: > sun.misc.Launcher$AppClassLoader@501d5ebc, hasRes=true, isCancelled=false, > isOccupied=true] > class org.apache.ignite.IgniteException: Remote job threw user exception > (override or implement ComputeTask.result(..) method if you would like to > have automatic failover for this exception). > at > org.apache.ignite.compute.ComputeTaskAdapter.result(ComputeTaskAdapter.java:101) > at > org.apache.ignite.internal.processors.closure.GridClosureProcessor$T3.result(GridClosureProcessor.java:1246) > at > org.apache.ignite.internal.processors.task.GridTaskWorker$3.apply(GridTaskWorker.java:903) > at > org.apache.ignite.internal.processors.task.GridTaskWorker$3.apply(GridTaskWorker.java:896) > at > org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6403) > at > org.apache.ignite.internal.processors.task.GridTaskWorker.result(GridTaskWorker.java:896) > at > org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:792) > at > org.apache.ignite.internal.processors.task.GridTaskProcessor.processJobExecuteResponse(GridTaskProcessor.java:995) > at > org.apache.ignite.internal.processors.task.GridTaskProcessor$JobMessageListener.onMessage(GridTaskProcessor.java:1219) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:811) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$1500(GridIoManager.java:106) > at > org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:774) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627) > at java.lang.Thread.run(Thread.java:809) > Caused by: class org.apache.ignite.IgniteException: Failed to deserialize > object with given class loader: sun.misc.Launcher$AppClassLoader@501d5ebc > at > org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:424) > at > org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1094) > at > org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1776) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:811) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$1500(GridIoManager.java:106) > at > org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:774) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Caused by: class org.apache.ignite.IgniteCheckedException: Failed to > deserialize object with given class loader: > sun.misc.Launcher$AppClassLoader@501d5ebc > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:105) > at > org.apache.ignite.marshaller.AbstractMarshaller.unmarshal(AbstractMarshaller.java:68) > at > org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:409) > ... 8 more > Caused by: java.io.InvalidClassException: > org.apache.ignite.examples.computegrid.montecarlo.CreditRiskExample$2; local > class incompatible: stream classdesc serialVersionUID = 1895801581034216497, > local class serialVersionUID = 9086725335444863242 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) > at > org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.readExternal(GridClosureProcessor.java:1808) > at > java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:102) > ... 10 more > >>> Finished calculating portfolio risk [risk=499581.9554895319, time=2728ms] > [18:32:53] Ignite node stopped OK [uptime=00:00:02:841] > Exception in thread "main" class org.apache.ignite.IgniteException: Failed to > deserialize object with given class loader: > sun.misc.Launcher$AppClassLoader@501d5ebc > at > org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:881) > at > org.apache.ignite.internal.IgniteComputeImpl.call(IgniteComputeImpl.java:408) > at > org.apache.ignite.examples.computegrid.montecarlo.CreditRiskExample.main(CreditRiskExample.java:85) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56) > at java.lang.reflect.Method.invoke(Method.java:620) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) > Caused by: class org.apache.ignite.IgniteCheckedException: Failed to > deserialize object with given class loader: > sun.misc.Launcher$AppClassLoader@501d5ebc > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:105) > at > org.apache.ignite.marshaller.AbstractMarshaller.unmarshal(AbstractMarshaller.java:68) > at > org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:409) > at > org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1094) > at > org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1776) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:811) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$1500(GridIoManager.java:106) > at > org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:774) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.io.InvalidClassException: > org.apache.ignite.examples.computegrid.montecarlo.CreditRiskExample$2; local > class incompatible: stream classdesc serialVersionUID = 1895801581034216497, > local class serialVersionUID = 9086725335444863242 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) > at > org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.readExternal(GridClosureProcessor.java:1808) > at > java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:102) > ... 10 more > {noformat} > There is exception in the remote (second) node console: > {noformat} > [18:32:50,466][ERROR][ignite-#7%pub-null%][GridJobWorker] Failed to > initialize job [jobId=6e238417051-b4bcdc8a-d015-4add-a605-63dff152b030, > ses=GridJobSessionImpl [ses=GridTaskSessionImpl > [taskName=o.a.i.examples.computegrid.montecarlo.CreditRiskExample$2, > dep=GridDeployment [ts=1445009556695, depMode=SHARED, > clsLdr=sun.misc.Launcher$AppClassLoader@501d5ebc, > clsLdrId=35ff7417051-b4bcdc8a-d015-4add-a605-63dff152b030, userVer=0, > loc=true, sampleClsName=java.util.HashMap, pendingUndeploy=false, > undeployed=false, usage=1], > taskClsName=o.a.i.examples.computegrid.montecarlo.CreditRiskExample$2, > sesId=4e238417051-f0bdd2e0-2e1b-40c9-b395-5adeea3abb80, > startTime=1445009570408, endTime=9223372036854775807, > taskNodeId=f0bdd2e0-2e1b-40c9-b395-5adeea3abb80, > clsLdr=sun.misc.Launcher$AppClassLoader@501d5ebc, closed=false, cpSpi=null, > failSpi=null, loadSpi=null, usage=1, fullSup=false, > subjId=f0bdd2e0-2e1b-40c9-b395-5adeea3abb80, mapFut=IgniteFuture > [orig=GridFutureAdapter [resFlag=0, res=null, startTime=1445009570454, > endTime=0, ignoreInterrupts=false, lsnr=null, state=INIT]]], > jobId=6e238417051-b4bcdc8a-d015-4add-a605-63dff152b030]] > class org.apache.ignite.IgniteCheckedException: Failed to deserialize object > with given class loader: sun.misc.Launcher$AppClassLoader@501d5ebc > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:105) > at > org.apache.ignite.marshaller.AbstractMarshaller.unmarshal(AbstractMarshaller.java:68) > at > org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:409) > at > org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1094) > at > org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1776) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:811) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$1500(GridIoManager.java:106) > at > org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:774) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.io.InvalidClassException: > org.apache.ignite.examples.computegrid.montecarlo.CreditRiskExample$2; local > class incompatible: stream classdesc serialVersionUID = 1895801581034216497, > local class serialVersionUID = 9086725335444863242 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) > at > org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.readExternal(GridClosureProcessor.java:1808) > at > java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshaller.java:102) > ... 10 more > {noformat} > --------------------------------------------- > EXPECTED RESULT > --------------------------------------------- > Example is passed without any exceptions > -------------------------------------------- > ADDITIONAL INFO > -------------------------------------------- > # Isn't reproducible for optimized and portable marshallers > # Isn't reproducible for cluster were all jvm are identical > # Reproducible, at least, for clusters with next list of jvm: > ## oracle-java-7 + ibm-java-7 > ## oracle-java-7 + openjdk-7 > ## oracle-java-7 + oracle-java-8 > -- This message was sent by Atlassian JIRA (v6.3.4#6332)