DSE SOLR javax.management.InstanceAlreadyExistsException

时间:2013-12-10 23:29:46

标签: solr cassandra datastax-enterprise datastax

我们刚刚发布了对DSE SOLR集群架构的更改。我们尝试在此节点上重新加载核心,但无法加载核心。然后我们耗尽并停止了DSE。在启动时,我们得到以下异常:

 INFO 23:25:52,673 Configuring index commit log for linkcurrent_search.content
java.lang.RuntimeException: javax.management.InstanceAlreadyExistsException: com.datastax.    bdp:type=CommitLog-linkcurrent_search.content
    at com.datastax.bdp.util.JMXUtil.registerMBean(JMXUtil.java:36)
    at com.datastax.bdp.cassandra.index.solr.AbstractSolrSecondaryIndex.init(AbstractSolrSecondaryIndex.    java:183)
    at org.apache.cassandra.db.index.SecondaryIndexManager.addIndexedColumn(SecondaryIndexManager.    java:267)
    at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:271)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:378)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:350)
    at org.apache.cassandra.db.Table.initCf(Table.java:329)
    at org.apache.cassandra.db.Table.<init>(Table.java:272)
    at org.apache.cassandra.db.Table.open(Table.java:109)
    at org.apache.cassandra.db.Table.open(Table.java:87)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:276)
    at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:351)
    at org.apache.cassandra.service.CassandraDaemon.init(CassandraDaemon.java:381)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:212)
Caused by: javax.management.InstanceAlreadyExistsException: com.datastax.bdp:type=CommitLog-    linkcurrent_search.content
    at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(    DefaultMBeanServerInterceptor.java:1898)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(    DefaultMBeanServerInterceptor.java:966)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(    DefaultMBeanServerInterceptor.java:900)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor    .java:324)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
    at com.datastax.bdp.util.JMXUtil.registerMBean(JMXUtil.java:32)
    ... 17 more
Cannot load daemon

更新

尝试将solr.data目录移开,看看问题是否存在,但没有帮助。

我也尝试过移动commitlog目录,但没有骰子。

如果我禁用SOLR,节点启动。

1 个答案:

答案 0 :(得分:4)

升级到最新的DSE 3.2.x时,在添加新列/字段时会出现冲突,因为实现Solr二级索引的类的名称在不同版本之间发生了变化:这导致了上述问题。

DSE 3.2.2将解决此问题,但与此同时,您可以按照指定的步骤进行操作:

  1. 在禁用Solr的情况下重新启动节点。
  2. 通过CQLSH描述您的架构,并使用相关的Cassandra二级索引识别添加的列:您会注意到类名与已存在的索引不同。
  3. 删除每个新索引并使用完全相同的名称重新创建,但更改类名以匹配旧名称。
  4. 启用Solr重启,一切正常。