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

Denis Magda commented on IGNITE-1526:
-------------------------------------

Val,

Yes, according to the Java docs it will fix all unpredictable 
{{InvalidClassExceptions}} caused by missing {{serialVerisionUID}} and we 
should be able to use JdkMarshaller across JDKs from different vendors, at 
least until we face with something else :)

> IBM JDK is not fully supported by the platfrom
> ----------------------------------------------
>
>                 Key: IGNITE-1526
>                 URL: https://issues.apache.org/jira/browse/IGNITE-1526
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Denis Magda
>            Assignee: Andrey Gura
>            Priority: Blocker
>             Fix For: ignite-1.5
>
>
> There are several issue related to IBM JDK.
> 1) It's not possible to compile the platform using IBM JDK ver 1.7;
> 2) Besides of the fact that two IBM nodes can connect to each other some 
> functionality still doesn't work. As an example 
> {{CacheClientPortablePutGetExample}} fails with the following stack trace
> {noformat}
> [14:38:56,930][ERROR][grid-nio-worker-0-#26%null%][TcpCommunicationSpi] 
> Caught unhandled exception in NIO worker thread (restart the node).
> class org.apache.ignite.IgniteException: Invalid field type: 0
>       at 
> org.gridgain.grid.internal.communication.PortableDirectMessageReader.readRemovedField(PortableDirectMessageReader.java:670)
>       at 
> org.gridgain.grid.internal.communication.PortableDirectMessageReader.readFieldHeader(PortableDirectMessageReader.java:520)
>       at 
> org.gridgain.grid.internal.communication.PortableDirectMessageReader.readMessage(PortableDirectMessageReader.java:339)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoMessage.readFrom(GridIoMessage.java:248)
>       at 
> org.apache.ignite.internal.util.nio.GridDirectParser.decode(GridDirectParser.java:76)
>       at 
> org.apache.ignite.internal.util.nio.GridNioCodecFilter.onMessageReceived(GridNioCodecFilter.java:103)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:107)
>       at 
> org.apache.ignite.internal.util.nio.GridConnectionBytesVerifyFilter.onMessageReceived(GridConnectionBytesVerifyFilter.java:122)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:107)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onMessageReceived(GridNioServer.java:2078)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain.onMessageReceived(GridNioFilterChain.java:172)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$DirectNioClientWorker.processRead(GridNioServer.java:858)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeys(GridNioServer.java:1397)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:1339)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1223)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:108)
>       at java.lang.Thread.run(Thread.java:801)
> {noformat}
> 3) Oracle JVM based server node fails to connect to IBM server node producing 
> the stack trace below. Tested with JDK and Portable marshallers.
> {noformat}
> [13:47:33,935][SEVERE][tcp-disco-msg-worker-#2%null][TcpDiscoverySpi] Failed 
> to
> unmarshal discovery data for component: 0
> class org.apache.ignite.IgniteCheckedException: Failed to deserialize object 
> wit
> h given class loader: sun.misc.Launcher$AppClassLoader@56092666
>         at 
> org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshalle
> r.java:105)
>         at 
> org.apache.ignite.marshaller.AbstractMarshaller.unmarshal(AbstractMar
> shaller.java:68)
>         at 
> org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.onExchange(TcpDis
> coverySpi.java:1697)
>         at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.proc
> essNodeAddedMessage(ServerImpl.java:3258)
>         at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.proc
> essMessage(ServerImpl.java:1993)
>         at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerAdapter.b
> ody(ServerImpl.java:5206)
>         at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)
> Caused by: java.io.InvalidClassException: 
> org.apache.ignite.internal.util.lang.G
> ridFunc$38; local class incompatible: stream classdesc serialVersionUID = 
> -55433
> 49853748590486, local class serialVersionUID = -5664060422647374863
>         at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617)
>         at 
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:162
> 2)
>         at 
> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
>         at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
> 771)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at 
> org.apache.ignite.internal.processors.continuous.GridContinuousProces
> sor$DiscoveryDataItem.readExternal(GridContinuousProcessor.java:1455)
>         at 
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:183
> 7)
>         at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
> 796)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at 
> org.apache.ignite.internal.util.IgniteUtils.readList(IgniteUtils.java
> :5109)
>         at 
> org.apache.ignite.internal.util.IgniteUtils.readCollection(IgniteUtil
> s.java:1618)
>         at 
> org.apache.ignite.internal.processors.continuous.GridContinuousProces
> sor$DiscoveryData.readExternal(GridContinuousProcessor.java:1371)
>         at 
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:183
> 7)
>         at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
> 796)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at 
> org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal(JdkMarshalle
> r.java:102)
>         ... 6 more
> {noformat}
> 4) Oracle JVM based client node is partially connected to IBM server node. 
> The server node updates its topology while the client is hanging with the 
> stack trace below. Tested with JDK and Portable marshallers.:
> {noformat}
> "main" prio=6 tid=0x00000000001ee800 nid=0x1f44 waiting on condition 
> [0x00000000025ce000]
>    java.lang.Thread.State: WAITING (parking)
>       at sun.misc.Unsafe.park(Native Method)
>       - parking to wait for  <0x00000007d7ad4478> (a 
> java.util.concurrent.CountDownLatch$Sync)
>       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>       at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
>       at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
>       at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
>       at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236)
>       at 
> org.apache.ignite.spi.discovery.tcp.ClientImpl.spiStart(ClientImpl.java:252)
>       at 
> org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:1815)
>       at 
> org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:252)
>       at 
> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:666)
>       at 
> org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1485)
>       at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:908)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1617)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1484)
>       - locked <0x00000007d7bbb918> (a 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance)
>       at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:965)
>       at 
> org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:892)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:784)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:705)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:576)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:546)
>       at org.apache.ignite.Ignition.start(Ignition.java:346)
> {noformat}
> IBM SDK implements {{sun.misc.Unsafe}}. However there is no guarantee that it 
> works the same way Oracle's does.
> In all the test the following JDK versions were used:
> 1) IBM
> java version "1.7.0"
> Java(TM) SE Runtime Environment (build pwa6470sr8fp10-20141219_01(SR8 FP10))
> IBM J9 VM (build 2.6, JRE 1.7.0 Windows 7 amd64-64 Compressed References 
> 2014121
> 6_227497 (JIT enabled, AOT enabled)
> J9VM - R26_Java726_SR8_20141216_0955_B227497
> JIT  - r11.b07_20141003_74578.05
> GC   - R26_Java726_SR8_20141216_0955_B227497_CMPRSS
> J9CL - 20141216_227497)
> JCL - 20141217_01 based on Oracle jdk7u75-b12
> 2) Oracle
> java version "1.7.0_67"
> Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
> Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)



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

Reply via email to