【问题标题】:DSE SOLR javax.management.InstanceAlreadyExistsExceptionDSE SOLR javax.management.InstanceAlreadyExistsException
【发布时间】:2013-12-28 17:48:48
【问题描述】:

我们刚刚发布了对 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,节点启动。

【问题讨论】:

    标签: solr cassandra datastax-enterprise datastax


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果我在禁用 SOLR 的情况下启动它,它不会进入 Cassandra 数据中心吗?此外,该节点禁用了 vnode,但 Cassandra 数据中心中的节点启用了 vnode。我是否可以安全地将其带入该数据中心并在不丢失数据或不占用过多写入负载的情况下将其取出?
    • @RussBradberry 如果您使用的是 DseSimpleSnitch,您是对的,您不能这样做。您需要使用 PropertyFileSnitch(具有相同的数据中心名称),以便在更改节点类型时不会更改 DC 名称。但是,如果您有其他节点,则可以从这些节点更改架构。它不必由 Solr 节点制作。
    猜你喜欢
    • 2014-05-06
    • 2013-12-02
    • 2017-03-07
    • 1970-01-01
    • 2014-06-04
    • 2023-04-04
    • 2018-06-20
    • 2018-04-04
    • 2017-06-08
    相关资源
    最近更新 更多