c++ - 点燃 C++ : serialization class not found in cache store

标签 c++ ignite

我正在尝试使用缓存存储来实现持久性。我已经使用二进制类型模板实现了用户定义对象的序列化。但是仍然在 spring xml 中配置 cassandra 缓存存储时。我收到类似反序列化器未找到或类 ID 未找到预期的错误。我什至尝试过文档中可用的二进制配置,但它没有用。有人可以帮助解决这个问题。

错误代码:

> [21:46:12,349][SEVERE][main][GridDhtAtomicCache] <cachekey> Unexpected
> exception during cache update class
> org.apache.ignite.binary.BinaryObjectException: Failed resolve class
> for ID: -1516436005   at
> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:699)
>   at
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1491)
>   at
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
>   at
> org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:637)
>   at
> org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:142)
>   at
> org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinary(CacheObjectContext.java:272)
>   at
> org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:160)
>   at
> org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:147)
>   at
> org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1742)
>   at
> org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:566)
>   at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2507)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2479)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1881)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1721)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.mapSingle(GridNearAtomicAbstractUpdateFuture.java:263)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:494)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:436)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:208)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1236)
>   at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:671)
>   at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2276)
>   at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2253)
>   at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.put(IgniteCacheProxy.java:1375)
>   at
> org.apache.ignite.internal.processors.platform.cache.PlatformCache.processInStreamOutLong(PlatformCache.java:409)
>   at
> org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:61)
> Caused by: class org.apache.ignite.IgniteCheckedException: Class
> definition was not found at marshaller cache and local file.
> [id=-1516436005,
> file=/apache-ignite-fabric-1.9.0-bin/work/marshaller/-1516436005.classname]
>   at
> org.apache.ignite.internal.MarshallerContextImpl.className(MarshallerContextImpl.java:218)
>   at
> org.apache.ignite.internal.MarshallerContextAdapter.getClass(MarshallerContextAdapter.java:174)
>   at
> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:683)

最佳答案

如果您只有 C++ 类的定义,您可能需要在 CacheConfiguration 上设置 storeKeepBinary。另外,您可能想看看 this ticket ,因为 Cassandra 商店存在一些问题。它似乎处于“补丁可用”状态,因此修复似乎很快就会成为大师。

关于c++ - 点燃 C++ : serialization class not found in cache store,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903388/

相关文章:

java - 从 Docker 容器中的 Ignite 客户端连接到另一个 Docker 容器中的 Ignite 服务器问题

java - 点燃队列是否有一些方法来检查队列是否创建,就像缓存一样

ignite - Apache 点燃.Net 2.8.1 : Affinity collocation with QueryEntity

java - 引发扫描查询问题

c++ - Apple LLVM 6.0 预处理器神奇#if defined()

c++ - 数组和指针作为函数参数出现,只是作为声明

c++ - 奇怪的 "unsigned long long int"行为

python - Apache Ignite - 简单的 Python 示例

c++ - 具有默认参数的模板特化

c# - 将基于 mfc 对话框的 Windows 应用程序转换为基于 Web