Skip to content

Commit da9a765

Browse files
Avoiding initialization of multiple processes when a WebHost channel is avaialable and worker indexing is enabled (#8805) (#8811)
Co-authored-by: Fabio Cavalcante <[email protected]>
1 parent f7db2b0 commit da9a765

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/WebJobs.Script.Grpc/Channel/GrpcWorkerChannel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@ internal FunctionLoadRequestCollection GetFunctionLoadRequestCollection(IEnumera
478478

479479
public Task SendFunctionEnvironmentReloadRequest()
480480
{
481+
_functionsIndexingTask = new TaskCompletionSource<List<RawFunctionMetadata>>(TaskCreationOptions.RunContinuationsAsynchronously);
481482
_workerChannelLogger.LogDebug("Sending FunctionEnvironmentReloadRequest to WorkerProcess with Pid: '{0}'", _rpcWorkerProcess.Id);
482483
IDisposable latencyEvent = _metricsLogger.LatencyEvent(MetricEventNames.SpecializationEnvironmentReloadRequestResponse);
483484

src/WebJobs.Script/Workers/Rpc/FunctionRegistration/RpcFunctionInvocationDispatcher.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ public async Task InitializeAsync(IEnumerable<FunctionMetadata> functions, Cance
326326
Dictionary<string, TaskCompletionSource<IRpcWorkerChannel>> webhostLanguageWorkerChannels = _webHostLanguageWorkerChannelManager.GetChannels(_workerRuntime);
327327
if (webhostLanguageWorkerChannels != null)
328328
{
329-
int countOfReadyChannels = 0;
329+
int workerProcessCount = 0;
330330
foreach (string workerId in webhostLanguageWorkerChannels.Keys.ToList())
331331
{
332332
if (webhostLanguageWorkerChannels.TryGetValue(workerId, out TaskCompletionSource<IRpcWorkerChannel> initializedLanguageWorkerChannelTask))
@@ -341,8 +341,9 @@ public async Task InitializeAsync(IEnumerable<FunctionMetadata> functions, Cance
341341
{
342342
initializedLanguageWorkerChannel.SetupFunctionInvocationBuffers(_functions);
343343
initializedLanguageWorkerChannel.SendFunctionLoadRequests(_managedDependencyOptions.Value, _scriptOptions.FunctionTimeout);
344-
++countOfReadyChannels;
345344
}
345+
346+
++workerProcessCount;
346347
}
347348
catch (Exception ex)
348349
{
@@ -351,7 +352,7 @@ public async Task InitializeAsync(IEnumerable<FunctionMetadata> functions, Cance
351352
}
352353
}
353354
}
354-
StartWorkerProcesses(countOfReadyChannels, InitializeWebhostLanguageWorkerChannel, true, _webHostLanguageWorkerChannelManager.GetChannels(_workerRuntime));
355+
StartWorkerProcesses(workerProcessCount, InitializeWebhostLanguageWorkerChannel, true, _webHostLanguageWorkerChannelManager.GetChannels(_workerRuntime));
355356
}
356357
else
357358
{

0 commit comments

Comments
 (0)