Я провожу некоторые тесты с Solr. Я запускаю скрипт для построения запроса из тестовых случаев и затем отправляю с curl
моему локальному экземпляру Solr. Иногда запросы выполняются нормально, но иногда тот же запрос не удается с ошибкой Unexpected EOF
. То же самое означает то же самое, я просто повторяю команду, и вместо пустого списка она показывает ожидаемый результат. Когда я смотрю на ответ XML я получаю с ошибками, я действительно вижу там усеченный JSON. Файл JSON на диске, конечно, завершен. Небольшие запросы выполняются нормально, проблема начинает появляться с более длинными запросами, которые, похоже, чаще дают сбой, чем завершаются успешно. Запросы, которые я пытаюсь проверить, довольно длинные и сложные.
В чем может быть проблема?
Это Solr 8.2.0, локальный экземпляр на довольно слабой Ma c Mini с OS X 10.11.6. Мой найденный набор крошечный, я пытаюсь выяснить логи c сложных объединений.
Я также помню подобные ошибки, даже когда я пробовал относительно простые запросы с панелью Solr (например, http://<host>:8983/solr/#/<collection>/query
) за исключением того, что я получил их достаточно последовательно (или мне просто не пришло в голову попытаться повторно отправить их) и интерпретировал их как проблему с моим синтаксисом запроса.
Обновление : ошибочный запрос составляет 2829 байт, EOF
происходит вокруг символа 1400 или около того, всегда в одном и том же месте. Я отправляю его с curl
как запрос JSON на дескриптор select
; коллекция основана на конфигурации default
с несколькими пользовательскими типами полей и полей, solrconfig.xml
не изменяется.
Обновление 2 : получена запись в журнале, она такая же, кроме того, есть след стека. Что кажется интересным, так это то, что JSON всегда усекается до одинакового размера: position
ошибки всегда 1460
.
2020-02-24 10:19:05.103 ERROR (qtp1357563986-23) [ x:proof]
o.a.s.s.HttpSolrCall null:org.noggit.JSONParser$ParseException:
Unexpected EOF: char=(EOF),position=1460 AFTER='<redacted>'
at org.noggit.JSONParser.err(JSONParser.java:452)
at org.noggit.JSONParser.getMore(JSONParser.java:248)
at org.noggit.JSONParser.readStringChars2(JSONParser.java:754)
at org.noggit.JSONParser.readStringChars(JSONParser.java:734)
at org.noggit.JSONParser.getStringChars(JSONParser.java:1206)
at org.noggit.JSONParser.getString(JSONParser.java:1193)
at org.noggit.ObjectBuilder.getString(ObjectBuilder.java:79)
at org.noggit.ObjectBuilder.getVal(ObjectBuilder.java:51)
at org.noggit.ObjectBuilder.getObject(ObjectBuilder.java:140)
at org.noggit.ObjectBuilder.getVal(ObjectBuilder.java:63)
at org.noggit.ObjectBuilder.getObject(ObjectBuilder.java:140)
at org.noggit.ObjectBuilder.getVal(ObjectBuilder.java:63)
at org.noggit.ObjectBuilder.getVal(ObjectBuilder.java:36)
at org.noggit.ObjectBuilder.fromJSON(ObjectBuilder.java:32)
at org.apache.solr.request.json.RequestUtil.mergeJSON(RequestUtil.java:266)
at org.apache.solr.request.json.RequestUtil.processParams(RequestUtil.java:180)
at org.apache.solr.util.SolrPluginUtils.setDefaults(SolrPluginUtils.java:165)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:196)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2578)
at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:780)
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:566)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:423)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:350)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:505)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
at java.lang.Thread.run(Thread.java:748)