Skip to content

Merge main to release/stable/v8 for version 8.2.0 #664

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

Merged
merged 39 commits into from
May 14, 2025

Conversation

amerjusupovic
Copy link
Member

No description provided.

rossgrambo and others added 30 commits October 18, 2024 13:08
Add allocation id when telemetry is enabled for feature flag
Merge main to preview with resolved conflicts
…for refresh (#574)

* WIP

* WIP testing out client extensions methods

* WIP added selectors to multikeywatchers

* remove unused property

* WIP check for registerall changes to change refreshall

* WIP

* WIP fixing types and reslving errors

* WIP fixing client extensions class

* WIP

* WIP update feature flag logic

* WIP client extensions

* WIP reload all flags on change

* WIP

* WIP fixing tests to return response for getconfigurationsettingsasync

* WIP etag for tests

* fix watchedcollections null

* WIP tests, working for examples

* remove unused variables

* update to newest sdk version, remove unused

* WIP fixing tests

* WIP reworking testing to work with new etag approach

* tests passing, fix mockasyncpageable

* update sdk package version

* fix loghelper, tests

* WIP fixing aspages tests

* revert watchesfeatureflags test

* update test again

* WIP

* fixing watchconditions

* separate selected key value collections from feature flag collections, separate selectors, add new methods to support new logic

* comment and naming updates

* fixing unit tests, namespace of defining/calling code needs to be same

* fixing tests using AsPages

* fix tests with pageablemanager

* format

* fix tests

* fix tests

* remove unused extension test class

* fix comment, capitalization

* check etag on 200, fix tests

* add registerall test, fix refresh tests

* fix condition for pages and old match conditions

* WIP fixing PR comments, tests

* check status after advancing existing etag enumerator

* move around refresh logic

* null check page etag, revert break to existing keys check in getrefreshedcollections

* fix loadselected, replace selectedkvwatchers with registerall refresh time

* fix comment in options

* clean up tests

* PR comments

* PR comments

* don't allow both registerall and register

* fix check for calls to both register methods

* PR comments for rename/small changes

* fix compile error

* simplify refreshasync path, fix naming from comments

* remove redundant if check

* simplify logic for minrefreshinterval

* fix smaller comments

* call loadselected when refreshing collection, separate data for individual refresh

* in progress change to registerall include ff

* fix load order

* fix comments, rename logging constants to match new behavior

* pr comments, refactor refreshasync

* clean up etags dictionary creation

* PR comments

* add uncommitted changes to testhelper

* update tests for registerall with feature flags, check ff keys to remove flags on refresh

* PR comments

* PR comments

* use invalidoperationexception in configurerefresh, update loggingconstants to match behavior

* remove unused changes
…nstance(s) used by the provider (#598) (#617)

* Introduced a new `AzureAppConfigurationClientFactory` class to handle the creation of `ConfigurationClient` instances

* remove clients dictionary since we will not have hits and clients are already stored in ConfigurationClientManager

* revert

* add license + remove unused usings

* ran dotnet format

* add capability of fallback to different stores

* add explicit type

* address comments

* remove scheme validation

---------

Co-authored-by: Sami Sadfa <71456174+samsadsam@users.noreply.github.com>
Co-authored-by: Sami Sadfa <samisadfa@microsoft.com>
* add activity source

* add minimum requirement for MinBackOffDuration

* Revert "add minimum requirement for MinBackOffDuration"

This reverts commit 59d847a.

* revert make MinBackoffDuration public

* update

* update activity name

* update
* Adding allocation id

* serialize with sorted keys

* use string empty

* nit

* rename ff id to TelemetryVariantPercentile

* add more values

* dotnet format

* Version bump

* Add `RegisterAll` API to enable monitoring collections of key-values for refresh (#574)

* WIP

* WIP testing out client extensions methods

* WIP added selectors to multikeywatchers

* remove unused property

* WIP check for registerall changes to change refreshall

* WIP

* WIP fixing types and reslving errors

* WIP fixing client extensions class

* WIP

* WIP update feature flag logic

* WIP client extensions

* WIP reload all flags on change

* WIP

* WIP fixing tests to return response for getconfigurationsettingsasync

* WIP etag for tests

* fix watchedcollections null

* WIP tests, working for examples

* remove unused variables

* update to newest sdk version, remove unused

* WIP fixing tests

* WIP reworking testing to work with new etag approach

* tests passing, fix mockasyncpageable

* update sdk package version

* fix loghelper, tests

* WIP fixing aspages tests

* revert watchesfeatureflags test

* update test again

* WIP

* fixing watchconditions

* separate selected key value collections from feature flag collections, separate selectors, add new methods to support new logic

* comment and naming updates

* fixing unit tests, namespace of defining/calling code needs to be same

* fixing tests using AsPages

* fix tests with pageablemanager

* format

* fix tests

* fix tests

* remove unused extension test class

* fix comment, capitalization

* check etag on 200, fix tests

* add registerall test, fix refresh tests

* fix condition for pages and old match conditions

* WIP fixing PR comments, tests

* check status after advancing existing etag enumerator

* move around refresh logic

* null check page etag, revert break to existing keys check in getrefreshedcollections

* fix loadselected, replace selectedkvwatchers with registerall refresh time

* fix comment in options

* clean up tests

* PR comments

* PR comments

* don't allow both registerall and register

* fix check for calls to both register methods

* PR comments for rename/small changes

* fix compile error

* simplify refreshasync path, fix naming from comments

* remove redundant if check

* simplify logic for minrefreshinterval

* fix smaller comments

* call loadselected when refreshing collection, separate data for individual refresh

* in progress change to registerall include ff

* fix load order

* fix comments, rename logging constants to match new behavior

* pr comments, refactor refreshasync

* clean up etags dictionary creation

* PR comments

* add uncommitted changes to testhelper

* update tests for registerall with feature flags, check ff keys to remove flags on refresh

* PR comments

* PR comments

* use invalidoperationexception in configurerefresh, update loggingconstants to match behavior

* remove unused changes

* Give the users the ability to have control over ConfigurationClient instance(s) used by the provider (#598) (#617)

* Introduced a new `AzureAppConfigurationClientFactory` class to handle the creation of `ConfigurationClient` instances

* remove clients dictionary since we will not have hits and clients are already stored in ConfigurationClientManager

* revert

* add license + remove unused usings

* ran dotnet format

* add capability of fallback to different stores

* add explicit type

* address comments

* remove scheme validation

---------

Co-authored-by: Sami Sadfa <71456174+samsadsam@users.noreply.github.com>
Co-authored-by: Sami Sadfa <samisadfa@microsoft.com>

* first draft tag filtering support

* add alternate APIs

* change to use ienumerable

* update featureflagoptions to match main options

* update keyvalueselector equals and hashcode

* update param comments for selects

* fix merge conflict errors

* add validation for tagsfilter param, add to comment

* edit error message for format

* edit comment

* add unit tests

* remove unused file

* revert versions

* update tests to include feature flag select

* add refresh test

* ff only refresh test

* update equals for selector

* fix equals

* update equals

* reorder properties in keyvalueselector

* upgrade to 8.2.0-preview (#638)

* fix incorrect test

* fix equals for selector

* update gethashcode for keyvalueselector

* PR comments, in progress

* update tests from PR comments

* add validation for number of tags, add test

* rename tagsFilter to tagsFilters everywhere

* fix usings, missing updates to ffoptions

* update ffoptions select again

* fix tests

* update sdk version

* update tagsfilters to tagfilters

* remove tagsfilters again

* PR comments

* PR comments

* Revert "Merge pull request #600 from Azure/rossgrambo/allocation_id"

This reverts commit 51d4ad7, reversing
changes made to d551536.

* Revert "Give the users the ability to have control over ConfigurationClient instance(s) used by the provider (#598) (#617)"

This reverts commit 6dc9ae2.

---------

Co-authored-by: Ross Grambo <rossgrambo@microsoft.com>
Co-authored-by: Sami Sadfa <samisadfa@microsoft.com>
Co-authored-by: Sami Sadfa <71456174+samsadsam@users.noreply.github.com>
Co-authored-by: Sami Sadfa <sami.sadfa2@gmail.com>
amerjusupovic and others added 9 commits May 7, 2025 10:27
* add comment to setclientfactory

* update comment

* update comment
* in progress fix shorten timeout PR

* dispose httpclienttransport

* remove unnecessary check

* fix disposal pattern

* fix static compile error

* remove unused using

* reset options

* fix options

* add line to options

* use retryoptions.networktimeout

* add test, update isfailoverable

* update test comment

* update test

* remove check for nested taskcanceledexception

* simplify if statement in isfailoverable
* add gitattributes and renormalize any files

* newline end of file

* file start with mit license

* fix typo
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR merges main into the release branch for version 8.2.0 and introduces new tag filtering functionality along with several dependency and API improvements. Key changes include:

  • Addition of tag filtering properties to key-value models and feature flag selectors.
  • Introduction of a client factory (IAzureClientFactory) for creating ConfigurationClient instances.
  • Updates to package versions and client options along with new activity tracing support.

Reviewed Changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
Models/KeyValueWatcher.cs Added a Tags property to watch key-value tags.
Models/KeyValueSelector.cs Extended equality and hash code computation to incorporate tag filters.
FeatureManagement/JsonElementExtensions.cs New utility for serializing JSON with sorted keys.
FeatureManagement/FeatureManagementKeyValueAdapter.cs Added allocation id calculation logic and removed obsolete feature flag id calculation.
FeatureFlagOptions.cs New overload of Select method to support tag filters with validation.
Extensions/StringExtensions.cs Added a ToBase64String extension method.
ConfigurationClientManager.cs Refactored client creation using IAzureClientFactory; removed legacy credential handling.
AzureAppConfigurationSource.cs, AzureAppConfigurationProvider.cs, AzureAppConfigurationOptions.cs Updated to leverage the new client factory, tag filters, and activity tracing.
AzureAppConfigurationClientFactory.cs New implementation of IAzureClientFactory for ConfigurationClient creation.
csproj files and .gitattributes Updated package versions and normalized text files.

@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@amerjusupovic amerjusupovic merged commit fd24144 into release/stable/v8 May 14, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants