// Specify the "builtin binding types". These are types that are directly accesible without needing an explicit load gesture. // This is the set of bindings we shipped prior to binding extensibility. // Map from BindingType to the Assembly Qualified Type name for its IExtensionConfigProvider object. public ScriptHost(IOptions <JobHostOptions> options, IOptions <LanguageWorkerOptions> languageWorkerOptions, IEnvironment environment, IJobHostContextFactory jobHostContextFactory, IConfiguration configuration, IDistributedLockManager distributedLockManager, IScriptEventManager eventManager, ILoggerFactory loggerFactory, IFunctionMetadataManager functionMetadataManager, IProxyMetadataManager proxyMetadataManager, IMetricsLogger metricsLogger, IOptions <ScriptJobHostOptions> scriptHostOptions, ITypeLocator typeLocator, IScriptJobHostEnvironment scriptHostEnvironment, IDebugStateProvider debugManager, IEnumerable <IScriptBindingProvider> bindingProviders, IPrimaryHostStateProvider primaryHostStateProvider, IJobHostMetadataProvider metadataProvider, IHostIdProvider hostIdProvider, ScriptSettingsManager settingsManager = null) : base(options, jobHostContextFactory) { _environment = environment; _typeLocator = typeLocator as ScriptTypeLocator ?? throw new ArgumentException(nameof(typeLocator), $"A {nameof(ScriptTypeLocator)} instance is required."); _instanceId = Guid.NewGuid().ToString(); _hostOptions = options; _configuration = configuration; _storageConnectionString = configuration.GetWebJobsConnectionString(ConnectionStringNames.Storage); _distributedLockManager = distributedLockManager; _functionMetadataManager = functionMetadataManager; _hostIdProvider = hostIdProvider; _proxyMetadataManager = proxyMetadataManager; _workerConfigs = languageWorkerOptions.Value.WorkerConfigs; ScriptOptions = scriptHostOptions.Value; _scriptHostEnvironment = scriptHostEnvironment; FunctionErrors = new Dictionary <string, ICollection <string> >(StringComparer.OrdinalIgnoreCase); EventManager = eventManager; _settingsManager = settingsManager ?? ScriptSettingsManager.Instance; _metricsLogger = metricsLogger; _hostLogPath = Path.Combine(ScriptOptions.RootLogPath, "Host"); _currentRuntimelanguage = _environment.GetEnvironmentVariable(LanguageWorkerConstants.FunctionWorkerRuntimeSettingName); _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger(LogCategories.Startup); Logger = _logger; _debugManager = debugManager; _primaryHostStateProvider = primaryHostStateProvider; _bindingProviders = new List <IScriptBindingProvider>(bindingProviders); _metadataProvider = metadataProvider; }
public static bool IsEnvironment(this IScriptJobHostEnvironment environment, string environmentName) { if (environment == null) { throw new ArgumentNullException(nameof(environment)); } return(string.Equals(environment.EnvironmentName, environmentName, StringComparison.OrdinalIgnoreCase)); }
public static bool IsDevelopment(this IScriptJobHostEnvironment environment) { if (environment == null) { throw new ArgumentNullException(nameof(environment)); } return(environment.IsEnvironment(EnvironmentName.Development)); }
public FunctionDispatcher(IOptions <ScriptJobHostOptions> scriptHostOptions, IMetricsLogger metricsLogger, IEnvironment environment, IScriptJobHostEnvironment scriptJobHostEnvironment, IScriptEventManager eventManager, ILoggerFactory loggerFactory, ILanguageWorkerChannelFactory languageWorkerChannelFactory, IOptions <LanguageWorkerOptions> languageWorkerOptions, IWebHostLanguageWorkerChannelManager webHostLanguageWorkerChannelManager, IJobHostLanguageWorkerChannelManager jobHostLanguageWorkerChannelManager, IOptions <ManagedDependencyOptions> managedDependencyOptions, IFunctionDispatcherLoadBalancer functionDispatcherLoadBalancer) { _metricsLogger = metricsLogger; _scriptOptions = scriptHostOptions.Value; _environment = environment; _scriptJobHostEnvironment = scriptJobHostEnvironment; _webHostLanguageWorkerChannelManager = webHostLanguageWorkerChannelManager; _jobHostLanguageWorkerChannelManager = jobHostLanguageWorkerChannelManager; _eventManager = eventManager; _workerConfigs = languageWorkerOptions.Value.WorkerConfigs; _managedDependencyOptions = managedDependencyOptions; _logger = loggerFactory.CreateLogger <FunctionDispatcher>(); _languageWorkerChannelFactory = languageWorkerChannelFactory; _workerRuntime = _environment.GetEnvironmentVariable(LanguageWorkerConstants.FunctionWorkerRuntimeSettingName); var processCount = _environment.GetEnvironmentVariable(LanguageWorkerConstants.FunctionsWorkerProcessCountSettingName); _maxProcessCount = (processCount != null && int.Parse(processCount) > 1) ? int.Parse(processCount) : 1; _maxProcessCount = _maxProcessCount > _maxAllowedProcessCount ? _maxAllowedProcessCount : _maxProcessCount; _functionDispatcherLoadBalancer = functionDispatcherLoadBalancer; State = FunctionDispatcherState.Default; _workerErrorSubscription = _eventManager.OfType <WorkerErrorEvent>() .Subscribe(WorkerError); _rpcChannelReadySubscriptions = _eventManager.OfType <RpcJobHostChannelReadyEvent>() .ObserveOn(NewThreadScheduler.Default) .Subscribe(AddOrUpdateWorkerChannels); _shutdownStandbyWorkerChannels = ShutdownWebhostLanguageWorkerChannels; _shutdownStandbyWorkerChannels = _shutdownStandbyWorkerChannels.Debounce(5000); }
public FileMonitoringService(IOptions <ScriptJobHostOptions> scriptOptions, ILoggerFactory loggerFactory, IScriptEventManager eventManager, IScriptJobHostEnvironment scriptEnvironment) { _scriptOptions = scriptOptions.Value; _eventManager = eventManager; _scriptEnvironment = scriptEnvironment; _hostLogPath = Path.Combine(_scriptOptions.RootLogPath, "Host"); _logger = loggerFactory.CreateLogger(LogCategories.Startup); // If a file change should result in a restart, we debounce the event to // ensure that only a single restart is triggered within a specific time window. // This allows us to deal with a large set of file change events that might // result from a bulk copy/unzip operation. In such cases, we only want to // restart after ALL the operations are complete and there is a quiet period. _restart = RestartAsync; _restart = _restart.Debounce(500); _shutdown = Shutdown; _shutdown = _shutdown.Debounce(500); }
public RpcFunctionInvocationDispatcher(IOptions <ScriptJobHostOptions> scriptHostOptions, IMetricsLogger metricsLogger, IEnvironment environment, IScriptJobHostEnvironment scriptJobHostEnvironment, IScriptEventManager eventManager, ILoggerFactory loggerFactory, IRpcWorkerChannelFactory rpcWorkerChannelFactory, IOptions <LanguageWorkerOptions> languageWorkerOptions, IWebHostRpcWorkerChannelManager webHostLanguageWorkerChannelManager, IJobHostRpcWorkerChannelManager jobHostLanguageWorkerChannelManager, IOptions <ManagedDependencyOptions> managedDependencyOptions, IRpcFunctionInvocationDispatcherLoadBalancer functionDispatcherLoadBalancer) { _metricsLogger = metricsLogger; _scriptOptions = scriptHostOptions.Value; _environment = environment; _scriptJobHostEnvironment = scriptJobHostEnvironment; _webHostLanguageWorkerChannelManager = webHostLanguageWorkerChannelManager; _jobHostLanguageWorkerChannelManager = jobHostLanguageWorkerChannelManager; _eventManager = eventManager; _workerConfigs = languageWorkerOptions.Value.WorkerConfigs; _managedDependencyOptions = managedDependencyOptions ?? throw new ArgumentNullException(nameof(managedDependencyOptions)); _logger = loggerFactory.CreateLogger <RpcFunctionInvocationDispatcher>(); _rpcWorkerChannelFactory = rpcWorkerChannelFactory; _workerRuntime = _environment.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName); var processCount = _environment.GetEnvironmentVariable(RpcWorkerConstants.FunctionsWorkerProcessCountSettingName); _maxProcessCount = (processCount != null && int.Parse(processCount) > 1) ? int.Parse(processCount) : 1; _maxProcessCount = _maxProcessCount > _maxAllowedProcessCount ? _maxAllowedProcessCount : _maxProcessCount; _functionDispatcherLoadBalancer = functionDispatcherLoadBalancer; State = FunctionInvocationDispatcherState.Default; _workerErrorSubscription = _eventManager.OfType <WorkerErrorEvent>() .Subscribe(WorkerError); _workerRestartSubscription = _eventManager.OfType <WorkerRestartEvent>() .Subscribe(WorkerRestart); _shutdownStandbyWorkerChannels = ShutdownWebhostLanguageWorkerChannels; _shutdownStandbyWorkerChannels = _shutdownStandbyWorkerChannels.Debounce(milliseconds: 5000); }
public HttpFunctionInvocationDispatcher(IOptions <ScriptJobHostOptions> scriptHostOptions, IMetricsLogger metricsLogger, IScriptJobHostEnvironment scriptJobHostEnvironment, IScriptEventManager eventManager, ILoggerFactory loggerFactory, IHttpWorkerChannelFactory httpWorkerChannelFactory) { _metricsLogger = metricsLogger; _scriptOptions = scriptHostOptions.Value; _scriptJobHostEnvironment = scriptJobHostEnvironment; _eventManager = eventManager; _logger = loggerFactory.CreateLogger <HttpFunctionInvocationDispatcher>(); _httpWorkerChannelFactory = httpWorkerChannelFactory ?? throw new ArgumentNullException(nameof(httpWorkerChannelFactory)); State = FunctionInvocationDispatcherState.Default; _workerErrorSubscription = _eventManager.OfType <HttpWorkerErrorEvent>() .Subscribe(WorkerError); _workerRestartSubscription = _eventManager.OfType <HttpWorkerRestartEvent>() .Subscribe(WorkerRestart); }
public FunctionInvocationDispatcherFactory(IOptions <ScriptJobHostOptions> scriptHostOptions, IMetricsLogger metricsLogger, IScriptJobHostEnvironment scriptJobHostEnvironment, IScriptEventManager eventManager, ILoggerFactory loggerFactory, IHttpWorkerChannelFactory httpWorkerChannelFactory, IRpcWorkerChannelFactory rpcWorkerChannelFactory, IOptions <HttpWorkerOptions> httpWorkerOptions, IOptions <LanguageWorkerOptions> rpcWorkerOptions, IEnvironment environment, IWebHostRpcWorkerChannelManager webHostLanguageWorkerChannelManager, IJobHostRpcWorkerChannelManager jobHostLanguageWorkerChannelManager, IOptions <ManagedDependencyOptions> managedDependencyOptions, IRpcFunctionInvocationDispatcherLoadBalancer functionDispatcherLoadBalancer) { if (httpWorkerOptions.Value == null) { throw new ArgumentNullException(nameof(httpWorkerOptions.Value)); } if (httpWorkerOptions.Value.Description != null) { _functionDispatcher = new HttpFunctionInvocationDispatcher(scriptHostOptions, metricsLogger, scriptJobHostEnvironment, eventManager, loggerFactory, httpWorkerChannelFactory); return; } _functionDispatcher = new RpcFunctionInvocationDispatcher(scriptHostOptions, metricsLogger, environment, scriptJobHostEnvironment, eventManager, loggerFactory, rpcWorkerChannelFactory, rpcWorkerOptions, webHostLanguageWorkerChannelManager, jobHostLanguageWorkerChannelManager, managedDependencyOptions, functionDispatcherLoadBalancer); }
public WebScriptHostExceptionHandler(IScriptJobHostEnvironment jobHostEnvironment, ILogger <WebScriptHostExceptionHandler> logger) { _jobHostEnvironment = jobHostEnvironment ?? throw new ArgumentNullException(nameof(jobHostEnvironment)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }