public InfiniteTimerStandbyManager(IScriptHostManager scriptHostManager, IWebHostLanguageWorkerChannelManager languageWorkerChannelManager,
                                    IConfiguration configuration, IScriptWebHostEnvironment webHostEnvironment, IEnvironment environment,
                                    IOptionsMonitor <ScriptApplicationHostOptions> options, ILogger <StandbyManager> logger, HostNameProvider hostNameProvider)
     : base(scriptHostManager, languageWorkerChannelManager, configuration, webHostEnvironment, environment, options,
            logger, hostNameProvider, TimeSpan.FromMilliseconds(-1))
 {
 }
 public RpcInitializationService(IOptionsMonitor <ScriptApplicationHostOptions> applicationHostOptions, IEnvironment environment, IRpcServer rpcServer, IWebHostLanguageWorkerChannelManager languageWorkerChannelManager, ILogger <RpcInitializationService> logger)
 {
     _applicationHostOptions = applicationHostOptions ?? throw new ArgumentNullException(nameof(applicationHostOptions));
     _logger      = logger;
     _rpcServer   = rpcServer;
     _environment = environment;
     _languageWorkerChannelManager = languageWorkerChannelManager ?? throw new ArgumentNullException(nameof(languageWorkerChannelManager));
     _workerRuntime = _environment.GetEnvironmentVariable(LanguageWorkerConstants.FunctionWorkerRuntimeSettingName);
 }
Esempio n. 3
0
        private async Task <int> WaitForWebhostWorkerChannelsToStartup(IWebHostLanguageWorkerChannelManager channelManager, int expectedCount, string language)
        {
            int currentChannelCount = 0;
            await TestHelpers.Await(() =>
            {
                currentChannelCount = channelManager.GetChannels(language).Count();
                return(currentChannelCount == expectedCount);
            }, pollingInterval : 4 * 1000, timeout : 60 * 1000);

            return(currentChannelCount);
        }
 public StandbyManager(IScriptHostManager scriptHostManager, IWebHostLanguageWorkerChannelManager languageWorkerChannelManager, IConfiguration configuration, IScriptWebHostEnvironment webHostEnvironment,
                       IEnvironment environment, IOptionsMonitor <ScriptApplicationHostOptions> options, ILogger <StandbyManager> logger, HostNameProvider hostNameProvider, TimeSpan specializationTimerInterval)
 {
     _scriptHostManager               = scriptHostManager ?? throw new ArgumentNullException(nameof(scriptHostManager));
     _options                         = options ?? throw new ArgumentNullException(nameof(options));
     _logger                          = logger ?? throw new ArgumentNullException(nameof(logger));
     _specializationTask              = new Lazy <Task>(SpecializeHostCoreAsync, LazyThreadSafetyMode.ExecutionAndPublication);
     _webHostEnvironment              = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment));
     _environment                     = environment ?? throw new ArgumentNullException(nameof(environment));
     _configuration                   = configuration as IConfigurationRoot ?? throw new ArgumentNullException(nameof(configuration));
     _languageWorkerChannelManager    = languageWorkerChannelManager ?? throw new ArgumentNullException(nameof(languageWorkerChannelManager));
     _hostNameProvider                = hostNameProvider ?? throw new ArgumentNullException(nameof(hostNameProvider));
     _changeTokenCallbackSubscription = ChangeToken.RegisterChangeCallback(_ => _logger.LogDebug($"{nameof(StandbyManager)}.{nameof(ChangeToken)} callback has fired."), null);
     _specializationTimerInterval     = specializationTimerInterval;
 }
        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 LanguageWorkerChannelManagerEndToEndTests(TestFixture fixture)
 {
     Fixture = fixture;
     _languageWorkerChannelManager = (IWebHostLanguageWorkerChannelManager)fixture.Host.Services.GetService(typeof(IWebHostLanguageWorkerChannelManager));
 }
Esempio n. 7
0
 public StandbyManager(IScriptHostManager scriptHostManager, IWebHostLanguageWorkerChannelManager languageWorkerChannelManager, IConfiguration configuration, IScriptWebHostEnvironment webHostEnvironment,
                       IEnvironment environment, IOptionsMonitor <ScriptApplicationHostOptions> options, ILogger <StandbyManager> logger, HostNameProvider hostNameProvider, IApplicationLifetime applicationLifetime)
     : this(scriptHostManager, languageWorkerChannelManager, configuration, webHostEnvironment, environment, options, logger, hostNameProvider, applicationLifetime, TimeSpan.FromMilliseconds(500))
 {
 }