Skip to content

Commit 1f75688

Browse files
author
Siddharth
authored
Fix Failing Multi-Language worker in case of dotnet runtime (#9085)
Resolves Issue where Multi Language will fail to start if `FUNCTION_WORKER_RUNTIME` is set to `dotnet`. Error: ``` System.InvalidOperationException : Sequence contains no elements at System.Linq.ThrowHelper.ThrowNoElementsException() at System.Linq.Enumerable.Max[TSource,TResult](IEnumerable`1 source,Func`2 selector) at Microsoft.Azure.WebJobs.Script.ScriptHost.AddFunctionDescriptors(IEnumerable`1 functionMetadata) at /_/src/WebJobs.Script/Host/ScriptHost.cs : 553 at async Microsoft.Azure.WebJobs.Script.ScriptHost.InitializeFunctionDescriptorsAsync(IEnumerable`1 functionMetadata,CancellationToken cancellationToken) at /_/src/WebJobs.Script/Host/ScriptHost.cs : 527 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.Azure.WebJobs.Script.ScriptHost.InitializeAsync(CancellationToken cancellationToken) at /_/src/WebJobs.Script/Host/ScriptHost.cs : 314 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.Azure.WebJobs.Script.ScriptHost.StartAsyncCore(CancellationToken cancellationToken) at /_/src/WebJobs.Script/Host/ScriptHost.cs : 258 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.Azure.WebJobs.Script.WebHost.WebJobsScriptHostService.UnsynchronizedStartHostAsync(ScriptHostStartupOperation activeOperation,Int32 attemptCount,JobHostStartupMode startupMode) at /_/src/WebJobs.Script.WebHost/WebJobsScriptHostService.cs : 311 ```
1 parent bdc8ce3 commit 1f75688

File tree

4 files changed

+6
-7
lines changed

4 files changed

+6
-7
lines changed

src/WebJobs.Script/Environment/EnvironmentExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ public static bool IsMultiLanguageRuntimeEnvironment(this IEnvironment environme
390390
{
391391
if (!isMultiLanguageEnabled.HasValue)
392392
{
393-
isMultiLanguageEnabled = environment.IsLogicApp() && FeatureFlags.IsEnabled(ScriptConstants.FeatureFlagEnableMultiLanguageWorker, environment);
393+
isMultiLanguageEnabled = environment.IsLogicApp();
394394
}
395395
return isMultiLanguageEnabled.Value;
396396
}

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ public static class ScriptConstants
123123
public const string FeatureFlagDisableMergedWebHostScriptHostConfiguration = "DisableMergedConfiguration";
124124
public const string FeatureFlagDisableWorkerIndexing = "DisableWorkerIndexing";
125125
public const string FeatureFlagEnableDebugTracing = "EnableDebugTracing";
126-
public const string FeatureFlagEnableMultiLanguageWorker = "EnableMultiLanguageWorker";
127126
public const string FeatureFlagEnableProxies = "EnableProxies";
128127
public const string HostingConfigDisableLinuxAppServiceDetailedExecutionEvents = "DisableLinuxExecutionDetails";
129128
public const string HostingConfigDisableLinuxAppServiceExecutionEventLogBackoff = "DisableLinuxLogBackoff";

src/WebJobs.Script/Workers/Rpc/Configuration/LanguageWorkerOptionsSetup.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ public LanguageWorkerOptionsSetup(IConfiguration configuration,
4141
public void Configure(LanguageWorkerOptions options)
4242
{
4343
string workerRuntime = _environment.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName);
44-
if (!string.IsNullOrEmpty(workerRuntime) && workerRuntime.Equals(RpcWorkerConstants.DotNetLanguageWorkerName, System.StringComparison.OrdinalIgnoreCase))
44+
45+
// Parsing worker.config.json should always be done in case of multi language worker
46+
if (!string.IsNullOrEmpty(workerRuntime) &&
47+
workerRuntime.Equals(RpcWorkerConstants.DotNetLanguageWorkerName, StringComparison.OrdinalIgnoreCase) &&
48+
!_environment.IsMultiLanguageRuntimeEnvironment())
4549
{
4650
// Skip parsing worker.config.json files for dotnet in-proc apps
4751
options.WorkerConfigs = new List<RpcWorkerConfig>();

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public async Task CodelessFunction_CanUse_MultipleLanguageProviders()
3939
var settings = new Dictionary<string, string>()
4040
{
4141
[EnvironmentSettingNames.AppKind] = "workflowApp",
42-
[EnvironmentSettingNames.AzureWebJobsFeatureFlags] = $"{ScriptConstants.FeatureFlagEnableMultiLanguageWorker}",
4342
};
4443
var testEnvironment = new TestEnvironment(settings);
4544

@@ -86,7 +85,6 @@ public async Task CodelessFunction_CanUse_SingleJavaLanguageProviders()
8685
var settings = new Dictionary<string, string>()
8786
{
8887
[EnvironmentSettingNames.AppKind] = "workflowApp",
89-
[EnvironmentSettingNames.AzureWebJobsFeatureFlags] = $"{ScriptConstants.FeatureFlagEnableMultiLanguageWorker}",
9088
};
9189
var testEnvironment = new TestEnvironment(settings);
9290

@@ -126,7 +124,6 @@ public async Task CodelessFunction_CanUse_SingleJavascriptLanguageProviders()
126124
var settings = new Dictionary<string, string>()
127125
{
128126
[EnvironmentSettingNames.AppKind] = "workflowApp",
129-
[EnvironmentSettingNames.AzureWebJobsFeatureFlags] = $"{ScriptConstants.FeatureFlagEnableMultiLanguageWorker}",
130127
};
131128
var testEnvironment = new TestEnvironment(settings);
132129

@@ -166,7 +163,6 @@ public async Task CodelessFunction_CanUse_NoLanguageProviders()
166163
var settings = new Dictionary<string, string>()
167164
{
168165
[EnvironmentSettingNames.AppKind] = "workflowApp",
169-
[EnvironmentSettingNames.AzureWebJobsFeatureFlags] = $"{ScriptConstants.FeatureFlagEnableMultiLanguageWorker}",
170166
};
171167
var testEnvironment = new TestEnvironment(settings);
172168

0 commit comments

Comments
 (0)