Skip to content

Commit 1bf8720

Browse files
authored
Parse and log WorkerMetadata information (#8481)
1 parent 1347a2b commit 1bf8720

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,12 +255,22 @@ internal void WorkerInitResponse(GrpcEvent initEvent)
255255
_workerChannelLogger.LogDebug("Received WorkerInitResponse. Worker process initialized");
256256
_initMessage = initEvent.Message.WorkerInitResponse;
257257
_workerChannelLogger.LogDebug($"Worker capabilities: {_initMessage.Capabilities}");
258+
259+
if (_initMessage.WorkerMetadata != null)
260+
{
261+
_initMessage.UpdateWorkerMetadata(_workerConfig);
262+
var workerMetadata = _initMessage.WorkerMetadata.ToString();
263+
_metricsLogger.LogEvent(MetricEventNames.WorkerMetadata, functionName: null, workerMetadata);
264+
_workerChannelLogger.LogDebug($"Worker metadata: {workerMetadata}");
265+
}
266+
258267
if (_initMessage.Result.IsFailure(out Exception exc))
259268
{
260269
HandleWorkerInitError(exc);
261270
_workerInitTask.SetResult(false);
262271
return;
263272
}
273+
264274
_state = _state | RpcWorkerChannelState.Initialized;
265275
_workerCapabilities.UpdateCapabilities(_initMessage.Capabilities);
266276
_isSharedMemoryDataTransferEnabled = IsSharedMemoryDataTransferEnabled();

src/WebJobs.Script.Grpc/MessageExtensions/GrpcMessageExtensionUtilities.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using Microsoft.AspNetCore.Http;
99
using Microsoft.Azure.WebJobs.Script.Grpc.Messages;
10+
using Microsoft.Azure.WebJobs.Script.Workers.Rpc;
1011

1112
namespace Microsoft.Azure.WebJobs.Script.Grpc
1213
{
@@ -77,6 +78,14 @@ public static Tuple<string, string, CookieOptions> RpcHttpCookieConverter(RpcHtt
7778
return new Tuple<string, string, CookieOptions>(cookie.Name, cookie.Value, cookieOptions);
7879
}
7980

81+
internal static void UpdateWorkerMetadata(this WorkerInitResponse initResponse, RpcWorkerConfig workerConfig)
82+
{
83+
initResponse.WorkerMetadata.RuntimeName = string.IsNullOrEmpty(initResponse.WorkerMetadata.RuntimeName)
84+
? workerConfig.Description.Language : initResponse.WorkerMetadata.RuntimeName;
85+
initResponse.WorkerMetadata.RuntimeVersion = string.IsNullOrEmpty(initResponse.WorkerMetadata.RuntimeVersion)
86+
? workerConfig.Description.DefaultRuntimeVersion : initResponse.WorkerMetadata.RuntimeVersion;
87+
}
88+
8089
private static SameSiteMode RpcSameSiteEnumConverter(RpcHttpCookie.Types.SameSite sameSite)
8190
{
8291
switch (sameSite)

src/WebJobs.Script/Diagnostics/MetricEventNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public static class MetricEventNames
3737

3838
// LanguageWorkerChannel events
3939
public const string FunctionLoadRequestResponse = "rpcworkerchannel.functionloadrequestresponse";
40+
public const string WorkerMetadata = "rpcworkerchannel.workerinitresponse.workermetadata";
4041

4142
// ScriptStartupTypeLocator events
4243
public const string ParseExtensions = "ScriptStartupTypeLocator.ParseExtensions";

src/WebJobs.Script/Workers/Rpc/RpcWorkerConstants.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static class RpcWorkerConstants
3838
// Rpc message length
3939
public const int DefaultMaxMessageLengthBytes = int.MaxValue;
4040

41-
// Capabilites
41+
// Capabilities
4242
public const string RawHttpBodyBytes = "RawHttpBodyBytes";
4343
public const string TypedDataCollection = "TypedDataCollection";
4444
public const string RpcHttpBodyOnly = "RpcHttpBodyOnly";
@@ -50,7 +50,7 @@ public static class RpcWorkerConstants
5050
public const string FunctionDataCache = "FunctionDataCache";
5151
public const string AcceptsListOfFunctionLoadRequests = "AcceptsListOfFunctionLoadRequests";
5252

53-
// Host Capabilites
53+
// Host Capabilities
5454
public const string V2Compatable = "V2Compatable";
5555

5656
// dotnet executable file path components

test/WebJobs.Script.Tests/Workers/Rpc/TestFunctionRpcService.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void PublishFunctionEnvironmentReloadResponseEvent()
7272
_eventManager.Publish(new InboundGrpcEvent(_workerId, responseMessage));
7373
}
7474

75-
public void PublishWorkerInitResponseEvent(IDictionary<string, string> capabilities = null)
75+
public void PublishWorkerInitResponseEvent(IDictionary<string, string> capabilities = null, WorkerMetadata workerMetadata = null)
7676
{
7777
StatusResult statusResult = new StatusResult()
7878
{
@@ -89,6 +89,11 @@ public void PublishWorkerInitResponseEvent(IDictionary<string, string> capabilit
8989
initResponse.Capabilities.Add(capabilities);
9090
}
9191

92+
if (workerMetadata != null)
93+
{
94+
initResponse.WorkerMetadata = workerMetadata;
95+
}
96+
9297
StreamingMessage responseMessage = new StreamingMessage()
9398
{
9499
WorkerInitResponse = initResponse

0 commit comments

Comments
 (0)