Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Elasticsearch Cloud throws an execption when indexing an item that does not exist yet. #118

Open
raimondkempees-arc opened this issue Jan 21, 2025 · 3 comments
Labels
question Further information is requested

Comments

@raimondkempees-arc
Copy link

raimondkempees-arc commented Jan 21, 2025

Describe the bug
We have the strange situation that on one of four environments that are integrated with Elastic Cloud, upon indexing items, for one item type we see the following issue:

First we see inthe log:

2025-01-21T12:00:06.538493+00:00 @MessageTemplate DeleteFromIndex with query: __Path:\-1\,*3363\,* (found 0 results) SourceContext ExamineX.ElasticSearch.ElasticSearchIndex ActionId 6e305c3d-1935-4165-84fb-78593ff71aac ActionName Umbraco.Cms.Web.BackOffice.Controllers.ContentController.PostSave (Umbraco.Web.BackOffice) RequestId 4000130f-0800-fb00-b63f-84710c7967bb RequestPath /umbraco/backoffice/umbracoapi/content/PostSave ProcessId 2568 ProcessName w3wp ThreadId 18 ApplicationId ea6c9907b5dfb977abd279e5dd977d85f29f78cb MachineName dw1mdwk0001HC Log4NetLevel DEBUG HttpRequestId d7290817-4c9a-404d-8fb4-b26d92526645 HttpRequestNumber 2 HttpSessionId 00f7c9dc-26fb-6c7a-2c47-5164fa57857e

The this is immediately followed by an Elastic Exception:

Invalid NEST response built from a unsuccessful (400) low level call on POST: /index-external-websites-umbraco-cloud-live-2025-01-21-114803/_bulk?pretty=true&error_trace=true # Invalid Bulk items: # Warnings: - The client is unable to verify that the server is Elasticsearch due to security privileges on the server side. Some functionality may not be compatible if the server is running an unsupported product. # Audit trail of this API call: - [1] BadResponse: Node: https://sddd.dd.azure.elastic-cloud.com/ Took: 00:00:00.1503126 # OriginalException: Elasticsearch.Net.ElasticsearchClientException: Request failed to execute. Call: Status code 400 from: POST /index-external-websites-umbraco-cloud-live-2025-01-21-114803/_bulk?pretty=true&error_trace=true. ServerError: Type: parse_exception Reason: "could not parse bulk request body" CausedBy: "Type: parse_exception Reason: "request body is required"" # Request: # Response: { "error" : { "root_cause" : [ { "type" : "parse_exception", "reason" : "request body is required", "stack_trace" : "org.elasticsearch.ElasticsearchParseException: request body is required\n\tat [email protected]/org.elasticsearch.rest.RestRequest.requiredContent(RestRequest.java:327)\n\tat [email protected]/org.elasticsearch.rest.action.document.RestBulkAction.prepareRequest(RestBulkAction.java:113)\n\tat [email protected]/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:106)\n\tat [email protected]/org.elasticsearch.rest.RestController$1.onResponse(RestController.java:504)\n\tat [email protected]/org.elasticsearch.rest.RestController$1.onResponse(RestController.java:498)\n\tat [email protected]/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:89)\n\tat [email protected]/org.elasticsearch.xpack.security.rest.SecurityRestFilter.lambda$intercept$0(SecurityRestFilter.java:81)\n\tat [email protected]/org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:257)\n\tat [email protected]/org.elasticsearch.xpack.security.authc.support.SecondaryAuthenticator.lambda$authenticateAndAttachToContext$3(SecondaryAuthenticator.java:99)\n\tat [email protected]/org.elasticsearch.action.ActionListenerImplementations$ResponseWrappingActionListener.onResponse(ActionListenerImplementations.java:247)\n\tat [email protected]/org.elasticsearch.xpack.security.authc.support.SecondaryAuthenticator.authenticate(SecondaryAuthenticator.java:109)\n\tat [email protected]/org.elasticsearch.xpack.security.authc.support.SecondaryAuthenticator.authenticateAndAttachToContext(SecondaryAuthenticator.java:90)\n\tat [email protected]/org.elasticsearch.xpack.security.rest.SecurityRestFilter.intercept(SecurityRestFilter.java:75)\n\tat [email protected]/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:498)\n\tat [email protected]/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:662)\n\tat [email protected]/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:341)\n\tat [email protected]/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:488)\n\tat [email protected]/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:584)\n\tat [email protected]/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:461)\n\tat [email protected]/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:169)\n\tat [email protected]/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:148)\n\tat [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat [email protected]/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)\n\tat [email protected]/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:120)\n\tat [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat [email protected]/

License ID
f490f46a-099b-4798-bd7d-8067a0aac9a0

To Reproduce
Steps to reproduce the behavior:

  • no real steps to reproduce. I cannot reproduce this on other Umbraco environments. This is only showing on one cluster. If I connect my local machine to it, with the same API key, it also works fine.

Expected behavior

  • That indexing of the items simply works as it does everywhere else.

Screenshots
If applicable, add screenshots to help explain your problem.

Versions

  • ExamineX version - 6.0.10
  • ExamineX.ElasticSearch.Umbraco - 3.0.10
  • Umbraco version - 13.5.2
  • Examine version - 3.3.0
  • Examine.Core - 3.5.0
@raimondkempees-arc
Copy link
Author

The issue was resolved by moving child pages to a new parent. Apparently, some relation broke and Examine coulnd't find the page to index in the first place, hence throwing this upon a publish action.

Feel free to close it - I do think a better error message is helpful.

@Shazwazza Shazwazza added the question Further information is requested label Jan 21, 2025
@Shazwazza
Copy link
Contributor

Many thanks @raimondkempees-arc for the report and follow up. I'll review the stack trace further to see if it can be determined what is happening behind the scenes. Examine/ExamineX just accepts data sets from Umbraco and passes it to the index. In this case, it seems to indicate that an attempt to delete an item while using a Lucene query syntax causes a cascade of error messages. The part about the The client is unable to verify that the server is Elasticsearch due to security privileges on the server side I believe is a false/misleading message in this case. I'll keep this open for a little bit to see if we can replicate in tests for specific scenarios.

It would be interesting to have seen if any Umbraco health checks may have indicated that there was some data mismatches with paths, etc...

@raimondkempees-arc
Copy link
Author

raimondkempees-arc commented Jan 21, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants