首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.CacheEntryFilterApply崩溃

Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.CacheEntryFilterApply崩溃
EN

Stack Overflow用户
提问于 2019-10-30 19:24:35
回答 1查看 200关注 0票数 1

我使用的是Ignite.NET 2.7.6,有时它会崩溃

( Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.CacheEntryFilterApply(long

memPtr)

因为var t、==空和t.Invoke(流)抛出NullPointerException。

我做错了什么来引发这个问题?

在上述方法中添加了:stream.ReadLong()返回0,因此表达式

_ignite.HandleRegistry.Get(stream.ReadLong())

获取id == 0的过滤器持有人,该id看起来是无效的。

可能的解决方案:我使用这样的二进制过滤器创建扫描查询:

代码语言:javascript
复制
    cursor = cache.WithKeepBinary.Query(new ScanQuery(myFilter))

稍后,我在一个单独的线程中使用这个游标来收集结果:从其中获取一个枚举数并遍历对象。

但是,我有一个逻辑错误,可能导致游标被释放时的情况,但是相应的迭代器调用MoveNext或Current。在这种情况下,不会抛出任何异常,并调用上面提到的JNI处理程序,从而导致异常,从而导致Ignite的未定义行为。

我会看看这个问题是否解决了,并将报告结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-31 14:52:42

我可以确认,如果从多个线程中使用IQueryCursor<K, V>实例,并且一个线程处理它,而另一个线程枚举它,则竞争条件是可能的。

查询游标不是线程安全的,它们应该从单个线程中使用.

入场券:https://issues.apache.org/jira/browse/IGNITE-12348

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58632391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档