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

[Streaming Indexing] Introduce new experimental HTTP transport based on Netty 4 and Project Reactor (Reactor Netty) #9672

Merged
merged 3 commits into from
Nov 6, 2023

Conversation

reta
Copy link
Collaborator

@reta reta commented Aug 31, 2023

Description

As have been concluded in #7273, introducing new transport based on Project Reactor would let us to:

  • use chunked transfer with HTTP/1.1 or HTTP/2
  • expose the reactive streaming APIs for core to build in top

Introducing new experimental HTTP transport based on Netty 4 and Project Reactor (Reactor Netty).

Related Issues

Closes #9067

Check List

  • New functionality includes testing.
    • All tests pass
  • New functionality has been documented.
    • New functionality has javadoc added
  • Commits are signed per the DCO using --signoff
  • Commit changes are listed out in CHANGELOG.md file (See: Changelog)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@reta reta added v2.11.0 Issues and PRs related to version 2.11.0 Indexing & Search and removed skip-changelog labels Aug 31, 2023
@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

github-actions bot commented Aug 31, 2023

Compatibility status:

Checks if related components are compatible with change c0755f4

Incompatible components

Incompatible components: [https://github.com/opensearch-project/performance-analyzer.git, https://github.com/opensearch-project/ml-commons.git]

Skipped components

Compatible components

Compatible components: [https://github.com/opensearch-project/security-analytics.git, https://github.com/opensearch-project/asynchronous-search.git, https://github.com/opensearch-project/observability.git, https://github.com/opensearch-project/reporting.git, https://github.com/opensearch-project/opensearch-oci-object-storage.git, https://github.com/opensearch-project/job-scheduler.git, https://github.com/opensearch-project/sql.git, https://github.com/opensearch-project/custom-codecs.git, https://github.com/opensearch-project/performance-analyzer-rca.git, https://github.com/opensearch-project/common-utils.git, https://github.com/opensearch-project/security.git, https://github.com/opensearch-project/notifications.git, https://github.com/opensearch-project/k-nn.git, https://github.com/opensearch-project/anomaly-detection.git, https://github.com/opensearch-project/geospatial.git, https://github.com/opensearch-project/index-management.git, https://github.com/opensearch-project/cross-cluster-replication.git, https://github.com/opensearch-project/neural-search.git, https://github.com/opensearch-project/alerting.git]

@github-actions
Copy link
Contributor

Compatibility status:

Checks if related components are compatible with change 404a9d5

Incompatible components

Skipped components

Compatible components

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2023

Compatibility status:

Checks if related components are compatible with change 2645c08

Incompatible components

Skipped components

Compatible components

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2023

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2023

Compatibility status:

Checks if related components are compatible with change a91fef9

Incompatible components

Skipped components

Compatible components

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2023

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2023

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2023

Compatibility status:

Checks if related components are compatible with change 87f5ed7

Incompatible components

Incompatible components: [https://github.com/opensearch-project/ml-commons.git]

Skipped components

Compatible components

Compatible components: [https://github.com/opensearch-project/security.git, https://github.com/opensearch-project/alerting.git, https://github.com/opensearch-project/index-management.git, https://github.com/opensearch-project/sql.git, https://github.com/opensearch-project/anomaly-detection.git, https://github.com/opensearch-project/job-scheduler.git, https://github.com/opensearch-project/asynchronous-search.git, https://github.com/opensearch-project/observability.git, https://github.com/opensearch-project/common-utils.git, https://github.com/opensearch-project/k-nn.git, https://github.com/opensearch-project/reporting.git, https://github.com/opensearch-project/cross-cluster-replication.git, https://github.com/opensearch-project/geospatial.git, https://github.com/opensearch-project/performance-analyzer.git, https://github.com/opensearch-project/notifications.git, https://github.com/opensearch-project/performance-analyzer-rca.git, https://github.com/opensearch-project/neural-search.git, https://github.com/opensearch-project/security-analytics.git, https://github.com/opensearch-project/opensearch-oci-object-storage.git]

@reta reta force-pushed the issue-9067 branch 2 times, most recently from 20d9596 to af94d0e Compare September 11, 2023 14:01
@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

  • RESULT: UNSTABLE ❕
  • TEST FAILURES:
      1 org.opensearch.search.SearchWeightedRoutingIT.testSearchAggregationWithNetworkDisruption_FailOpenEnabled

@codecov
Copy link

codecov bot commented Sep 11, 2023

Codecov Report

Merging #9672 (c0755f4) into main (747f7d1) will increase coverage by 0.06%.
Report is 1 commits behind head on main.
The diff coverage is 56.50%.

@@             Coverage Diff              @@
##               main    #9672      +/-   ##
============================================
+ Coverage     71.20%   71.27%   +0.06%     
- Complexity    58716    58834     +118     
============================================
  Files          4872     4883      +11     
  Lines        276773   277134     +361     
  Branches      40240    40284      +44     
============================================
+ Hits         197078   197520     +442     
+ Misses        63238    63121     -117     
- Partials      16457    16493      +36     
Files Coverage Δ
...nsearch/http/netty4/Netty4HttpServerTransport.java 56.18% <ø> (ø)
...rg/opensearch/common/settings/ClusterSettings.java 92.85% <ø> (ø)
...ava/org/opensearch/http/HttpTransportSettings.java 96.15% <100.00%> (+0.07%) ⬆️
...http/reactor/netty4/ReactorNetty4HttpResponse.java 85.71% <85.71%> (ø)
...ansport/reactor/netty4/ReactorNetty4Transport.java 75.00% <75.00%> (ø)
...reactor/netty4/ReactorNetty4HttpServerChannel.java 83.33% <83.33%> (ø)
...h/http/reactor/netty4/NonStreamingHttpChannel.java 66.66% <66.66%> (ø)
...tp/reactor/netty4/NonStreamingRequestConsumer.java 77.77% <77.77%> (ø)
...nsearch/transport/reactor/ReactorNetty4Plugin.java 7.69% <7.69%> (ø)
...search/http/reactor/netty4/HttpConversionUtil.java 26.31% <26.31%> (ø)
... and 4 more

... and 480 files with indirect coverage changes

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

  • RESULT: UNSTABLE ❕
  • TEST FAILURES:
      1 org.opensearch.remotestore.multipart.RemoteStoreMultipartIT.testRequestDurabilityWhenRestrictSettingExplicitFalse

… based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
Copy link
Contributor

github-actions bot commented Nov 6, 2023

Gradle Check (Jenkins) Run Completed with:

@reta
Copy link
Collaborator Author

reta commented Nov 6, 2023

Copy link
Contributor

github-actions bot commented Nov 6, 2023

Gradle Check (Jenkins) Run Completed with:

@reta
Copy link
Collaborator Author

reta commented Nov 6, 2023

Copy link
Contributor

github-actions bot commented Nov 6, 2023

Gradle Check (Jenkins) Run Completed with:

@reta
Copy link
Collaborator Author

reta commented Nov 6, 2023

Copy link
Contributor

github-actions bot commented Nov 6, 2023

Gradle Check (Jenkins) Run Completed with:

  • RESULT: UNSTABLE ❕
  • TEST FAILURES:
      1 org.opensearch.search.SearchWeightedRoutingIT.testStrictWeightedRoutingWithCustomString_FailOpenEnabled
      1 org.opensearch.remotestore.multipart.RemoteStoreMultipartIT.testRequestDurabilityWhenRestrictSettingImplicitFalse

@reta
Copy link
Collaborator Author

reta commented Nov 6, 2023

@reta Looks like this is ready to merge? Let's get a CR from maybe @saratvemulapalli or @itiyamas?

Seeing no feedback for a few weeks, merging the change

@reta reta merged commit 1782b90 into opensearch-project:main Nov 6, 2023
31 of 32 checks passed
@reta reta added the backport 2.x Backport to 2.x branch label Nov 6, 2023
@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.x failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-2.x
# Create a new branch
git switch --create backport/backport-9672-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 1782b906a0a9bf293bbc8e7f33058153790827dc
# Push it to GitHub
git push --set-upstream origin backport/backport-9672-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-2.x

Then, create a pull request where the base branch is 2.x and the compare/head branch is backport/backport-9672-to-2.x.

reta added a commit to reta/OpenSearch that referenced this pull request Nov 6, 2023
…on Netty 4 and Project Reactor (Reactor Netty) (opensearch-project#9672)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Remove HttpChunk for now since it is not used in non-streaming APIs

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Fix postmerge issues

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
(cherry picked from commit 1782b90)
reta added a commit to reta/OpenSearch that referenced this pull request Nov 6, 2023
…on Netty 4 and Project Reactor (Reactor Netty) (opensearch-project#9672)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Remove HttpChunk for now since it is not used in non-streaming APIs

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Fix postmerge issues

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
(cherry picked from commit 1782b90)
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
reta added a commit to reta/OpenSearch that referenced this pull request Nov 6, 2023
…on Netty 4 and Project Reactor (Reactor Netty) (opensearch-project#9672)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Remove HttpChunk for now since it is not used in non-streaming APIs

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Fix postmerge issues

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
(cherry picked from commit 1782b90)
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
reta added a commit to reta/OpenSearch that referenced this pull request Nov 6, 2023
…on Netty 4 and Project Reactor (Reactor Netty) (opensearch-project#9672)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Remove HttpChunk for now since it is not used in non-streaming APIs

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Fix postmerge issues

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
(cherry picked from commit 1782b90)
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
dblock pushed a commit that referenced this pull request Nov 7, 2023
…on Netty 4 and Project Reactor (Reactor Netty) (#9672) (#11108)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)



* Remove HttpChunk for now since it is not used in non-streaming APIs



* Fix postmerge issues



---------


(cherry picked from commit 1782b90)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
rayshrey pushed a commit to rayshrey/OpenSearch that referenced this pull request Mar 18, 2024
…on Netty 4 and Project Reactor (Reactor Netty) (opensearch-project#9672)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Remove HttpChunk for now since it is not used in non-streaming APIs

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Fix postmerge issues

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
shiv0408 pushed a commit to Gaurav614/OpenSearch that referenced this pull request Apr 25, 2024
…on Netty 4 and Project Reactor (Reactor Netty) (opensearch-project#9672)

* [Streaming Indexing] Introduce new experimental server HTTP transport based on Netty 4 and Project Reactor (Reactor Netty)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Remove HttpChunk for now since it is not used in non-streaming APIs

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

* Fix postmerge issues

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
Signed-off-by: Shivansh Arora <hishiv@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport 2.x Backport to 2.x branch backport-failed enhancement Enhancement or improvement to existing feature or request Indexing Indexing, Bulk Indexing and anything related to indexing v2.11.0 Issues and PRs related to version 2.11.0 v2.12.0 Issues and PRs related to version 2.12.0
Projects
None yet
4 participants