You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be helpful to be able to know within code when solr has encountered a 500 error, and report details about it to the user.
In an example from Princeton-CDH/geniza, we have an un-analyzed text field that is searched using Lucene's regular expression support (transcription_regex:/.*query.*/). When a malformed regular expression is passed into SolrQuerySet.search, e.g. transcription_regex:/.*test[.*/ with an unmatched bracket, parasolr logs show that a 500 error was encountered, but no exception is thrown in Python.
The string expected ']' at position 9 would be helpful to be able to interpret or show directly to users.
Maybe there is already a way to do this?
[27/Aug/202417:10:04] ERROR:parasolr.solr.base::POSThttp://localhost:8983/solr/geniza/select=>err: {
"responseHeader": {
"status": 500,
"QTime": 0,
"params": {
"q": "transcription_regex:/.*test[.*/",
"facet.field": [
"has_image_b",
"has_digital_edition_b",
"has_digital_translation_b",
"has_discussion_b",
"{!ex=type}type_s",
],
"hl": "false",
"null": "",
"fl": "id:id,type:type_s,status:status_s,shelfmark:shelfmark_s,shelfmarks:fragment_shelfmark_ss,document_date:document_date_t,document_dating:document_dating_t,original_date_t:original_date,collection:collection_ss,tags:tags_ss_lower,description:description_en_bigram,notes:notes_t,needs_review:needs_review_t,pgpid:pgpid_i,old_pgpids:old_pgpids_is,input_year:input_year_i,input_date:input_date_dt,num_editions:num_editions_i,num_translations:num_translations_i,num_discussions:num_discussions_i,scholarship_count:scholarship_count_i,scholarship:scholarship_t,transcription:text_transcription,language_code:language_code_s,language_script:language_script_s,languages:language_name_ss,translation:text_translation,translation_language_code:translation_language_code_s,translation_language_direction:translation_language_direction_s,iiif_images:iiif_images_ss,iiif_labels:iiif_labels_ss,iiif_rotations:iiif_rotations_is,has_image:has_image_b,has_digital_edition:has_digital_edition_b,has_digital_translation:has_digital_translation_b,has_discussion:has_discussion_b,old_shelfmark:old_shelfmark_bigram,old_shelfmark_t:old_shelfmark_t,transcription_nostem:transcription_nostem,description_nostem:description_nostem,related_people:people_count_i,related_places:places_count_i,related_documents:documents_count_i,transcription_regex:transcription_regex",
"start": "0",
"fq": ["item_type_s:document", "status_s:Public"],
"rows": "0",
"facet": "true",
"wt": "json",
"f.type_s.facet.sort": "value",
},
},
"error": {
"msg": "expected ']' at position 9",
"trace": """java.lang.IllegalArgumentException: expected \']\' at position 9 at org.apache.lucene.util.automaton.RegExp.parseCharClassExp(RegExp.java:1256) at org.apache.lucene.util.automaton.RegExp.parseComplExp(RegExp.java:1247) at org.apache.lucene.util.automaton.RegExp.parseRepeatExp(RegExp.java:1217) at org.apache.lucene.util.automaton.RegExp.iterativeParseExp(RegExp.java:1210) at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1190) at org.apache.lucene.util.automaton.RegExp.iterativeParseExp(RegExp.java:1208) at org.apache.lucene.util.automaton.RegExp.parseInterExp(RegExp.java:1185) at org.apache.lucene.util.automaton.RegExp.iterativeParseExp(RegExp.java:1208) at org.apache.lucene.util.automaton.RegExp.parseUnionExp(RegExp.java:1181) at org.apache.lucene.util.automaton.RegExp.<init>(RegExp.java:504) at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:144) at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:119) at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:66) at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:56) at org.apache.solr.parser.SolrQueryParserBase.newRegexpQuery(SolrQueryParserBase.java:603) at org.apache.solr.parser.SolrQueryParserBase.getRegexpQuery(SolrQueryParserBase.java:1338) at org.apache.solr.parser.SolrQueryParserBase.handleBareTokenQuery(SolrQueryParserBase.java:842) at org.apache.solr.parser.QueryParser.Term(QueryParser.java:454) at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:293) at org.apache.solr.parser.QueryParser.Query(QueryParser.java:173) at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:143) at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:276) at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:51) at org.apache.solr.search.QParser.getQuery(QParser.java:188) at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:185) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:430) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:226) at org.apache.solr.core.SolrCore.execute(SolrCore.java:2886) at org.apache.solr.servlet.HttpSolrCall.executeCoreRequest(HttpSolrCall.java:910) at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:596) at org.apache.solr.servlet.SolrDispatchFilter.dispatch(SolrDispatchFilter.java:262) at org.apache.solr.servlet.SolrDispatchFilter.lambda$doFilter$0(SolrDispatchFilter.java:219) at org.apache.solr.servlet.ServletUtils.traceHttpRequestExecution2(ServletUtils.java:249) at org.apache.solr.servlet.ServletUtils.rateLimitRequest(ServletUtils.java:215) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:213) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:195) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1580) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1553) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) at org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:228) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:822) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.Server.handle(Server.java:563) at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) at java.base/java.lang.Thread.run(Thread.java:1570)""",
"code": 500,
},
}
The text was updated successfully, but these errors were encountered:
It would be helpful to be able to know within code when solr has encountered a 500 error, and report details about it to the user.
In an example from Princeton-CDH/geniza, we have an un-analyzed text field that is searched using Lucene's regular expression support (
transcription_regex:/.*query.*/
). When a malformed regular expression is passed intoSolrQuerySet.search
, e.g.transcription_regex:/.*test[.*/
with an unmatched bracket, parasolr logs show that a 500 error was encountered, but no exception is thrown in Python.The string
expected ']' at position 9
would be helpful to be able to interpret or show directly to users.Maybe there is already a way to do this?
The text was updated successfully, but these errors were encountered: