Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-1526

IBM JDK is not fully supported by the platfrom

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 1.5.0.final
    • None
    • None

    Description

      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

      [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)
      

      3) Oracle JVM based server node fails to connect to IBM server node producing the stack trace below. Tested with JDK and Portable marshallers.

      [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
      

      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.:

      "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)
      

      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)

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dmagda Denis A. Magda
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: