Skip to content

Conversation

@Tim-Brooks
Copy link
Contributor

Currently all of the coordinating action for a bulk request is performed
on the transport thread. With Elasticsearch increasing its usage of
compression, it is now possible that large bulk requests will be
compressed at the coordinating stage when routing to other nodes. This
commit moves the coordination of large bulk requsets to the write thread
to avoid blocking the transport threads on costly CPU operations.

Currently all of the coordinating action for a bulk request is performed
on the transport thread. With Elasticsearch increasing its usage of
compression, it is now possible that large bulk requests will be
compressed at the coordinating stage when routing to other nodes. This
commit moves the coordination of large bulk requsets to the write thread
to avoid blocking the transport threads on costly CPU operations.
@Tim-Brooks Tim-Brooks added >non-issue :Distributed Indexing/CRUD A catch all label for issues around indexing, updating and getting a doc by id. Not search. v8.0.0 v7.16.0 labels Aug 20, 2021
@elasticmachine elasticmachine added the Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination. label Aug 20, 2021
@elasticmachine
Copy link
Collaborator

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

Copy link
Contributor

@henningandersen henningandersen left a comment

Choose a reason for hiding this comment

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

LGTM.

public class TransportBulkAction extends HandledTransportAction<BulkRequest, BulkResponse> {

private static final Logger logger = LogManager.getLogger(TransportBulkAction.class);
private static final long ONE_MEGABYTE = ByteSizeValue.ofMb(1).getBytes();
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: I prefer ByteSizeUnit.MB.toBytes(1), seems more direct. But it is mostly a preference so optional.

@Tim-Brooks Tim-Brooks merged commit 0e3e722 into elastic:master Aug 23, 2021
wjp719 added a commit to wjp719/elasticsearch that referenced this pull request Aug 24, 2021
* master: (21 commits)
  [Test] More robust assertions for sorting and pagination (elastic#76654)
  [Test] Fix filename check on Windows (elastic#76807)
  Upgrade build scan plugin to 3.6.4 (elastic#76784)
  Remove keystore initial_md5sum (elastic#76835)
  Don't export docker images on assemble (elastic#76817)
  Fix testMasterStatsOnSuccessfulUpdate (elastic#76844)
  AwaitsFix for elastic#76840
  Make Releasing Aggregation Buffers Safer (elastic#76741)
  Re-enable BWC tests after backport of elastic#76771 (elastic#76839)
  Dispatch large bulk requests to write thread  (elastic#76736)
  Disable BWC tests for elastic#76771
  Pull down beats artifacts when performing release tests
  Add timing stats to publication process (elastic#76771)
  Fix BanFailureLoggingTests some more (elastic#76668)
  Mention "warn threshold" in master service slowlog (elastic#76815)
  Fix DockerTests.test010Install
  Re-enable tests affected by elastic#75097 (elastic#76814)
  Fix testRecoveryIsCancelledAfterDeletingTheIndex (elastic#76644)
  Test fix -WildcardFieldMapperTests bad test data. (elastic#76819)
  Updating supported version after backporting the feature (elastic#76794)
  ...

# Conflicts:
#	server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java
Tim-Brooks added a commit that referenced this pull request Sep 29, 2021
Currently all of the coordinating action for a bulk request is performed
on the transport thread. With Elasticsearch increasing its usage of
compression, it is now possible that large bulk requests will be
compressed at the coordinating stage when routing to other nodes. This
commit moves the coordination of large bulk requsets to the write thread
to avoid blocking the transport threads on costly CPU operations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

:Distributed Indexing/CRUD A catch all label for issues around indexing, updating and getting a doc by id. Not search. >non-issue Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination. v7.16.0 v8.0.0-alpha2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants