Skip to content

Commit 17843ce

Browse files
Merge pull request #631 from Azure/main
Merge main to release/stable/v8 for 8.1.1 stable release
2 parents 4ac0aad + 961cdeb commit 17843ce

File tree

9 files changed

+80
-6
lines changed

9 files changed

+80
-6
lines changed

src/Microsoft.Azure.AppConfiguration.AspNetCore/Microsoft.Azure.AppConfiguration.AspNetCore.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<!-- Nuget Package Version Settings -->
2222

2323
<PropertyGroup>
24-
<OfficialVersion>8.1.0</OfficialVersion>
24+
<OfficialVersion>8.1.1</OfficialVersion>
2525
</PropertyGroup>
2626

2727
<PropertyGroup Condition="'$(CDP_PATCH_NUMBER)'!='' AND '$(CDP_BUILD_TYPE)'=='Official'">

src/Microsoft.Azure.AppConfiguration.Functions.Worker/Microsoft.Azure.AppConfiguration.Functions.Worker.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<!-- Nuget Package Version Settings -->
2525

2626
<PropertyGroup>
27-
<OfficialVersion>8.1.0</OfficialVersion>
27+
<OfficialVersion>8.1.1</OfficialVersion>
2828
</PropertyGroup>
2929

3030
<PropertyGroup Condition="'$(CDP_PATCH_NUMBER)'!='' AND '$(CDP_BUILD_TYPE)'=='Official'">

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationOptions.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class AzureAppConfigurationOptions
2222
{
2323
private const int MaxRetries = 2;
2424
private static readonly TimeSpan MaxRetryDelay = TimeSpan.FromMinutes(1);
25+
private static readonly KeyValueSelector DefaultQuery = new KeyValueSelector { KeyFilter = KeyFilter.Any, LabelFilter = LabelFilter.Null };
2526

2627
private List<KeyValueWatcher> _individualKvWatchers = new List<KeyValueWatcher>();
2728
private List<KeyValueWatcher> _ffWatchers = new List<KeyValueWatcher>();
@@ -159,7 +160,7 @@ public AzureAppConfigurationOptions()
159160
};
160161

161162
// Adds the default query to App Configuration if <see cref="Select"/> and <see cref="SelectSnapshot"/> are never called.
162-
_selectors = new List<KeyValueSelector> { new KeyValueSelector { KeyFilter = KeyFilter.Any, LabelFilter = LabelFilter.Null } };
163+
_selectors = new List<KeyValueSelector> { DefaultQuery };
163164
}
164165

