Skip to content

Commit 08b7fad

Browse files
committed
Log functionAppVersion during initialization
1 parent 0d506e7 commit 08b7fad

File tree

6 files changed

+33
-0
lines changed

6 files changed

+33
-0
lines changed

release_notes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
- My change description (#PR)
55
-->
66
- Add JitTrace Files for v4.1046
7+
- Log functionAppVersion during initialization to track rolling update progress (#11527)

src/WebJobs.Script.WebHost/Diagnostics/Extensions/ScriptHostServiceLoggerExtension.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,12 @@ public static class ScriptHostServiceLoggerExtension
204204
new EventId(531, nameof(RequestAborted)),
205205
"The request was aborted by the client (requestId: '{mS_ActivityId}').");
206206

207+
private static readonly Action<ILogger, string, Exception> _logFunctionAppVersion =
208+
LoggerMessage.Define<string>(
209+
LogLevel.Information,
210+
new EventId(532, nameof(LogFunctionAppVersion)),
211+
"Running following version from app configuration update or code content deployment: '{functionAppVersion}'.");
212+
207213
public static void HostStateChanged(this ILogger logger, ScriptHostState previousHostState, ScriptHostState newHostState)
208214
{
209215
var newState = newHostState.ToString();
@@ -251,6 +257,11 @@ public static void Initialization(this ILogger logger, int attemptCount, int sta
251257
_initialization(logger, attemptCount, startCount, operationId, null);
252258
}
253259

260+
public static void LogFunctionAppVersion(this ILogger logger, string functionAppVersion)
261+
{
262+
_logFunctionAppVersion(logger, functionAppVersion, null);
263+
}
264+
254265
public static void InStandByMode(this ILogger logger, Guid operationId)
255266
{
256267
_inStandByMode(logger, operationId, null);

src/WebJobs.Script.WebHost/Models/HostAssignmentContext.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public class HostAssignmentContext
2424
[JsonProperty("lastModifiedTime")]
2525
public DateTime LastModifiedTime { get; set; }
2626

27+
[JsonProperty("functionAppVersion")]
28+
public Guid FunctionAppVersion { get; set; }
29+
2730
[JsonProperty("MSISpecializationPayload")]
2831
public MSIContext MSIContext { get; set; }
2932

@@ -164,6 +167,11 @@ public void ApplyAppSettings(IEnvironment environment, ILogger logger)
164167
}
165168
environment.SetEnvironmentVariable(EnvironmentSettingNames.EasyAuthClientId, EasyAuthSettings.SiteAuthClientId);
166169
}
170+
171+
if (FunctionAppVersion != Guid.Empty)
172+
{
173+
environment.SetEnvironmentVariable(EnvironmentSettingNames.FunctionAppVersion, FunctionAppVersion.ToString());
174+
}
167175
}
168176
}
169177
}

src/WebJobs.Script.WebHost/WebJobsScriptHostService.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,13 @@ private void LogInitialization(IHost host, bool isOffline, int attemptCount, int
798798
logger.InStandByMode(operationId);
799799
}
800800

801+
// Log function app version for rolling update tracking
802+
var functionAppVersion = _environment.GetFunctionAppVersion();
803+
if (!string.IsNullOrEmpty(functionAppVersion))
804+
{
805+
logger.LogFunctionAppVersion(functionAppVersion);
806+
}
807+
801808
// Log settings
802809
var functionWorkerRuntime = _environment.GetEnvironmentVariable(FunctionWorkerRuntime);
803810
var functionWorkerRuntimeVersion = _environment.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeVersionSettingName);

src/WebJobs.Script/Environment/EnvironmentExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,11 @@ public static string GetFunctionsWorkerRuntime(this IEnvironment environment)
653653
return environment.GetEnvironmentVariableOrDefault(FunctionWorkerRuntime, string.Empty);
654654
}
655655

656+
public static string GetFunctionAppVersion(this IEnvironment environment)
657+
{
658+
return environment.GetEnvironmentVariableOrDefault(FunctionAppVersion, string.Empty);
659+
}
660+
656661
/// <summary>
657662
/// Gets a value indicating whether AzureFileShare should be mounted when specializing Linux Consumption workers.
658663
/// </summary>

src/WebJobs.Script/Environment/EnvironmentSettingNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public static class EnvironmentSettingNames
3535
public const string AppInsightsAgent = "APPLICATIONINSIGHTS_ENABLE_AGENT";
3636
public const string FunctionsExtensionVersion = "FUNCTIONS_EXTENSION_VERSION";
3737
public const string FunctionWorkerRuntime = "FUNCTIONS_WORKER_RUNTIME";
38+
public const string FunctionAppVersion = "FUNCTION_APP_VERSION";
3839
public const string WorkerProbingPaths = "WORKER_PROBING_PATHS";
3940
public const string ContainerName = "CONTAINER_NAME";
4041
public const string WebsitePodName = "WEBSITE_POD_NAME";

0 commit comments

Comments
 (0)