-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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 issue with feature flags where default value may not be honored #12849
Conversation
…ue was not being honored Signed-off-by: Craig Perkins <craig5008@gmail.com>
Signed-off-by: Craig Perkins <craig5008@gmail.com>
Compatibility status:Checks if related components are compatible with change 565109e Incompatible componentsSkipped componentsCompatible componentsCompatible components: [https://github.com/opensearch-project/custom-codecs.git, https://github.com/opensearch-project/asynchronous-search.git, https://github.com/opensearch-project/flow-framework.git, https://github.com/opensearch-project/observability.git, https://github.com/opensearch-project/reporting.git, https://github.com/opensearch-project/job-scheduler.git, https://github.com/opensearch-project/cross-cluster-replication.git, https://github.com/opensearch-project/opensearch-oci-object-storage.git, https://github.com/opensearch-project/common-utils.git, https://github.com/opensearch-project/geospatial.git, https://github.com/opensearch-project/k-nn.git, https://github.com/opensearch-project/neural-search.git, https://github.com/opensearch-project/anomaly-detection.git, https://github.com/opensearch-project/sql.git, https://github.com/opensearch-project/security-analytics.git, https://github.com/opensearch-project/ml-commons.git, https://github.com/opensearch-project/index-management.git, https://github.com/opensearch-project/notifications.git, https://github.com/opensearch-project/alerting.git, https://github.com/opensearch-project/performance-analyzer-rca.git, https://github.com/opensearch-project/security.git, https://github.com/opensearch-project/performance-analyzer.git] |
❌ Gradle check result for daaabc4: 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? |
❌ Gradle check result for 86769ec: 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? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a test for other defaults? (false
, other types?)
Signed-off-by: Craig Perkins <cwperx@amazon.com>
@dblock I added an additional test for a feature flag where default value is false. While its not strictly enforced, due to the presence of methods like |
❌ Gradle check result for ea21ee8: 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? |
@cwperks looks like org.opensearch.common.util.FeatureFlagTests.testBooleanFeatureFlagWithDefaultSetToTrue failed. |
Signed-off-by: Craig Perkins <cwperx@amazon.com>
@dblock I pushed another commit to handle the case when FeatureFlag initialization is called with empty settings where it can disregard defaults. There are a lot of static variables and methods in this class which can make it unpredictable during the gradle check. |
Signed-off-by: Craig Perkins <cwperx@amazon.com>
❌ Gradle check result for c8885f9: 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? |
Signed-off-by: Craig Perkins <cwperx@amazon.com>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #12849 +/- ##
============================================
- Coverage 71.42% 71.36% -0.06%
- Complexity 59978 60254 +276
============================================
Files 4985 5011 +26
Lines 282275 283678 +1403
Branches 40946 41119 +173
============================================
+ Hits 201603 202456 +853
- Misses 63999 64427 +428
- Partials 16673 16795 +122 ☔ View full report in Codecov by Sentry. |
The backport to
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-12849-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 12f1487cf8e3d28fa0ec99aba435099aeba904ad
# Push it to GitHub
git push --set-upstream origin backport/backport-12849-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 |
I will open a backport for this |
…pensearch-project#12849) * Fix issue with feature flags passed as system props where default value was not being honored Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add CHANGELOG entry Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add test for default value of false Signed-off-by: Craig Perkins <cwperx@amazon.com> * Fix issue when empty settings passed in initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> * Get actual value from settings and default from ff setting Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add test with non-empty setting initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> --------- Signed-off-by: Craig Perkins <craig5008@gmail.com> Signed-off-by: Craig Perkins <cwperx@amazon.com> (cherry picked from commit 12f1487)
Opened up a backport here: #12912 I'm not sure why the automatic backport failed. After cherry-picking, there were no conflicts to resolve. |
…12849) (#12912) * Fix issue with feature flags passed as system props where default value was not being honored Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add CHANGELOG entry Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add test for default value of false Signed-off-by: Craig Perkins <cwperx@amazon.com> * Fix issue when empty settings passed in initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> * Get actual value from settings and default from ff setting Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add test with non-empty setting initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> --------- Signed-off-by: Craig Perkins <craig5008@gmail.com> Signed-off-by: Craig Perkins <cwperx@amazon.com> (cherry picked from commit 12f1487)
…pensearch-project#12849) * Fix issue with feature flags passed as system props where default value was not being honored Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add CHANGELOG entry Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add test for default value of false Signed-off-by: Craig Perkins <cwperx@amazon.com> * Fix issue when empty settings passed in initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> * Get actual value from settings and default from ff setting Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add test with non-empty setting initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> --------- Signed-off-by: Craig Perkins <craig5008@gmail.com> Signed-off-by: Craig Perkins <cwperx@amazon.com> Signed-off-by: Shivansh Arora <hishiv@amazon.com>
…pensearch-project#12849) * Fix issue with feature flags passed as system props where default value was not being honored Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add CHANGELOG entry Signed-off-by: Craig Perkins <craig5008@gmail.com> * Add test for default value of false Signed-off-by: Craig Perkins <cwperx@amazon.com> * Fix issue when empty settings passed in initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> * Get actual value from settings and default from ff setting Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add test with non-empty setting initialization Signed-off-by: Craig Perkins <cwperx@amazon.com> --------- Signed-off-by: Craig Perkins <craig5008@gmail.com> Signed-off-by: Craig Perkins <cwperx@amazon.com>
Description
Fixes an issue where FeatureFlags is not honoring the default value of the feature flag setting when calling
isEnabled
.The bug exists because the settings object in the FeatureFlags class is not initialized until initializeFeatureFlags is called and will return false from this line instead of honoring the default value. While a feature guarded by a feature flag should not be enabled by default, this is a bug in the way the feature flags logic is implemented.
Related Issues
Check List
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.