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

Remove some overhead from TransportService message handling #124428

Merged

Conversation

original-brownbear
Copy link
Member

Avoiding some indirection, volatile-reads and moving the listener functionality that needlessly kept iterating an empty CoW list (creating iterator instances, volatile reads, more code) in an effort to improve the low IPC on transport threads.

Avoiding some indirection, volatile-reads and moving the listener
functionality that needlessly kept iterating an empty CoW list (creating
iterator instances, volatile reads, more code) in an effort to improve
the low IPC on transport threads.
@elasticsearchmachine elasticsearchmachine added the Team:Distributed Coordination Meta label for Distributed Coordination team label Mar 8, 2025
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-distributed-coordination (Team:Distributed Coordination)

Copy link
Contributor

@DaveCTurner DaveCTurner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM makes sense to me. Couple of nits.

@@ -32,7 +33,7 @@ protected boolean addMockHttpTransport() {

@Override
protected Collection<Class<? extends Plugin>> nodePlugins() {
return List.of(AsyncSearch.class);
return List.of(AsyncSearch.class, MockTransportService.TestPlugin.class);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer we added these things to super.nodePlugins() with appendToCopy or similar. Doesn't really matter in this case right now but adding stuff to ESIntegTestCase#nodePlugins everywhere for an experiment is sometimes handy.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense :) done :)

Optional<Throwable> throwable = ExceptionsHelper.unwrapCausesAndSuppressed(error, t -> t.getStackTrace().length > 0);
transportMessageHasStackTrace.set(throwable.isPresent());
internalCluster.getDataNodeInstances(TransportService.class)
.forEach(ts -> ((MockTransportService) ts).addMessageListener(new TransportMessageListener() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest asInstanceOf(MockTransportService.class, ts), we sometimes catch a ClassCastException without failing the test.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

++

@original-brownbear original-brownbear added the auto-backport Automatically create backport pull requests when merged label Mar 9, 2025
@original-brownbear
Copy link
Member Author

Thanks David!

@original-brownbear original-brownbear merged commit 425823c into elastic:main Mar 9, 2025
17 checks passed
@original-brownbear original-brownbear deleted the cheaper-transport-service branch March 9, 2025 15:00
@elasticsearchmachine
Copy link
Collaborator

💔 Backport failed

Status Branch Result
8.x Commit could not be cherrypicked due to conflicts

You can use sqren/backport to manually backport by running backport --upstream elastic/elasticsearch --pr 124428

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auto-backport Automatically create backport pull requests when merged backport pending :Distributed Coordination/Network Http and internode communication implementations >non-issue Team:Distributed Coordination Meta label for Distributed Coordination team v8.19.0 v9.1.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants