public static bool CanWorkerIndex()

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;
        }