You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Sergei Ryzhov (Jira)" <ji...@apache.org> on 2021/09/01 05:27:00 UTC

[jira] [Commented] (IGNITE-14725) Cluster crashes when the client has a higher byte code version than server

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

Sergei Ryzhov commented on IGNITE-14725:
----------------------------------------

LGTM

> Cluster crashes when the client has a higher byte code version than server
> --------------------------------------------------------------------------
>
>                 Key: IGNITE-14725
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14725
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.10
>            Reporter: Surkov Aleksandr
>            Assignee: Nikolay Izhikov
>            Priority: Blocker
>             Fix For: 2.11
>
>         Attachments: different-java.zip
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> When the Java version on the server does not support the byte code that the client node sends to server, then some operations(Scan Queries) can lead to the fall of the cluster.
> Steps to reproduce the situation:
> 1. Start the server using Java 8(org.apache.ignite.SimpleServer#main)
> 2. Start the client using Java 11(target byte code version 11), which will run ScanQuery(org.apache.ignite.ThickClient#main)
> Reproducer is attached. Logs from the server and client are located in the errors folder.
> {code:java}
> SEVERE: Failed to process message [senderId=53c4266d-8b74-480b-bbf5-670bd94c4192, msg=GridCacheQueryRequest [id=13, cacheName=cache_scan, type=SCAN, fields=false, clause=null, limit=0, clsName=null, keyValFilter=null, rdc=null, trans=null, pageSize=1024, incBackups=false, cancel=false, incMeta=false, all=false, keepBinary=false, subjId=53c4266d-8b74-480b-bbf5-670bd94c4192, taskHash=0, part=-1, topVer=AffinityTopologyVersion [topVer=2, minorTopVer=1], mvccSnapshot=null, flags=0, super=GridCacheIdMessage [cacheId=29045018, super=GridCacheMessage [msgId=14, depInfo=GridDeploymentInfoBean [clsLdrId=74845d87971-53c4266d-8b74-480b-bbf5-670bd94c4192, depMode=SHARED, userVer=0, locDepOwner=false, participants=null], lastAffChangedTopVer=AffinityTopologyVersion [topVer=2, minorTopVer=1], err=null, skipPrepare=false]]]]
> java.lang.UnsupportedClassVersionError: org/apache/ignite/ThickClient has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
> 	at java.lang.ClassLoader.defineClass1(Native Method)
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
> 	at org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader.findClass(GridDeploymentClassLoader.java:543)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
> 	at org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader.loadClass(GridDeploymentClassLoader.java:461)
> 	at java.lang.Class.forName0(Native Method)
> 	at java.lang.Class.forName(Class.java:348)
> 	at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9014)
> 	at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8945)
> 	at org.apache.ignite.internal.managers.deployment.GridDeployment.deployedClass(GridDeployment.java:460)
> 	at org.apache.ignite.internal.managers.deployment.GridDeploymentPerVersionStore.getDeployment(GridDeploymentPerVersionStore.java:441)
> 	at org.apache.ignite.internal.managers.deployment.GridDeploymentManager.getGlobalDeployment(GridDeploymentManager.java:517)
> 	at org.apache.ignite.internal.processors.cache.GridCacheDeploymentManager$CacheClassLoader.tryToloadClassFromCacheDep(GridCacheDeploymentManager.java:816)
> 	at org.apache.ignite.internal.processors.cache.GridCacheDeploymentManager$CacheClassLoader.findClass(GridCacheDeploymentManager.java:783)
> 	at org.apache.ignite.internal.processors.cache.GridCacheDeploymentManager$CacheClassLoader.loadClass(GridCacheDeploymentManager.java:760)
> 	at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9012)
> 	at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8957)
> 	at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:376)
> 	at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:693)
> 	at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1641)
> 	at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1578)
> 	at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1555)
> 	at org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:383)
> 	at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:907)
> 	at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:703)
> 	at org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:188)
> 	at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:932)
> 	at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1769)
> 	at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1721)
> 	at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
> 	at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:304)
> 	at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:101)
> 	at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:80)
> 	at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10490)
> 	at org.apache.ignite.internal.processors.cache.query.GridCacheQueryRequest.finishUnmarshal(GridCacheQueryRequest.java:383)
> 	at org.apache.ignite.internal.processors.cache.GridCacheIoManager.unmarshall(GridCacheIoManager.java:1625)
> 	at org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:586)
> 	at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> 	at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> 	at org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
> 	at org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
> 	at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1908)
> 	at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1529)
> 	at org.apache.ignite.internal.managers.communication.GridIoManager.access$5300(GridIoManager.java:242)
> 	at org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1422)
> 	at org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> 	at java.lang.Thread.run(Thread.java:748)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)