当前位置: 首页 > 知识库问答 >
问题:

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

吕德业
2023-03-14

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

堆栈跟踪

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

共有1个答案

鲁鹏
2023-03-14

目前还没有办法禁止瘦客户机使用Ignite API连接到集群。我为此改进创建了一个JIRA票证:https://issues.apache.org/JIRA/browse/ignite-12237

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

 类似资料:
  • 我有一个正在运行的Ignite集群,并且我使用进行节点发现: 它工作得很好,我可以使用节点连接到这个集群。 null

  • 我正在尝试使用apache-spark读取和写入Ignite集群,我可以使用JDBC瘦客户机,但不是本机方法,正如几个spark+Ignite示例中提到的那样。 现在,所有的spark+ignite示例都启动了一个本地ignite集群,但我希望我的代码作为客户端连接到已经存在的集群。 完整代码:-(sparkDSLExample)函数无法使用thin连接ignite远程群集 示例-default.

  • 2)如果瘦客户机和服务器驻留在不同的主机上,将500个条目保存到两个缓存中需要大约4分钟,这看起来非常糟糕。 即使我们考虑到一些网络延迟,我也无法证明在case2(我们希望采用的实现模式)中这种显著的延迟是合理的。我想知道这是否与我的缓存配置有关,如下所示? 瘦客户端代码: }

  • 此外,特别是对于它得到的字段(检查case class[2]) 如果我将case类[2]中的所有字段都定义为String类型,那么一切都很好,但这不是我想要的。有没有一个简单的方法做这件事[3]? 参考文献 [3]我已经找到了这样做的方法,首先在DataFrame级别上定义列,然后将事情转换为Dataset(比如here或here或here),但我几乎可以肯定,这不是应该做的事情。我也很确定编码器

  • 我有两个节点ignite集群,在运行我的dropwizard配置文件中的java进程时,我给出了url作为 ,但它给出的错误为。 我尝试将url添加为 我的Java进程无法连接到ignite。有人能帮帮我吗?

  • 问题内容: 是否可以使用angularjs拦截器阻止请求? 问题答案: 在1.1.5及更高版本中,您可以使用配置对象的’timeout’属性。 从文档中: 超时– {number | Promise} –超时(以毫秒为单位),或承诺应在解决后中止请求。 简单的例子: