我知道其他人也发布了类似的堆栈。我的问题是“看来Ignite试图反序列化GridClosureProcessor(或从其关闭?)。如果是这样,为什么要这样做呢?我试图从根本上引起这个问题,但是除了堆栈中没有我的代码,顶部提到了MyCallable(实际上不在堆栈中)。
除非在内部,否则此代码路径中不会发生任何缓存放置。我之所以这样说,是因为在另一则帖子中评论说“未知对”可能是由错误类型的缓存放置引起的。
我专注于
反序列化对象失败 [typeName = org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2]
剩下的就是这里。
[2019-04-08 22:20:23,724] [错误] [pub-#63] [GridJobWorker]无法执行 初始化工作 [jobId = 800890ff961-7ff6a786-9d4d-43d8-91a0-70225c5e3a4a, ses = GridJobSessionImpl [ses = GridTaskSessionImpl [taskName = com.obfucorp.aa.project.core.jobs.MyCallable, dep = GridDeployment [ts = 1554761996013,depMode = SHARED, clsLdr=sun.misc.Launcher$AppClassLoader@764c12b6, clsLdrId = 730290ff961-8d93b961-09f2-48c3-bd2f-49db31aae61e,userVer = 0, loc = true, sampleClsName = o.a.i.i.processors.cache.GridCacheProcessor $ RemovedItemsCleanupTask $ 1, endingUndeploy = false,undeployed = false,用法= 1, taskClsName = com.obfucorp.aa.project.core.jobs.MyCallable, sesId = 700890ff961-7ff6a786-9d4d-43d8-91a0-70225c5e3a4a, startTime = 1554762023663,endTime = 9223372036854775807, taskNodeId = 7ff6a786-9d4d-43d8-91a0-70225c5e3a4a, clsLdr = sun.misc.Launcher $ AppClassLoader @ 764c12b6,closed = false, cpSpi = null,failSpi = null,loadSpi = null,用法= 1,fullSup = false, internal = false,topPred = null, subjId = 7ff6a786-9d4d-43d8-91a0-70225c5e3a4a,mapFut = IgniteFuture [orig = GridFutureAdapter [ignoreInterrupts = false,state = INIT,res = null, hash = 314803578]],execName = null], jobId = 800890ff961-7ff6a786-9d4d-43d8-91a0-70225c5e3a4a]] class org.apache.ignite.IgniteCheckedException:无法反序列化对象 [typeName = org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2] 在 org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9908) 在 org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:438) 在 org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1117) 在 org.apache.ignite.internal.processors.job.GridJobProcessor $ JobExecutionListener.onMessage(GridJobProcessor.java:1921) 在 org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1555) 在 org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1183) 在 org.apache.ignite.internal.managers.communication.GridIoManager.access $ 4200(GridIoManager.java:126) 在 org.apache.ignite.internal.managers.communication.GridIoManager $ 9.run(GridIoManager.java:1090) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)引起于:class org.apache.ignite.binary.BinaryObjectException:无法反序列化 宾语 [typeName = org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2] 在 org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:875) 在 org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1762) 在 org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714) 在 org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:310) 在 org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:99) 在 org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82) 在 org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9902) ... 10更多原因:类 org.apache.ignite.binary.BinaryInvalidTypeException:未知对 [platformId = 0,typeId = -1409390795]位于 org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:696) 在 org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1755) 在 org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714) 在 org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1799) 在 org.apache.ignite.internal.binary.BinaryReaderExImpl.readObject(BinaryReaderExImpl.java:1329) 在 org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2.readBinary(GridClosureProcessor.java:1872) 在 org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:834) ... 16更多原因:java.lang.ClassNotFoundException:未知对 [platformId = 0,typeId = -1409390795]位于 org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:385) 在 org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:335) 在 org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:687) ...另外22个
更新-要注意,这是一个全新的部署。没有旧文件或周围没有任何东西。所有类要么从偶数中提取,要么从新编译的中提取。 ty。
帕维尔,这是(Scala)代码(已编辑)
object MyCallable {
type FooList = Array[Foo]
}
class MyCallable(cacheName: String) extends IgniteCallable[FooList] with Serializable with LazyLogging {
@IgniteInstanceResource
private var ignite: Ignite = _
override def call(): FooList = {
logger.debug("callable called.");
val fooCache = ignite.getOrCreateCache[String, Foo](cacheName)
val qry = new ScanQuery[String, Foo]()
qry.setLocal(true)
val cursor = fooCache.query(qry)
val ret = cursor.iterator().asScala.map(e => e.getValue).toArray
logger.info("load status array: {}", ret.mkString)
return ret
}
@IgniteInstanceResource
def setIgnite(ignite: Ignite): Unit = {
this.ignite = ignite
}
}
答案 0 :(得分:1)
Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException: Unknown pair [platformId=0, typeId=-1409390795]
似乎您丢失了编组缓存(marshaller/
目录)。
您一次可以执行ignite.marshaller().marshal(new WhateverTypeIsCausingThis());
来使此错误消失。