示例#1
0
        // 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 FunctionFileLoggerProvider(IOptions <ScriptJobHostOptions> scriptOptions, IFileLoggingStatusManager fileLoggingStatusManager,
                                   IPrimaryHostStateProvider primaryHostStateProvider)
 {
     _roogLogPath          = scriptOptions.Value.RootLogPath;
     _isFileLoggingEnabled = () => fileLoggingStatusManager.IsFileLoggingEnabled;
     _isPrimary            = () => primaryHostStateProvider.IsPrimary;
     _hostInstanceId       = scriptOptions.Value.InstanceId;
 }
 public FunctionFileLoggerProvider(IOptions <ScriptJobHostOptions> scriptOptions, IFileLoggingStatusManager fileLoggingStatusManager,
                                   IPrimaryHostStateProvider primaryHostStateProvider, IFileWriterFactory fileWriterFactory)
 {
     _roogLogPath          = scriptOptions.Value.RootLogPath;
     _isFileLoggingEnabled = () => fileLoggingStatusManager.IsFileLoggingEnabled;
     _isPrimary            = () => primaryHostStateProvider.IsPrimary;
     _hostInstanceId       = scriptOptions.Value.InstanceId;
     _fileWriterFactory    = fileWriterFactory ?? throw new ArgumentNullException(nameof(fileWriterFactory));
 }
示例#4
0
        public FunctionsSyncService(ILoggerFactory loggerFactory, IScriptHostManager scriptHostManager, IPrimaryHostStateProvider primaryHostStateProvider, IFunctionsSyncManager functionsSyncManager)
        {
            ArgumentNullException.ThrowIfNull(loggerFactory);

            DueTime                   = 30 * 1000;
            _scriptHostManager        = scriptHostManager;
            _primaryHostStateProvider = primaryHostStateProvider;
            _functionsSyncManager     = functionsSyncManager;
            _logger                   = loggerFactory.CreateLogger(ScriptConstants.LogCategoryHostGeneral);
        }
示例#5
0
 public ChangeAnalysisService(ILogger <ChangeAnalysisService> logger,
                              IEnvironment environment,
                              IChangeAnalysisStateProvider changeAnalysisStateProvider,
                              IPrimaryHostStateProvider hostStateProvider)
 {
     _environment                 = environment;
     _hostStateProvider           = hostStateProvider;
     _changeAnalysisStateProvider = changeAnalysisStateProvider;
     _logger                  = logger;
     _analysisSemaphore       = new SemaphoreSlim(1, 1);
     _cancellationTokenSource = new CancellationTokenSource();
 }
        public FunctionsScaleMonitorService(IScaleMonitorManager monitorManager, IScaleMetricsRepository metricsRepository, IPrimaryHostStateProvider primaryHostStateProvider, IEnvironment environment, ILoggerFactory loggerFactory, IOptions <ScaleOptions> scaleOptions)
        {
            _monitorManager           = monitorManager;
            _metricsRepository        = metricsRepository;
            _primaryHostStateProvider = primaryHostStateProvider;
            _environment  = environment;
            _logger       = loggerFactory.CreateLogger <FunctionsScaleMonitorService>();
            _scaleOptions = scaleOptions.Value;

            _interval = _scaleOptions.ScaleMetricsSampleInterval;
            _timer    = new Timer(OnTimer, null, Timeout.Infinite, Timeout.Infinite);
        }
        public PrimaryHostCoordinator(IOptions <PrimaryHostCoordinatorOptions> coordinatorOptions, IHostIdProvider hostIdProvider, IDistributedLockManager lockManager,
                                      ScriptSettingsManager settingsManager, IPrimaryHostStateProvider primaryHostStateProvider, ILoggerFactory loggerFactory)
        {
            _leaseTimeout      = coordinatorOptions.Value.LeaseTimeout;
            _hostIdProvider    = hostIdProvider;
            _websiteInstanceId = settingsManager.AzureWebsiteInstanceId;

            _lockManager = lockManager;
            if (lockManager == null)
            {
                throw new ArgumentNullException(nameof(lockManager));
            }

            // Renew the lease three seconds before it expires
            _renewalInterval = coordinatorOptions.Value.RenewalInterval ?? _leaseTimeout.Add(TimeSpan.FromSeconds(-3));

            // Attempt to acquire a lease every 5 seconds
            _leaseRetryInterval = TimeSpan.FromSeconds(5);

            _timer = new Timer(ProcessLeaseTimerTick);

            _logger = loggerFactory.CreateLogger(ScriptConstants.LogCategoryHostGeneral);
            _primaryHostStateProvider = primaryHostStateProvider;
        }
        // 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 <HttpWorkerOptions> httpWorkerOptions,
                          IEnvironment environment,
                          IJobHostContextFactory jobHostContextFactory,
                          IConfiguration configuration,
                          IDistributedLockManager distributedLockManager,
                          IScriptEventManager eventManager,
                          ILoggerFactory loggerFactory,
                          IFunctionInvocationDispatcherFactory functionDispatcherFactory,
                          IFunctionMetadataManager functionMetadataManager,
                          IFileLoggingStatusManager fileLoggingStatusManager,
                          IMetricsLogger metricsLogger,
                          IOptions <ScriptJobHostOptions> scriptHostOptions,
                          ITypeLocator typeLocator,
                          IScriptHostManager scriptHostManager,
                          IDebugStateProvider debugManager,
                          IEnumerable <IScriptBindingProvider> bindingProviders,
                          IPrimaryHostStateProvider primaryHostStateProvider,
                          IJobHostMetadataProvider metadataProvider,
                          IHostIdProvider hostIdProvider,
                          IHttpRoutesManager httpRoutesManager,
                          IApplicationLifetime applicationLifetime,
                          IExtensionBundleManager extensionBundleManager,
                          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;
            _fileLoggingStatusManager = fileLoggingStatusManager;
            _applicationLifetime      = applicationLifetime;
            _hostIdProvider           = hostIdProvider;
            _httpRoutesManager        = httpRoutesManager;
            _isHttpWorker             = httpWorkerOptions.Value.Description != null;
            ScriptOptions             = scriptHostOptions.Value;
            _scriptHostManager        = scriptHostManager;
            FunctionErrors            = new Dictionary <string, ICollection <string> >(StringComparer.OrdinalIgnoreCase);
            EventManager              = eventManager;
            _functionDispatcher       = functionDispatcherFactory.GetFunctionDispatcher();
            _settingsManager          = settingsManager ?? ScriptSettingsManager.Instance;
            ExtensionBundleManager    = extensionBundleManager;

            _metricsLogger = metricsLogger;

            _hostLogPath = Path.Combine(ScriptOptions.RootLogPath, "Host");

            _workerRuntime = _environment.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName);

            _loggerFactory = loggerFactory;
            _logger        = loggerFactory.CreateLogger(LogCategories.Startup);
            Logger         = _logger;

            _debugManager             = debugManager;
            _primaryHostStateProvider = primaryHostStateProvider;
            _bindingProviders         = new List <IScriptBindingProvider>(bindingProviders);
            _metadataProvider         = metadataProvider;
            _eventSubscriptions.Add(EventManager.OfType <FunctionIndexingEvent>()
                                    .Subscribe(evt =>
            {
                HandleHostError(evt.Exception);
            }));
        }