-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Fix SearchErrorTraceIT and friends to work with batched query execution #127150
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
Fix SearchErrorTraceIT and friends to work with batched query execution #127150
Conversation
Making this work with batched execution and fixing a memory leak: * Fix memory leak by removing listener on first message. There really only is a single message here per node anyway with batched execution in the mix. Either it's a single shard on the data node and we get a single query message or it's multiple shards and we get a single batched message, so fine to remove listener after the first message since all tests do a single request only anyway. * Add a new hook that allows inspection of the actual response. This is needed for batched since batched sends a non-error response even if the data node failed all searches. We had this before in the `onResponseSent` hook but checking the instance after it's been sent over the wire causes needless overhead in the production code so moving to a "before-style" hook here.
Pinging @elastic/es-search-foundations (Team:Search Foundations) |
* @param action the request action | ||
* @param response response instance | ||
*/ | ||
default void onBeforeResponseSent(long requestId, String action, TransportResponse response) {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@DaveCTurner wdyt? this should be ok right? In prod the overhead is negligible I think.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left one comment below. I have a general question as well—what do you mean:
We had this before in the
onResponseSent
hook
I was a bit surprised that we don't have testing to inspect transport responses being sent from data nodes.
test/framework/src/main/java/org/elasticsearch/search/ErrorTraceHelper.java
Outdated
Show resolved
Hide resolved
#125163 see this PR, we were wasting memory holding on to the message just for the noop (in production) hook :) I dropped the holding on to the message till after it's fully flushed to the wire in that PR. |
@DaveCTurner I'm looking to merge this but am still curious what you think about this additional method call in OutboundHandler (as Armin previously asked). I don't have a good feel for how performance-sensitive we are at that layer... |
Pretty performance-sensitive but I think we can tolerate this change. |
@elasticmachine test this please |
1 similar comment
@elasticmachine test this please |
@elasticmachine run elasticsearch-ci |
@elasticmachine run elasticsearch-ci |
@elasticmachine run elasticsearch-ci |
@elasticmachine run Elasticsearch Serverless Checks |
@elasticmachine run Elasticsearch Serverless Checks |
@elasticmachine run Elasticsearch Serverless Checks |
Forked: #132227 |
Making this work with batched execution and fixing a memory leak:
onResponseSent
hook but checking the instance after it's been sent over the wire causes needless overhead in the production code so moving to a "before-style" hook here.part of #125788