每当调用IndexFetcher类进行恢复或复制时,HTTP请求都是未经身份验证的,导致401错误:
2018-01-25 13:16:22.538 WARN(indexFetcher-25-thread-1) [c:myCollection s:shard1 r:core_node3 x:myCollection_shard1_replica_t1] o.a.s.h.IndexFetcher大师: http://server1:8983/solr/myCollection_shard1_replica_t4/不是 可用。索引提取因异常而失败: org.apache.solr.client.solrj.impl.HttpSolrClient $ RemoteSolrException: 来自服务器的错误 http://server1:8983/solr/myCollection_shard1_replica_t4:预期的哑剧 键入application / octet-stream但得到text / html。 错误401未经授权的请求,响应代码:401
HTTP错误401
访问问题 / solr的/ myCollection_shard1_replica_t4 /复制。原因:
Unauthorized request, Response code: 401
我检查了源代码,在IndexFetcher中创建新的HTTP客户端之前,它尝试从initArgs获取http auth用户/密码,但这些属性总是为null,如果我在复制处理程序中设置它们(在slave标记下)
<lst name="slave">
<str name="masterUrl">http://server1:port/solr/myCollection/replication</str>
<str name="httpBasicAuthUser">username</str>
<str name="httpBasicAuthPassword">password</str>
</lst>
我下载了solr源代码并输入了硬编码的用户名和密码,编译了jar,一切正常。在此之前,我使用记录器检查httpBasicAuthUser / httpBasicAuthPassword,每当调用IndexFetcher进行恢复或复制时,这些字段都为空。