Solr 8.3未传timeAllowed仍报cursorMark与timeAllowed冲突400错误求助
问题排查方向
先确认实际请求参数:查看Solr节点的access日志,验证最终发往Solr的请求是否真的没有携带
timeAllowed参数。很多情况下,前端代理、网关甚至客户端工具会自动添加参数,你手动构造的URL看似无该参数,但实际抵达Solr时已被修改。可以用curl直接发起测试请求:curl -v "http://<host>.com:<port>/solr/<core>/select?q=*%3A*&rows=10&sort=id+asc&cursorMark=*"通过响应信息和日志对比实际接收的参数。
检查solrconfig.xml默认配置:即便你没修改过/select处理器,也请确认
/select对应的requestHandler是否默认配置了timeAllowed。比如是否存在类似配置:<requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <int name="timeAllowed">5000</int> </lst> </requestHandler>若有该默认值,相当于每次请求都会自动带上
timeAllowed,自然会和cursorMark触发冲突限制。考虑版本bug可能:Solr 8.3本身可能存在参数误判的bug。可以尝试升级到8.8之前的其他小版本(比如8.7),或者临时绕过——若确认未传
timeAllowed却被误判,可在请求里显式添加timeAllowed=-1(表示无超时限制),看能否绕过错误判断逻辑。
内容的提问来源于stack exchange,提问作者Trishank
相关产品推荐
相关产品推荐

