阅读 243

JanusGraph问题笔记-本地配置不生效?

问题(编号:E07)

接上次,用hbase+solr配置启动打开graph图,graph = JanusGraphFactory.open之后 先是一个疏忽导致的异常,Could not instantiate implementation: org.janusgraph.diskstorage.solr.SolrIndex:

报错提示是未识别的模式Unrecognized mode: manager93.bigdata,检查发现这是我误填写的一个solr服务域名,顺藤摸瓜找到这个配置是index.search.solr.mode将其更改为cloud

然后诡异的问题就出现了:重开graph仍报错Unrecognized mode: manager93.bigdata,但本地配置文件确实改了,哪怕我把整个JanusGraph文件夹及配置文件删除,重新解压写上正确的配置都不管用

解决方案

定位

仔细看了一下报错日志:

(扶额!)错误虽然是一样的错,但前面的警告信息说明了问题:Local setting index.search.solr.mode=cloud (Type: GLOBAL_OFFLINE) is overridden by globally managed value (manager93.bigdata),是本地配置被全局配置覆盖了。

WARN WARN WARN 警告也是要看的!

解法

这里是初始化图的时候报错,图中并没有数据(因此可以删库)。但提示本地配置被全局配置覆盖了,那么把之前(错误的)全局配置删除即可。因为整个JanusGraph文件夹都是我重装过的,那么这个配置显然是写在hbase中。进入hbase shell查看,果然存在janusgraph_solr这张表,drop掉这张表,再去启动,问题解决。

第一次报错时图虽然未创建成功,但hbase中的表已创建了!

顺道了解一下配置级别:

JanusGraph的配置级别

每个配置项都有一个特定的可变级别,该可变级别决定了在第一次打开数据库后是否以及如何对其进行修改。以下清单描述了可变级别:

  • FIXED:打开数据库后,就无法在数据库的整个生命周期内更改这些配置选项
  • GLOBAL_OFFLINE:当所有实例关闭时,在整个数据库集群更改这些选项,需要重启
  • GLOBAL:这些选项只能在整个数据库集群中全局更改
  • MASKABLE:这些选项是全局的,但可以被本地配置文件覆盖
  • LOCAL:这些选项只能通过本地配置文件提供

以上非本地配置变更方法详参官网。

JanusGraph问题与解决系列目录:

JanusGraph问题笔记-目录(文末)

JanusGraph问题笔记(二):SchemaViolationException

JanusGraph问题笔记(三):NoNodeException(hbase)

JanusGraph问题笔记(四):ResponseException(ES)

JanusGraph问题笔记(五):本地配置更改未生效?