Apache Ignite 客户端无法计算字符串键的哈希码

Posted

技术标签:

【中文标题】Apache Ignite 客户端无法计算字符串键的哈希码【英文标题】:Apache Ignite client is not able to compute hash code for string key 【发布时间】:2021-06-04 15:48:51 【问题描述】:

我正在使用 Apache Ignite 瘦客户端 (Apache.Ignite.dll 2.8.1) 使用字符串键创建缓存。当我尝试在缓存中插入记录时,我收到一个异常:

无法在 Apache.Ignite.Core.Impl.Binary.BinaryHashCodeUtils.GetComplexTypeHashCode[T](T val, Marshaller) 计算对象“dataservice:getdata:egd:viewmeta:positionfinancingdetail:653489822” 的哈希码Apache.Ignite.Core.Impl.Client.ClientFailoverSocket.GetPartition[TKey](TKey key, Int32 partitionCount, IDictionary2 keyConfiguration) at Apache.Ignite.Core.Impl.Client.ClientFailoverSocket.GetAffinitySocket[TKey](Int32 cacheId, TKey key) at Apache.Ignite.Core.Impl.Client.ClientFailoverSocket.DoOutInOpAffinity[T,TKey](ClientOp opId, Action1 writeAction, Func2 readFunc, Int32 cacheId, TKey key, Func3 errorFunc) 的沼泽,IDictionary2 affinityKeyFieldIds) at Apache.Ignite.Core.Impl.Binary.BinaryHashCodeUtils.GetHashCode[T](T val, Marshaller marsh, IDictionary2 affinityKeyFieldIds)。 Ignite.Core.Impl.Client.Cache.CacheClient2.DoOutInOpAffinity[T](ClientOp opId, TK key, TV val, Func2 readFunc) 在 Apache.Ignite.Core.Impl.Client.Cache.CacheClient2.Put(TK key, TV val) at HazelTree.DataService.Core.Caching.IgniteCacheTableClient.RegisterCache(String cacheName, Boolean isEmpty) in D:\projects\DataService\Core\Caching\IgniteCacheTableClient.cs:line 53 at HazelTree.DataService.Core.Caching.IgniteDataCache.DynamicCacheClient.<PutAllAsync>d__13.MoveNext() in D:\projects\DataService\Core\Caching\IgniteDataCache.cs:line 198 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at HazelTree.DataService.Core.Caching.IgniteDataCache.<GetOrAddAsync>d__9.MoveNext() in D:\projects\DataService\Core\Caching\IgniteDataCache.cs:line 70 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 在 HazelTree.DataService.Core.CacheDataNode.d__4。 D:\projects\DataService\Core\Nodes\CacheDataNode.cs:line 37 中的 MoveNext() *

如果我重新启动 ignite 服务器问题可能会不时消失,但它可能会在以后的重新启动过程中出现。不幸的是,我没有在 Apache.Ignite.Examples 中重现该问题。

这个问题有什么简单的根本原因吗? ignite 中的字符串键有什么限制吗? 也许这个问题在以后的版本中得到解决?

【问题讨论】:

【参考方案1】:

这是一个错误,这里是票:https://issues.apache.org/jira/browse/IGNITE-14826

将尽快修复并包含在upcoming 2.11 release中

【讨论】:

以上是关于Apache Ignite 客户端无法计算字符串键的哈希码的主要内容,如果未能解决你的问题,请参考以下文章

Apache Ignite 胖客户端 - 轻量级

Apache Ignite中大量相似性调用的有效组合

Apache Ignite Cache - 从值中获取密钥

Apache Ignite 索引性能

在命令行上运行 Apache Ignite 时创建 Ignite 组件失败

Apache Spark + Ignite 集群瘦客户端