如何阻止Java瘦客户机请求,直到Ignite集群中的数据预加载完成

如何阻止Java瘦客户机请求,直到Ignite集群中的数据预加载完成,java,ignite,Java,Ignite,我们正在运行一个带有3个节点的ignite群集,该群集预加载来自第三方数据库的数据(使用自定义缓存存储)。当我们尝试使用java瘦客户机连接到集群时,如果请求在数据加载完成之前到达集群,则会出现未知对异常和一些不稳定的行为 在数据加载完成之前,我们是否可以阻止客户端请求(TCP套接字连接) 我尝试了不同的生命周期事件(NODE_START_COMPLETED),但没有成功 堆栈跟踪 Caused by: org.apache.ignite.binary.BinaryInvalidTypeExce

我们正在运行一个带有3个节点的ignite群集,该群集预加载来自第三方数据库的数据(使用自定义缓存存储)。当我们尝试使用java瘦客户机连接到集群时,如果请求在数据加载完成之前到达集群,则会出现未知对异常和一些不稳定的行为

在数据加载完成之前,我们是否可以阻止客户端请求(TCP套接字连接)
我尝试了不同的生命周期事件(NODE_START_COMPLETED),但没有成功

堆栈跟踪

Caused by: org.apache.ignite.binary.BinaryInvalidTypeException: Unknown pair [platformId=0, typeId=-845247802]
        at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:707)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
        at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:798)
        at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143)
        at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:177)
        at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:67)
        at org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:125)
        at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1773)
        at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1761)
        at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:573)
        at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.putAll(GridCacheStoreManagerAdapter.java:627)
        at org.apache.ignite.internal.processors.cache.transactions.IgniteTxAdapter.batchStoreCommit(IgniteTxAdapter.java:1507)
        at org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter.userCommit(IgniteTxLocalAdapter.java:589)
        at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.localFinish(GridNearTxLocal.java:3646)
        at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishFuture.doFinish(GridNearTxFinishFuture.java:475)
        ... 41 common frames omitted
Caused by: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=-845247802]
        at org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:394)
        at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:344)
        at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:698)
        ... 56 common frames omitted

目前没有办法禁止瘦客户机使用Ignite API连接到集群。我为此改进创建了一张JIRA罚单:


但是,未知对异常似乎不是由瘦客户机在错误的时间连接引起的。通常,这是由于工作路径中缺少
封送器
目录造成的。

您可以添加问题中的异常吗?添加了未知对异常的跟踪我们正在从DB预加载数据,预期将创建封送器目录。由于客户机请求甚至在加载记录之前就已被处理,因此我们最终出现了此错误。这也是我们在完成数据加载之前保留客户端请求的原因之一