我最近将 solr 7.x + zookeeper 3.4.14 转换为 solr 8.3 + zk 3.5.6,根据我启动 solr 节点的方式,我得到了一个同步异常。
我的设置使用 3 个 zk 节点和 2 个 solr 节点(我们称之为 A 和 B)。有这个问题的集合有 1 个分片和 2 个副本。我注意到两种情况:(1)工作正常,(2)不工作。
1) 这可行:我启动 solr 节点 A,并等到它的副本被选为领导者(Solr 界面“Cloud”->“Graph”中的“绿色”)——这大约需要 2 分钟;然后才启动solr节点B。两个副本都处于活动状态,A中的一个是领导者。
2)这不起作用:我启动 solr 节点 A,并在我为 solr 节点 B 加注星号后几秒钟(即,在“A”副本被选为领导者之前 - 在 solr 界面中仍然“关闭”)。在这种情况下,我得到以下异常:
ERROR (coreZkRegister-1-thread-2-processing-n:192.168.15.20:8986_solr x:alldata_shard1_replica_n1 c:alldata s:shard1 r:core_node3) [c:alldata s:shard1 r:core_node3 x:alldata_shard1_replica_n1] o.a.s.c.SyncStrategy Sync Failed:java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 99
似乎如果两个 solr 节点都相继启动,那么 ZK 就无法选举一个作为领导者。这个错误只出现在节点 A 的 solr.log 中,即使我颠倒了起始节点的顺序。
有没有人见过这个?
我有几个其他的集合没有显示这个问题。谢谢!