Почему ignite не может десериализовать объект GridClosureProcessor? - PullRequest
0 голосов
/ 09 апреля 2019

Я знаю, что подобный стек был опубликован другими. Мой вопрос «похоже, что Ignite пытается десериализовать GridClosureProcessor (или замыкание из него?). Если это так, почему он это делает? MyCallable упоминается сверху (на самом деле не в стеке).

В этом пути к коду не происходит размещения кэша, если они не являются внутренними. Я упоминаю об этом из-за комментария к другому сообщению о том, что «Неизвестная пара» может быть вызвана неправильным типом кэша.

Я сосредотачиваюсь на

Не удалось десериализовать объект [TypeName = org.apache.ignite.internal.processors.closure.GridClosureProcessor $ С2]

Вот и все остальное.

[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 = истина, sampleClsName = o.a.i.i.processors.cache.GridCacheProcessor $ RemovedItemsCleanupTask $ 1, pendingUndeploy = 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 = ноль, failSpi = ноль, loadSpi = ноль, использование = 1, fullSup = false, внутренний = ложь, topPred = ноль, subjId = 7ff6a786-9d4d-43d8-91a0-70225c5e3a4a, mapFut = IgniteFuture [orig = GridFutureAdapter [ignoreInterrupts = false, состояние = 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 $ С2] в 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) at java.lang.Thread.run (Thread.java:748) Причина: класс org.apache.ignite.binary.BinaryObjectException: не удалось десериализовать объект [TypeName = org.apache.ignite.internal.processors.closure.GridClosureProcessor $ С2] в 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 классов, вызванных: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.BinaryOjects.Java: 1799) в org.apache.ignite.internal.binary.BinaryReaderExImpl.readObject (BinaryReaderExImpl.java:1329) в org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2.readBinary (GridClosureProcessor.java:)в 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 at)org.apache.ignite.internal.MarshallerContextImpl.getClass (MarshallerContextImpl.java:335) в org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId (BinaryContext.java:687) ... еще 22 * ​​

1016 * обновление - хотел отметить, что происходит новое развертывание.Там нет старых файлов или ничего не сохранилось вокруг.Все классы либо извлекаются из четных, либо заново скомпилированы.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
    }
}

1 Ответ

1 голос
/ 09 апреля 2019

Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException: Unknown pair [platformId=0, typeId=-1409390795]

Похоже, вы потеряли свой кеш маршаллера (marshaller/ dir).

Вы можете сделать ignite.marshaller().marshal(new WhateverTypeIsCausingThis()); один раз, чтобы устранить эту ошибку.

...