JanusGraph的索引因为要同步不同实例及不同后端的数据,因此不是实时能够完成的,视配置,网络和数据量不同,建立/生效索引通常需要一段时间,这也是为什么创建索引时会创建wait()的原因。

在实践中,我们经常遇到timeout()异常的出现,这一方面有数据量,网络,配置的原因,另外一方面,如果系统中有未关闭的事务或者无效的实例,均会导致索引创建阻塞,不断等待,最后超时。下面是我们团队在使用JansuGraph总结出的,解决索引超时的实践,希望对后来者有所帮助。

自身Bug

JanusGraph现在发布的版本0.1.1/0.1.0中存在一个bug,也即如果将已经创建的属性key加入新创建的索引中,索引状态始终保持在INSTLLED,不会切换到REGISTERED状态,该问题在github上有,最为简单的解决方案是升级JansuGraph到主干。0.2.0的发布时间尚未确定。

存在没有关闭的Transaction

如果图中存在有没有关系的Transaction,则索引状态不会变更,虽然在官方文档中提到了使用:
graph.tx().rollback()
 
但该方法只能关闭当前事务,对系统中其他打开的事务无效,可以使用下面的语句替换:

for(i=;i<graph.getOpenTransactions().size();i++) {graph.getOpenTransactions().getAt(i).rollback()}

存在幽灵实例

使用下面的语句查询:
mgmt = graph.openManagement()
mgmt.getOpenInstances();
mgmt.commit();
使用下面的语句关闭:
mgmt = graph.openManagement();
ids = mgmt.getOpenInstances();
for(String id : ids){if(!id.contains("(")){mgmt.forceCloseInstance(id)}};
mgmt.commit();

最新文章

  1. Xamarin.IOS之多视图
  2. BizTalk动手实验(十)业务活动监控(BAM)演示
  3. BZOJ3809: Gty的二逼妹子序列
  4. armp启动
  5. A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning
  6. C#中嵌入互操作类型的含义
  7. 【JSP】让HTML和JSP页面不缓存从Web服务器上重新获取页面
  8. sql语句收集
  9. Android Activity和Intent机制学习笔记
  10. http报错之return error code:401 unauthorized
  11. FZU 2112 Tickets
  12. htm语言的语法基础及规则
  13. Linux系列教程(十六)——Linux权限管理之ACL权限
  14. SSH中post提交表单action中文乱码问题
  15. 如何彻底关闭windows defender
  16. PLSQL程序编写杂烦数据表信息编写批量排版
  17. dom4j创建和解析xml文档
  18. 项目sql统计
  19. zzw_rsync命令中的/的作用
  20. Eclipse的一些常用的快捷键

热门文章

  1. Atom | 编辑器Atom的使用小结
  2. java中interface的完整表述
  3. Manthan, Codefest 16 G. Yash And Trees dfs序+线段树+bitset
  4. NServiceBus入门:发布事件(Introduction to NServiceBus: Publishing events)
  5. Jquery 一次处理多个ajax请求的代码
  6. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段
  7. Quartz_TimeJob例子(C#)
  8. synchronized-锁重入
  9. Foreach控件使用
  10. 流畅的python第十五章上下文管理器和else块学习记录