Skip to content

Commit d6bfa18

Browse files
VpOfEngineeringsoninarenazfuncgh
authored
4.16.5 Hotfix (#9165)
* Revert "Switching worker indexing feature flag from opt-in to opt-out (#8864)" (#9163) * Bumping minor version --------- Co-authored-by: Naren Soni <[email protected]> Co-authored-by: azfuncgh <[email protected]>
1 parent 9195980 commit d6bfa18

File tree

10 files changed

+30
-33
lines changed

10 files changed

+30
-33
lines changed

build/common.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<LangVersion>latest</LangVersion>
66
<MajorVersion>4</MajorVersion>
77
<MinorVersion>16</MinorVersion>
8-
<PatchVersion>4</PatchVersion>
8+
<PatchVersion>5</PatchVersion>
99
<BuildNumber Condition="'$(BuildNumber)' == '' ">0</BuildNumber>
1010
<PreviewVersion></PreviewVersion>
1111

src/WebJobs.Script/Host/WorkerFunctionMetadataProvider.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ namespace Microsoft.Azure.WebJobs.Script
2020
internal class WorkerFunctionMetadataProvider : IWorkerFunctionMetadataProvider
2121
{
2222
private readonly Dictionary<string, ICollection<string>> _functionErrors = new Dictionary<string, ICollection<string>>();
23-
private readonly IOptions<ScriptApplicationHostOptions> _scriptApplicationHostOptions;
23+
private readonly IOptions<ScriptJobHostOptions> _scriptOptions;
2424
private readonly ILogger _logger;
2525
private readonly IEnvironment _environment;
2626
private readonly IWebHostRpcWorkerChannelManager _channelManager;
2727
private string _workerRuntime;
2828
private ImmutableArray<FunctionMetadata> _functions;
2929

3030
public WorkerFunctionMetadataProvider(
31-
IOptions<ScriptApplicationHostOptions> scriptOptions,
31+
IOptions<ScriptJobHostOptions> scriptOptions,
3232
ILogger<WorkerFunctionMetadataProvider> logger,
3333
IEnvironment environment,
3434
IWebHostRpcWorkerChannelManager webHostRpcWorkerChannelManager)
3535
{
36-
_scriptApplicationHostOptions = scriptOptions;
36+
_scriptOptions = scriptOptions;
3737
_logger = logger;
3838
_environment = environment;
3939
_channelManager = webHostRpcWorkerChannelManager;
@@ -95,7 +95,7 @@ public async Task<FunctionMetadataResult> GetFunctionMetadataAsync(IEnumerable<R
9595
_logger.FunctionMetadataProviderFunctionFound(_functions.IsDefault ? 0 : _functions.Count());
9696

9797
// Validate if the app has functions in legacy format and add in logs to inform about the mixed app
98-
_ = Task.Delay(TimeSpan.FromMinutes(1)).ContinueWith(t => ValidateFunctionAppFormat(_scriptApplicationHostOptions.Value.ScriptPath, _logger, _environment));
98+
_ = Task.Delay(TimeSpan.FromMinutes(1)).ContinueWith(t => ValidateFunctionAppFormat(_scriptOptions.Value.RootScriptPath, _logger, _environment));
9999

100100
break;
101101
}

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public static class ScriptConstants
121121
public const string FeatureFlagEnableDiagnosticEventLogging = "EnableDiagnosticEventLogging";
122122
public const string FeatureFlagDisableDiagnosticEventLogging = "DisableDiagnosticEventLogging";
123123
public const string FeatureFlagDisableMergedWebHostScriptHostConfiguration = "DisableMergedConfiguration";
124-
public const string FeatureFlagDisableWorkerIndexing = "DisableWorkerIndexing";
124+
public const string FeatureFlagEnableWorkerIndexing = "EnableWorkerIndexing";
125125
public const string FeatureFlagEnableDebugTracing = "EnableDebugTracing";
126126
public const string FeatureFlagEnableMultiLanguageWorker = "EnableMultiLanguageWorker";
127127
public const string FeatureFlagEnableProxies = "EnableProxies";

src/WebJobs.Script/Utility.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -911,9 +911,12 @@ public static void ValidateRetryOptions(RetryOptions
911911

912912
public static bool CanWorkerIndex(IEnumerable<RpcWorkerConfig> workerConfigs, IEnvironment environment)
913913
{
914-
if (!FeatureFlags.IsEnabled(ScriptConstants.FeatureFlagDisableWorkerIndexing, environment)
915-
&& workerConfigs != null
916-
&& !environment.IsMultiLanguageRuntimeEnvironment())
914+
if (!FeatureFlags.IsEnabled(ScriptConstants.FeatureFlagEnableWorkerIndexing, environment))
915+
{
916+
return false;
917+
}
918+
919+
if (workerConfigs != null && !environment.IsMultiLanguageRuntimeEnvironment())
917920
{
918921
var workerRuntime = environment.GetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime);
919922
var workerConfig = workerConfigs.Where(c => c.Description != null && c.Description.Language != null && c.Description.Language.Equals(workerRuntime, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

test/WebJobs.Script.Tests.Integration/WebHostEndToEnd/EndToEndTestFixture.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,6 @@ string GetDestPath(int counter)
122122
string logPath = Path.Combine(Path.GetTempPath(), @"Functions");
123123
if (!string.IsNullOrEmpty(_functionsWorkerRuntime))
124124
{
125-
string currentFeatureFlags = Environment.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags);
126-
var featureFlags = string.IsNullOrEmpty(currentFeatureFlags) ? ScriptConstants.FeatureFlagDisableWorkerIndexing : $"{currentFeatureFlags}, {ScriptConstants.FeatureFlagDisableWorkerIndexing}";
127-
Environment.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, featureFlags);
128125
Environment.SetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName, _functionsWorkerRuntime);
129126
Environment.SetEnvironmentVariable(RpcWorkerConstants.FunctionsWorkerProcessCountSettingName, _workerProcessCount.ToString());
130127
}

test/WebJobs.Script.Tests.Shared/TestHostBuilderExtensions.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33

44
using System;
55
using System.Collections.Generic;
6-
using System.Collections.Immutable;
7-
using System.Threading.Tasks;
86
using Microsoft.Azure.WebJobs;
97
using Microsoft.Azure.WebJobs.Host.Storage;
108
using Microsoft.Azure.WebJobs.Script;
@@ -102,13 +100,11 @@ private static IServiceCollection AddFunctionMetadataManager(this IServiceCollec
102100
var optionsMonitor = new OptionsMonitor<ScriptApplicationHostOptions>(factory, changeTokens, factory);
103101

104102
var metadataProvider = new HostFunctionMetadataProvider(optionsMonitor, NullLogger<HostFunctionMetadataProvider>.Instance, metricsLogger);
105-
106-
var workerProvider = new Mock<IWorkerFunctionMetadataProvider>();
107-
workerProvider.Setup(m => m.GetFunctionMetadataAsync(It.IsAny<IEnumerable<RpcWorkerConfig>>(), false)).Returns(Task.FromResult(new FunctionMetadataResult(true, ImmutableArray<FunctionMetadata>.Empty)));
108-
var defaultProvider = new FunctionMetadataProvider(NullLogger<FunctionMetadataProvider>.Instance, workerProvider.Object, metadataProvider);
103+
var defaultProvider = new FunctionMetadataProvider(NullLogger<FunctionMetadataProvider>.Instance, null, metadataProvider);
109104
var metadataManager = TestFunctionMetadataManager.GetFunctionMetadataManager(new OptionsWrapper<ScriptJobHostOptions>(new ScriptJobHostOptions()), defaultProvider, new List<IFunctionProvider>(), new OptionsWrapper<HttpWorkerOptions>(new HttpWorkerOptions()), new NullLoggerFactory(), new TestOptionsMonitor<LanguageWorkerOptions>(TestHelpers.GetTestLanguageWorkerOptions()));
110105
services.AddSingleton<IFunctionMetadataManager>(metadataManager);
111106
services.AddSingleton<IFunctionMetadataProvider>(defaultProvider);
107+
112108
return services;
113109
}
114110
}

test/WebJobs.Script.Tests/FunctionMetadataProviderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void GetFunctionMetadataAsync_HostIndexing()
8484
functionMetadataCollection.Add(GetTestFunctionMetadata());
8585

8686
var workerConfigs = TestHelpers.GetTestWorkerConfigs().ToImmutableArray();
87-
workerConfigs.ToList().ForEach(config => config.Description.WorkerIndexing = "false");
87+
workerConfigs.ToList().ForEach(config => config.Description.WorkerIndexing = "true");
8888
var scriptjobhostoptions = new ScriptJobHostOptions();
8989
scriptjobhostoptions.RootScriptPath = Path.Combine(Environment.CurrentDirectory, @"..", "..", "..", "..", "..", "sample", "node");
9090

test/WebJobs.Script.Tests/ScriptStartupTypeDiscovererTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ void CopyToBin(string path)
601601
tempOptions.WorkerConfigs.Add(workerConfig);
602602

603603
var languageWorkerOptions = new TestOptionsMonitor<LanguageWorkerOptions>(tempOptions);
604+
Environment.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagEnableWorkerIndexing);
604605
Environment.SetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime, "python");
605606
var discoverer = new ScriptStartupTypeLocator(directory.Path, testLogger, mockExtensionBundleManager.Object, mockFunctionMetadataManager, testMetricsLogger, languageWorkerOptions);
606607

test/WebJobs.Script.Tests/UtilityTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -857,17 +857,17 @@ public void GetFunctionAppContentEditingState_Returns_Expected(bool isFileSystem
857857
}
858858

859859
[Theory]
860-
[InlineData(true, true, false)]
861-
[InlineData(true, false, false)]
860+
[InlineData(false, true, false)]
862861
[InlineData(false, false, false)]
863-
[InlineData(false, true, true)]
864-
public void VerifyWorkerIndexingDecisionLogic(bool disableWorkerIndexingFeatureFlag, bool workerIndexingConfigProperty, bool expected)
862+
[InlineData(true, false, false)]
863+
[InlineData(true, true, true)]
864+
public void VerifyWorkerIndexingDecisionLogic(bool workerIndexingFeatureFlag, bool workerIndexingConfigProperty, bool expected)
865865
{
866866
var testEnv = new TestEnvironment();
867867
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime, RpcWorkerConstants.PythonLanguageWorkerName);
868-
if (disableWorkerIndexingFeatureFlag)
868+
if (workerIndexingFeatureFlag)
869869
{
870-
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagDisableWorkerIndexing);
870+
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagEnableWorkerIndexing);
871871
}
872872
RpcWorkerConfig workerConfig = new RpcWorkerConfig() { Description = TestHelpers.GetTestWorkerDescription("python", "none", workerIndexingConfigProperty) };
873873
bool workerShouldIndex = Utility.CanWorkerIndex(new List<RpcWorkerConfig>() { workerConfig }, testEnv);
@@ -881,9 +881,9 @@ public void WorkerIndexingDecisionLogic_NullConfig(bool workerIndexingFeatureFla
881881
{
882882
var testEnv = new TestEnvironment();
883883
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime, RpcWorkerConstants.PythonLanguageWorkerName);
884-
if (!workerIndexingFeatureFlag)
884+
if (workerIndexingFeatureFlag)
885885
{
886-
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagDisableWorkerIndexing);
886+
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagEnableWorkerIndexing);
887887
}
888888
bool workerShouldIndex = Utility.CanWorkerIndex(null, testEnv);
889889
Assert.Equal(expected, workerShouldIndex);
@@ -896,9 +896,9 @@ public void WorkerIndexingDecisionLogic_NullConfigDescription(bool workerIndexin
896896
{
897897
var testEnv = new TestEnvironment();
898898
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime, RpcWorkerConstants.PythonLanguageWorkerName);
899-
if (!workerIndexingFeatureFlag)
899+
if (workerIndexingFeatureFlag)
900900
{
901-
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagDisableWorkerIndexing);
901+
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagEnableWorkerIndexing);
902902
}
903903
RpcWorkerConfig workerConfig = new RpcWorkerConfig();
904904
bool workerShouldIndex = Utility.CanWorkerIndex(new List<RpcWorkerConfig>() { workerConfig }, testEnv);
@@ -912,9 +912,9 @@ public void WorkerIndexingDecisionLogic_NullWorkerIndexingProperty(bool workerIn
912912
{
913913
var testEnv = new TestEnvironment();
914914
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime, RpcWorkerConstants.PythonLanguageWorkerName);
915-
if (!workerIndexingFeatureFlag)
915+
if (workerIndexingFeatureFlag)
916916
{
917-
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagDisableWorkerIndexing);
917+
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagEnableWorkerIndexing);
918918
}
919919
RpcWorkerConfig workerConfig = new RpcWorkerConfig()
920920
{

test/WebJobs.Script.Tests/Workers/Rpc/RpcFunctionInvocationDispatcherTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -646,9 +646,9 @@ private static RpcFunctionInvocationDispatcher GetTestFunctionDispatcher(int max
646646
{
647647
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime, runtime);
648648
}
649-
if (!workerIndexing)
649+
if (workerIndexing)
650650
{
651-
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagDisableWorkerIndexing);
651+
testEnv.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, ScriptConstants.FeatureFlagEnableWorkerIndexing);
652652
}
653653
if (placeholder)
654654
{

0 commit comments

Comments
 (0)