in src/WebJobs.Script/Utility.cs [1028:1060]
public static bool CanWorkerIndex(IEnumerable<RpcWorkerConfig> workerConfigs, IEnvironment environment, FunctionsHostingConfigOptions functionsHostingConfigOptions)
{
if (environment.IsLogicApp())
{
return false;
}
string appName = environment.GetAzureWebsiteUniqueSlotName();
bool workerIndexingFeatureFlagSet = FeatureFlags.IsEnabled(ScriptConstants.FeatureFlagEnableWorkerIndexing, environment);
bool workerIndexingDisabledViaHostingConfig = functionsHostingConfigOptions.WorkerIndexingDisabledApps.ToLowerInvariant().Split("|").Contains(appName);
bool workerIndexingEnabled = workerIndexingFeatureFlagSet || !workerIndexingDisabledViaHostingConfig;
if (!workerIndexingEnabled)
{
return false;
}
bool workerIndexingAvailable = false;
if (workerConfigs != null)
{
var workerRuntime = environment.GetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime);
var workerConfig = workerConfigs.FirstOrDefault(c => c.Description?.Language != null && c.Description.Language.Equals(workerRuntime, StringComparison.InvariantCultureIgnoreCase));
// if feature flag is enabled and workerConfig.WorkerIndexing == true, then return true
workerIndexingAvailable = workerConfig != null
&& workerConfig.Description != null
&& workerConfig.Description.WorkerIndexing != null
&& workerConfig.Description.WorkerIndexing.Equals("true", StringComparison.OrdinalIgnoreCase);
}
return workerIndexingEnabled && workerIndexingAvailable;
}