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

Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API #10101

Merged
merged 5 commits into from
Oct 5, 2023

Conversation

gaobinlong
Copy link
Collaborator

Description

When we add _version, _if_seq_no or _if_primary_term to each doc in the request body of the ingest simulate API, the API throws class_cast_excetpion with 500 status code. The reason is that the API cannot accept those fields as int, only long type is accepted. This PR aims to make that API can accept both int and long for those metadata fields, which is user-friendly.

The main changes of this PR are:

  1. Fix the class_cast_exception
  2. Add some yml test and unit test code.

Related Issues

#10097

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.

…ata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Gao Binlong <[email protected]>
@github-actions
Copy link
Contributor

github-actions bot commented Sep 18, 2023

Compatibility status:

Checks if related components are compatible with change 72ec43f

Incompatible components

Incompatible components: [https:/opensearch-project/security.git, https:/opensearch-project/performance-analyzer.git]

Skipped components

Compatible components

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

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@codecov
Copy link

codecov bot commented Sep 18, 2023

Codecov Report

Merging #10101 (72ec43f) into main (2965e69) will decrease coverage by 0.12%.
Report is 10 commits behind head on main.
The diff coverage is 71.27%.

@@             Coverage Diff              @@
##               main   #10101      +/-   ##
============================================
- Coverage     71.16%   71.05%   -0.12%     
+ Complexity    58297    58260      -37     
============================================
  Files          4830     4833       +3     
  Lines        274903   275053     +150     
  Branches      40059    40067       +8     
============================================
- Hits         195637   195430     -207     
- Misses        62882    63219     +337     
- Partials      16384    16404      +20     
Files Coverage Δ
...org/opensearch/repositories/url/URLRepository.java 72.00% <100.00%> (ø)
...g/opensearch/transport/netty4/Netty4Transport.java 73.65% <100.00%> (ø)
...opensearch/repositories/azure/AzureRepository.java 68.88% <100.00%> (-1.33%) ⬇️
...g/opensearch/repositories/hdfs/HdfsRepository.java 61.90% <100.00%> (ø)
...java/org/opensearch/repositories/s3/S3Service.java 76.04% <100.00%> (+1.04%) ⬆️
...ava/org/opensearch/transport/nio/NioTransport.java 92.06% <100.00%> (ø)
...a/org/opensearch/common/network/NetworkModule.java 92.00% <ø> (ø)
...ain/java/org/opensearch/plugins/NetworkPlugin.java 100.00% <ø> (ø)
...ch/repositories/blobstore/BlobStoreRepository.java 60.94% <100.00%> (+0.37%) ⬆️
...a/org/opensearch/repositories/fs/FsRepository.java 73.33% <100.00%> (+0.60%) ⬆️
... and 22 more

... and 457 files with indirect coverage changes

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

@dblock
Copy link
Member

dblock commented Sep 28, 2023

Thanks @gaobinlong, care to check gradle check please?
Maybe @mch2 can CR this?

Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Copy link
Member

@dblock dblock left a comment

Choose a reason for hiding this comment

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

I think you should add a test that passes an invalid value for each one of these changed fields, and returns a 400 (hits the failed to parse error) instead of a 500.

@github-actions
Copy link
Contributor

Gradle Check (Jenkins) Run Completed with:

  • RESULT: UNSTABLE ❕
  • TEST FAILURES:
      1 org.opensearch.remotestore.SegmentReplicationUsingRemoteStoreIT.testRestartPrimary
      1 org.opensearch.remotestore.RemoteStoreStatsIT.testStatsResponseFromLocalNode

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Gao Binlong <[email protected]>
@github-actions
Copy link
Contributor

github-actions bot commented Oct 5, 2023

Gradle Check (Jenkins) Run Completed with:

@gaobinlong
Copy link
Collaborator Author

@dblock thanks for your review, I've added more unit test cases and yaml test cases, please help to take a look again, and the latest gradle check failure dues to this flaky test: #10006.

Copy link
Member

@dblock dblock left a comment

Choose a reason for hiding this comment

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

Looks great! Let's get CI to pass.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 5, 2023

Gradle Check (Jenkins) Run Completed with:

@dblock dblock merged commit fdaa438 into opensearch-project:main Oct 5, 2023
13 checks passed
@dblock dblock added backport 1.x backport 2.x Backport to 2.x branch labels Oct 5, 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-10101-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 fdaa438ee03db285417bc0bd4204a0fbd4e699c9
# Push it to GitHub
git push --set-upstream origin backport/backport-10101-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-10101-to-2.x.

@opensearch-trigger-bot
Copy link
Contributor

The backport to 1.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-1.x 1.x
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-1.x
# Create a new branch
git switch --create backport/backport-10101-to-1.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 fdaa438ee03db285417bc0bd4204a0fbd4e699c9
# Push it to GitHub
git push --set-upstream origin backport/backport-10101-to-1.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-1.x

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

@dblock
Copy link
Member

dblock commented Oct 6, 2023

@gaobinlong Can you please do a manual backport of this to 2.x?

kaushalmahi12 pushed a commit to kaushalmahi12/OpenSearch that referenced this pull request Oct 6, 2023
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
gaobinlong added a commit to gaobinlong/OpenSearch that referenced this pull request Oct 7, 2023
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
(cherry picked from commit fdaa438)
gaobinlong added a commit to gaobinlong/OpenSearch that referenced this pull request Oct 7, 2023
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
(cherry picked from commit fdaa438)
@gaobinlong
Copy link
Collaborator Author

@dblock here are the backport PRs: #10478, #10479, please help to approve, thanks!

deshsidd pushed a commit to deshsidd/OpenSearch that referenced this pull request Oct 9, 2023
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
gaobinlong added a commit to gaobinlong/OpenSearch that referenced this pull request Oct 11, 2023
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
(cherry picked from commit fdaa438)
dblock pushed a commit that referenced this pull request Oct 13, 2023
…ata fields in ingest simulate API (#10101) (#10478)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
(cherry picked from commit fdaa438)
austintlee pushed a commit to austintlee/OpenSearch that referenced this pull request Oct 23, 2023
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
shiv0408 pushed a commit to Gaurav614/OpenSearch that referenced this pull request Apr 25, 2024
…ata fields in ingest simulate API (opensearch-project#10101)

* Fix class_cast_exception when passing int to _version and other metadata fields in ingest simulate API

Signed-off-by: Gao Binlong <[email protected]>

* modify change log

Signed-off-by: Gao Binlong <[email protected]>

* Add more tests

Signed-off-by: Gao Binlong <[email protected]>

---------

Signed-off-by: Gao Binlong <[email protected]>
Signed-off-by: Daniel (dB.) Doubrovkine <[email protected]>
Co-authored-by: Daniel (dB.) Doubrovkine <[email protected]>
Signed-off-by: Shivansh Arora <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants