Solr иногда не может разобрать запрос, как если бы он не получил его полностью - PullRequest
1 голос
/ 21 февраля 2020

Я провожу некоторые тесты с 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)

1 Ответ

0 голосов
/ 24 февраля 2020

Обнаружена проблема: запрос curl отправлен без content-type; как только я установил application/json, все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...