• 解决Janusgraph索引状态不变更的问题


    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=0;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();
  • 相关阅读:
    【Ubuntu】Ubuntu使用root登录
    【Ubuntu】在Ubuntu 12.04 LTS上安装JDK6
    2012/12/18 水曜日 感怀
    【Ubuntu】Ubuntu Java aptget安装配置
    GRUB,分区,menu.ls,(hd0,1)【转载】
    【ExtJS】错误:this.config[...].width为空或不是对象
    【Ubuntu】Ubuntu常用文件操作命令
    Win7 64bit OS 安装64bit JDK后 不能安装Spket IDE
    IE中控制焦点(asp.net)
    mac os里各种启动参数的含义
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/8398887.html
Copyright © 2020-2023  润新知