public void SendFunctionLoadRequests(ManagedDependencyOptions managedDependencyOptions) { if (_functions != null) { foreach (FunctionMetadata metadata in _functions.OrderBy(metadata => metadata.IsDisabled)) { SendFunctionLoadRequest(metadata, managedDependencyOptions); } } }
internal void SendFunctionLoadRequest(FunctionMetadata metadata, ManagedDependencyOptions managedDependencyOptions) { _functionLoadRequestResponseEvent = _metricsLogger.LatencyEvent(MetricEventNames.FunctionLoadRequestResponse); _workerChannelLogger.LogDebug("Sending FunctionLoadRequest for function:{functionName} with functionId:{id}", metadata.Name, metadata.FunctionId); // send a load request for the registered function SendStreamingMessage(new StreamingMessage { FunctionLoadRequest = GetFunctionLoadRequest(metadata, managedDependencyOptions) }); }
public void Test_ManagedDependencyOptionsSetup_Empty_Or_No_ManagedDependencies_InHostJson(string hostJson) { File.WriteAllText(_hostJsonFilePath, hostJson); Assert.True(File.Exists(_hostJsonFilePath)); var managedDependencyOptions = new ManagedDependencyOptions(); var configuration = BuildHostJsonConfiguration(); ManagedDependencyOptionsSetup managedDependencyOptionsSetup = new ManagedDependencyOptionsSetup(configuration); managedDependencyOptionsSetup.Configure(managedDependencyOptions); Assert.True(managedDependencyOptions.Enabled == false); }
public void SendFunctionLoadRequests(ManagedDependencyOptions managedDependencyOptions, TimeSpan?functionTimeout) { if (_functions != null) { if (functionTimeout.HasValue) { _functionLoadTimeout = functionTimeout.Value > _functionLoadTimeout ? functionTimeout.Value : _functionLoadTimeout; _eventSubscriptions.Add(_inboundWorkerEvents.Where(msg => msg.MessageType == MsgType.FunctionLoadResponse) .Timeout(_functionLoadTimeout) .Take(_functions.Count()) .Subscribe((msg) => LoadResponse(msg.Message.FunctionLoadResponse), HandleWorkerFunctionLoadError)); } else { _eventSubscriptions.Add(_inboundWorkerEvents.Where(msg => msg.MessageType == MsgType.FunctionLoadResponse) .Subscribe((msg) => LoadResponse(msg.Message.FunctionLoadResponse), HandleWorkerFunctionLoadError)); } foreach (FunctionMetadata metadata in _functions.OrderBy(metadata => metadata.IsDisabled())) { SendFunctionLoadRequest(metadata, managedDependencyOptions); } } }
public void SendFunctionLoadRequests(ManagedDependencyOptions managedDependencyOptions, TimeSpan?functionTimeout) { if (_functions != null) { if (functionTimeout.HasValue) { _functionLoadTimeout = functionTimeout.Value > _functionLoadTimeout ? functionTimeout.Value : _functionLoadTimeout; _eventSubscriptions.Add(_inboundWorkerEvents.Where(msg => msg.MessageType == MsgType.FunctionLoadResponse) .Timeout(_functionLoadTimeout) .Take(_functions.Count()) .Subscribe((msg) => LoadResponse(msg.Message.FunctionLoadResponse), HandleWorkerFunctionLoadError)); } else { _eventSubscriptions.Add(_inboundWorkerEvents.Where(msg => msg.MessageType == MsgType.FunctionLoadResponse) .Subscribe((msg) => LoadResponse(msg.Message.FunctionLoadResponse), HandleWorkerFunctionLoadError)); } // Load Request is also sent for disabled function as it is invocable using the portal and admin endpoints // Loading disabled functions at the end avoids unnecessary performance issues. Refer PR #5072 and commit #38b57883be28524fa6ee67a457fa47e96663094c _functions = _functions.OrderBy(metadata => metadata.IsDisabled()); // Check if the worker supports this feature bool capabilityEnabled = !string.IsNullOrEmpty(_workerCapabilities.GetCapabilityState(RpcWorkerConstants.AcceptsListOfFunctionLoadRequests)); if (capabilityEnabled) { SendFunctionLoadRequestCollection(_functions, managedDependencyOptions); } else { foreach (FunctionMetadata metadata in _functions) { SendFunctionLoadRequest(metadata, managedDependencyOptions); } } } }
internal FunctionLoadRequest GetFunctionLoadRequest(FunctionMetadata metadata, ManagedDependencyOptions managedDependencyOptions) { FunctionLoadRequest request = new FunctionLoadRequest() { FunctionId = metadata.FunctionId, Metadata = new RpcFunctionMetadata() { Name = metadata.Name, Directory = metadata.FunctionDirectory ?? string.Empty, EntryPoint = metadata.EntryPoint ?? string.Empty, ScriptFile = metadata.ScriptFile ?? string.Empty, IsProxy = metadata.IsProxy } }; if (managedDependencyOptions != null && managedDependencyOptions.Enabled) { _workerChannelLogger?.LogDebug($"Adding dependency download request to {_workerConfig.Description.Language} language worker"); request.ManagedDependencyEnabled = managedDependencyOptions.Enabled; } foreach (var binding in metadata.Bindings) { BindingInfo bindingInfo = binding.ToBindingInfo(); request.Metadata.Bindings.Add(binding.Name, bindingInfo); } return(request); }
internal FunctionLoadRequestCollection GetFunctionLoadRequestCollection(IEnumerable <FunctionMetadata> functions, ManagedDependencyOptions managedDependencyOptions) { var functionLoadRequestCollection = new FunctionLoadRequestCollection(); foreach (FunctionMetadata metadata in functions) { var functionLoadRequest = GetFunctionLoadRequest(metadata, managedDependencyOptions); functionLoadRequestCollection.FunctionLoadRequests.Add(functionLoadRequest); } return(functionLoadRequestCollection); }
internal void SendFunctionLoadRequestCollection(IEnumerable <FunctionMetadata> functions, ManagedDependencyOptions managedDependencyOptions) { _functionLoadRequestResponseEvent = _metricsLogger.LatencyEvent(MetricEventNames.FunctionLoadRequestResponse); FunctionLoadRequestCollection functionLoadRequestCollection = GetFunctionLoadRequestCollection(functions, managedDependencyOptions); _workerChannelLogger.LogDebug("Sending FunctionLoadRequestCollection with number of functions:'{count}'", functionLoadRequestCollection.FunctionLoadRequests.Count); // send load requests for the registered functions SendStreamingMessage(new StreamingMessage { FunctionLoadRequestCollection = functionLoadRequestCollection }); }
public void SendFunctionLoadRequests(ManagedDependencyOptions managedDependencies) { _testLogger.LogInformation("RegisterFunctions called"); }