Почему cacheLoadOnlyStoreAdapter выбрасывает NPE во время загрузки? - PullRequest
0 голосов
/ 02 апреля 2019

Мы перешли с 2.4.0 на 2.7.0. Что может вызвать это? Я не могу исключить проблему в нашем коде, но мы не в стеке.

22: 39: 36.270 [mgmt- # 66] ОШИБКА o.a.i.i.p.task.GridTaskWorker - Ошибка получить политику результатов удаленного задания для результата из Метод ComputeTask.result (..) (не выполнит всю задачу): GridJobResultImpl [job = C2 [c = LoadCacheJobV2 [keepBinary = false]], сиб = GridJobSiblingImpl [SesId = 6461c7cd961-d4d7605d-33c7-4941-84bc-f6eca074593f, JobId = 7461c7cd961-d4d7605d-33c7-4941-84bc-f6eca074593f, nodeId = 503c524c-c53a-4f98-aadd-4c95ac2b168b, isJobDone = false], jobCtx = GridJobContextImpl [JobId = 7461c7cd961-d4d7605d-33c7-4941-84bc-f6eca074593f, timeoutObj = null, attrs = {}], node = TcpDiscoveryNode [id = 503c524c-c53a-4f98-aadd-4c95ac2b168b, addrs = [127.0.0.1, 172.17.0.2], sockAddrs = [/ 127.0.0.1:47500, / 172.17.0.2:47500], discPort = 47500, order = 1, intOrder = 1, lastExchangeTime = 1554182314332, loc = false, ver = 2.4.0 # 20180305-sha1: aa342270, isClient = false], ex = класс o.a.i.IgniteException: null, hasRes = true, isCancelled = false, isOccupied = true] org.apache.ignite.IgniteException: удаленное задание выполнено пользовательское исключение (переопределить или реализовать метод ComputeTask.result (..), если Вы хотели бы иметь автоматический переход на другой ресурс для этого исключения). на org.apache.ignite.compute.ComputeTaskAdapter.result (ComputeTaskAdapter.java:101) в org.apache.ignite.internal.processors.task.GridTaskWorker $ 5.apply (GridTaskWorker.java:1047) в org.apache.ignite.internal.processors.task.GridTaskWorker $ 5.apply (GridTaskWorker.java:1040) в org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader (IgniteUtils.java:6655) в org.apache.ignite.internal.processors.task.GridTaskWorker.result (GridTaskWorker.java:1040) в org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse (GridTaskWorker.java:858) в org.apache.ignite.internal.processors.task.GridTaskProcessor.processJobExecuteResponse (GridTaskProcessor.java:1077) в org.apache.ignite.internal.processors.task.GridTaskProcessor $ JobMessageListener.onMessage (GridTaskProcessor.java:1312) в 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.IgniteException: null в org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2.execute (GridClosureProcessor.java:1858) в org.apache.ignite.internal.processors.job.GridJobWorker $ 2.call (GridJobWorker.java:566) в org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader (IgniteUtils.java:6623) в org.apache.ignite.internal.processors.job.GridJobWorker.execute0 (GridJobWorker.java:560) в org.apache.ignite.internal.processors.job.GridJobWorker.body (GridJobWorker.java:489) в org.apache.ignite.internal.util.worker.GridWorker.run (GridWorker.java:110) в org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest (GridJobProcessor.java:1123) в org.apache.ignite.internal.processors.job.GridJobProcessor $ JobExecutionListener.onMessage (GridJobProcessor.java:1921) ... 7 общих кадров опущено Вызывается: org.apache.ignite.IgniteException: null в org.apache.ignite.internal.util.IgniteUtils.convertException (IgniteUtils.java:980)в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ LoadCacheJob.localExecute (GridCacheAdapter.java:5525) в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ LoadCacheJobV2.localExecute (GridCacheAdapter.java:5569) в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ TopologyVersionAwareJob.execute (GridCacheAdapter.java:6184) на org.apache.ignite.compute.ComputeJobAdapter.call (ComputeJobAdapter.java:132) в org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2.execute (GridClosureProcessor.java:1855)

... 14 общих кадров опущено Вызывается: org.apache.ignite.IgniteCheckedException: null в org.apache.ignite.internal.util.IgniteUtils.cast (IgniteUtils.java:7244) в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.sessionEnd0 (GridCacheStoreManagerAdapter.java:943) в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache (GridCacheStoreManagerAdapter.java:549) в org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter.localLoadCache (GridDhtCacheAdapter.java:608) в org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.localLoadCache (GridCacheProxyImpl.java:217) в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ LoadCacheJob.localExecute (GridCacheAdapter.java:5520)

... 18 общих кадров опущены. Причина: java.lang.NullPointerException: null в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter $ SessionData.access $ 900 (GridCacheStoreManagerAdapter.java:964) в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.sessionEnd0 (GridCacheStoreManagerAdapter.java:937)

... 22 общих кадра опущены 22: 39: 36.293 [пул-3-нить-1] ОШИБКА c.b.a.c.c.i.cache.CeresCacheManager - возникла проблема с загрузкой данных для кэша ceres-daily-2019-02-27. Проблема: () java.lang.NullPointerException: null в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter $ SessionData.access $ 900 (GridCacheStoreManagerAdapter.java:964) в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.sessionEnd0 (GridCacheStoreManagerAdapter.java:937) в org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache (GridCacheStoreManagerAdapter.java:549) в org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter.localLoadCache (GridDhtCacheAdapter.java:608) в org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.localLoadCache (GridCacheProxyImpl.java:217) в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ LoadCacheJob.localExecute (GridCacheAdapter.java:5520) в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ LoadCacheJobV2.localExecute (GridCacheAdapter.java:5569) в org.apache.ignite.internal.processors.cache.GridCacheAdapter $ TopologyVersionAwareJob.execute (GridCacheAdapter.java:6184) на org.apache.ignite.compute.ComputeJobAdapter.call (ComputeJobAdapter.java:132) в org.apache.ignite.internal.processors.closure.GridClosureProcessor $ C2.execute (GridClosureProcessor.java:1855) в org.apache.ignite.internal.processors.job.GridJobWorker $ 2.call (GridJobWorker.java:566) в org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader (IgniteUtils.java:6623) в org.apache.ignite.internal.processors.job.GridJobWorker.execute0 (GridJobWorker.java:560) в org.apache.ignite.internal.processors.job.GridJobWorker.body (GridJobWorker.java:489) в org.apache.ignite.internal.util.worker.GridWorker.run (GridWorker.java:110) в org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest (GridJobProcessor.java:1123)в org.apache.ignite.internal.processors.job.GridJobProcessor $ JobExecutionListener.onMessage (GridJobProcessor.java:1921) в org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener (GridIogg15).apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0 (GridIoManager.java:1183) в org.apache.ignite.internal.managers.communication.GridIoManager.access $ 4200 (GridIoManager.java:126 или org. at.ignite.internal.managers.communication.GridIoManager $ 9.run (GridIoManager.java:1090) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThecPecolol.java: 624) at java.lang.Thread.run (Thread.java:748)

public class XYZLoader
    extends CacheLoadOnlyStoreAdapter<XYZKey, byte[], XYZRecord>
    implements ComputeJob, Serializable {

    public XYZLoader(...) {

        reconfigureCacheLoadOnlyStoreAdapter(gridNodePhysicalThreadCount, externalParallelism);

    }

    private void reconfigureCacheLoadOnlyStoreAdapter(int gridNodePhysicalThreadCount, int externalParallelism) {
        int physicalThreadCount = ...

        this.setBatchSize(...);
        this.setBatchQueueSize(...);
        this.setThreadsCount(...);
    }

    int[] getLocalPartitions(Ignite ignite) {
        //...
        return ...;
    }

    @Override
    protected Iterator<XYZRecord> inputIterator(@Nullable Object... args) throws CacheLoaderException {
        int[] parts = getLocalPartitions(ignite);
        IgniteCluster cluster = ignite.cluster();
        ClusterNode localNode = cluster.localNode();
        int partitionCount = ignite.affinity(dataloadDescriptor.cacheName).partitions();

        Iterator<XYZRecord> reader = new XYZReader(parts, ...);

        iteratorFinishedFlag = false;

        return new Iterator<XYZRecord>() {
            // wrap inner iterator reader here..
        };
    }

    protected IgniteBiTuple<XYZKey, byte[]> parse(XYZRecord rec, @Nullable Object... args) {
        // parsing foo...
        return record;
    }

    @IgniteInstanceResource
    public void setIgnite(Ignite ignite) {
        this.ignite = ignite;
    }

    @Override // ComputeJob
    public void cancel() {
        throw new RuntimeException("Not implemented");
    }

    @Override // ComputeJob
    public Object execute() throws IgniteException {
        throw new RuntimeException("Not implemented");
    }

    @TaskSessionResource
    public void setTaskSession(ComputeTaskSession taskSes) {
        ComputeTaskSession ses = taskSes;
        logger.info(... ses);
    }
}

1 Ответ

0 голосов
/ 02 апреля 2019

Готов поспорить, что вы забыли вызвать super.method () где-то в вашей реализации CacheStore, что приведет к частичной инициализации базовых структур данных. В loadCache () или loadFromStore () возможно.

...