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

Added missed API visibility annotations for public APIs and enable the check at the build time #12872

Merged
merged 2 commits into from
Mar 22, 2024

Conversation

reta
Copy link
Collaborator

@reta reta commented Mar 22, 2024

Description

Added missed API visibility annotations for public APIs and enable the check at the build time

Related Issues

Closes #12871

Check List

  • New functionality includes testing.
    • All tests pass
  • New functionality has been documented.
    • New functionality has javadoc added
  • Failing checks are inspected and point to the corresponding known issue(s) (See: Troubleshooting Failing Builds)
  • Commits are signed per the DCO using --signoff
  • Commit changes are listed out in CHANGELOG.md file (See: Changelog)
  • Public documentation issue/PR created

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.

…e check at the build time

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

reta commented Mar 22, 2024

@peternied closing the loop here :-)

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

msfroh commented Mar 22, 2024

I'm a little concerned about the number of APIs being marked as public, rather than internal (not that this PR is necessarily changing things -- it looks like it's just making explicit what was previously implicit). If none of those classes can be changed on 2.x, our hands are going to be pretty tightly tied in terms of our ability to make changes.

I would lean toward maintaining backward compatibility of user API and data, and drop developer API compatibility within major versions, but that's probably a controversial take that extends beyond a single PR. 😁

@peternied
Copy link
Member

peternied commented Mar 22, 2024

If none of those classes can be changed on 2.x, our hands are going to be pretty tightly tied in terms of our ability to make changes.

@msfroh You mean no breaking changes. Is there a component that you think should be marked as experimental so we have that flexibility?

Copy link
Contributor

github-actions bot commented Mar 22, 2024

Compatibility status:

Checks if related components are compatible with change a7166fa

Incompatible components

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

Skipped components

Compatible components

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

Copy link
Contributor

❌ Gradle check result for 2041803:

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Copy link
Contributor

❌ Gradle check result for 3ae9c53:

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Copy link
Contributor

❌ Gradle check result for a7166fa:

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

@reta
Copy link
Collaborator Author

reta commented Mar 22, 2024

I'm a little concerned about the number of APIs being marked as public, rather than internal (not that this PR is necessarily changing things -- it looks like it's just making explicit what was previously implicit). If none of those classes can be changed on 2.x, our hands are going to be pretty tightly tied in terms of our ability to make changes.

@msfroh all these APIs are exposed though OpenSearch plugins API (Plugin & Co) - so this not something we could change, this is just a fact, and it will immediately break if the modifications are not backward compatible.

Copy link
Contributor

❌ Gradle check result for a7166fa: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

@reta
Copy link
Collaborator Author

reta commented Mar 22, 2024

I would lean toward maintaining backward compatibility of user API and data, and drop developer API compatibility within major versions, but that's probably a controversial take that extends beyond a single PR.

This is our policy - breaking between major are OK - this change ensures that at least what are exposed though OpenSearch plugins API (Plugin & Co) - is annotated. It won't break on API change at the moment (see please #9305) but it will break the build if the APIs are not annotated but leak publicly.

Copy link
Contributor

❌ Gradle check result for a7166fa: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

@reta
Copy link
Collaborator Author

reta commented Mar 22, 2024

❌ Gradle check result for a7166fa: FAILURE

#12788

Copy link
Contributor

✅ Gradle check result for a7166fa: SUCCESS

Copy link

codecov bot commented Mar 22, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 71.39%. Comparing base (b15cb0c) to head (a7166fa).
Report is 80 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main   #12872      +/-   ##
============================================
- Coverage     71.42%   71.39%   -0.03%     
- Complexity    59978    60255     +277     
============================================
  Files          4985     5011      +26     
  Lines        282275   283675    +1400     
  Branches      40946    41117     +171     
============================================
+ Hits         201603   202541     +938     
- Misses        63999    64322     +323     
- Partials      16673    16812     +139     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@reta reta merged commit 8e332b6 into opensearch-project:main Mar 22, 2024
30 checks passed
@reta reta added the backport 2.x Backport to 2.x branch label Mar 22, 2024
@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-12872-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 8e332b6cfee70221a62426d4ae282df8dc205981
# Push it to GitHub
git push --set-upstream origin backport/backport-12872-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-12872-to-2.x.

reta added a commit to reta/OpenSearch that referenced this pull request Mar 22, 2024
…e check at the build time (opensearch-project#12872)

* Added missed API visibility annotations for public APIs and enable the check at the build time

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

* Address code review comments

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

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
(cherry picked from commit 8e332b6)
reta added a commit to reta/OpenSearch that referenced this pull request Mar 23, 2024
…e check at the build time (opensearch-project#12872)

* Added missed API visibility annotations for public APIs and enable the check at the build time

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

* Address code review comments

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

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
(cherry picked from commit 8e332b6)
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
reta added a commit that referenced this pull request Mar 25, 2024
…e check at the build time (#12872) (#12875)

* Added missed API visibility annotations for public APIs and enable the check at the build time



* Address code review comments



---------


(cherry picked from commit 8e332b6)

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
shiv0408 pushed a commit to Gaurav614/OpenSearch that referenced this pull request Apr 25, 2024
…e check at the build time (opensearch-project#12872)

* Added missed API visibility annotations for public APIs and enable the check at the build time

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

* Address code review comments

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>
harshavamsi pushed a commit to harshavamsi/OpenSearch that referenced this pull request Apr 29, 2024
…e check at the build time (opensearch-project#12872)

* Added missed API visibility annotations for public APIs and enable the check at the build time

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

* Address code review comments

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

---------

Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
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 Other
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BWC and API enforcement] Enforcing the presence of API annotations at build time
3 participants