165166
/// <summary>
@@ -201,7 +202,7 @@ public AzureAppConfigurationOptions Select(string keyFilter, string labelFilter
201202

202203
if (!_selectCalled)
203204
{
204-
_selectors.Clear();
205+
_selectors.Remove(DefaultQuery);
205206

206207
_selectCalled = true;
207208
}
@@ -229,7 +230,7 @@ public AzureAppConfigurationOptions SelectSnapshot(string name)
229230

230231
if (!_selectCalled)
231232
{
232-
_selectors.Clear();
233+
_selectors.Remove(DefaultQuery);
233234

234235
_selectCalled = true;
235236
}

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,11 @@ public void ProcessPushNotification(PushNotification pushNotification, TimeSpan?
548548

549549
if (_configClientManager.UpdateSyncToken(pushNotification.ResourceUri, pushNotification.SyncToken))
550550
{
551+
if (_requestTracingEnabled && _requestTracingOptions != null)
552+
{
553+
_requestTracingOptions.IsPushRefreshUsed = true;
554+
}
555+
551556
SetDirty(maxDelay);
552557
}
553558
else

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ internal class RequestTracingConstants
3333
public const string LoadBalancingEnabledTag = "LB";
3434
public const string SignalRUsedTag = "SignalR";
3535
public const string FailoverRequestTag = "Failover";
36+
public const string PushRefreshTag = "PushRefresh";
3637

3738
public const string FeatureFlagFilterTypeKey = "Filter";
3839
public const string CustomFilter = "CSTM";

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Microsoft.Extensions.Configuration.AzureAppConfiguration.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<!-- Nuget Package Version Settings -->
3636

3737
<PropertyGroup>
38-
<OfficialVersion>8.1.0</OfficialVersion>
38+
<OfficialVersion>8.1.1</OfficialVersion>
3939
</PropertyGroup>
4040

4141
<PropertyGroup Condition="'$(CDP_PATCH_NUMBER)'!='' AND '$(CDP_BUILD_TYPE)'=='Official'">

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ internal class RequestTracingOptions
6363
/// </summary>
6464
public bool IsFailoverRequest { get; set; } = false;
6565

66+
/// <summary>
67+
/// Flag to indicate whether push refresh is used.
68+
/// </summary>
69+
public bool IsPushRefreshUsed { get; set; } = false;
70+
6671
/// <summary>
6772
/// Checks whether any tracing feature is used.
6873
/// </summary>

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,11 @@ private static string CreateCorrelationContextHeader(RequestType requestType, Re
201201
correlationContextTags.Add(RequestTracingConstants.FailoverRequestTag);
202202
}
203203

204+
if (requestTracingOptions.IsPushRefreshUsed)
205+
{
206+
correlationContextTags.Add(RequestTracingConstants.PushRefreshTag);
207+
}
208+
204209
var sb = new StringBuilder();
205210

206211
foreach (KeyValuePair<string, string> kvp in correlationContextKeyValues)

tests/Tests.AzureAppConfiguration/FeatureManagementTests.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,6 +1066,63 @@ public void SelectFeatureFlags()
10661066
Assert.Null(config["FeatureManagement:App2_Feature2"]);
10671067
}
10681068

1069+
[Fact]
1070+
public void SelectOrderDoesNotAffectLoad()
1071+
{
1072+
var mockResponse = new Mock<Response>();
1073+
var mockClient = new Mock<ConfigurationClient>(MockBehavior.Strict);
1074+
1075+
List<ConfigurationSetting> kvCollection = new List<ConfigurationSetting>
1076+
{
1077+
ConfigurationModelFactory.ConfigurationSetting("TestKey1", "TestValue1", "label",
1078+
eTag: new ETag("0a76e3d7-7ec1-4e37-883c-9ea6d0d89e63")),
1079+
ConfigurationModelFactory.ConfigurationSetting("TestKey2", "TestValue2", "label",
1080+
eTag: new ETag("31c38369-831f-4bf1-b9ad-79db56c8b989"))
1081+
};
1082+
1083+
MockAsyncPageable GetTestKeys(SettingSelector selector, CancellationToken ct)
1084+
{
1085+
List<ConfigurationSetting> settingCollection;
1086+
1087+
if (selector.KeyFilter.StartsWith(FeatureManagementConstants.FeatureFlagMarker))
1088+
{
1089+
settingCollection = _featureFlagCollection;
1090+
}
1091+
else
1092+
{
1093+
settingCollection = kvCollection;
1094+
}
1095+
1096+
var copy = new List<ConfigurationSetting>();
1097+
var newSetting = settingCollection.FirstOrDefault(s => (s.Key == selector.KeyFilter && s.Label == selector.LabelFilter));
1098+
if (newSetting != null)
1099+
copy.Add(TestHelpers.CloneSetting(newSetting));
1100+
return new MockAsyncPageable(copy);
1101+
}
1102+
1103+
mockClient.Setup(c => c.GetConfigurationSettingsAsync(It.IsAny<SettingSelector>(), It.IsAny<CancellationToken>()))
1104+
.Returns((Func<SettingSelector, CancellationToken, MockAsyncPageable>)GetTestKeys);
1105+
1106+
var config = new ConfigurationBuilder()
1107+
.AddAzureAppConfiguration(options =>
1108+
{
1109+
options.ClientManager = TestHelpers.CreateMockedConfigurationClientManager(mockClient.Object);
1110+
options.UseFeatureFlags(ff =>
1111+
{
1112+
ff.Select("App1_Feature1", "App1_Label");
1113+
ff.Select("App2_Feature1", "App2_Label");
1114+
});
1115+
options.Select("TestKey1", "label");
1116+
options.Select("TestKey2", "label");
1117+
})
1118+
.Build();
1119+
1120+
Assert.Equal("True", config["FeatureManagement:App1_Feature1"]);
1121+
Assert.Equal("False", config["FeatureManagement:App2_Feature1"]);
1122+
Assert.Equal("TestValue1", config["TestKey1"]);
1123+
Assert.Equal("TestValue2", config["TestKey2"]);
1124+
}
1125+
10691126
[Fact]
10701127
public void TestNullAndMissingValuesForConditions()
10711128
{

0 commit comments

Comments
 (0)