Skip to content

Commit a68b37b

Browse files
mathewcwbail
andauthored
Add functions ext version into building log (#8705)
* Add functions extension version in the host building process, to prevent lost this informatiopn in case of failing before we aere able to log the "starting host". resolves #8511 fix: variable name fix: remove lines and add var type * Fixing test Co-authored-by: Guilherme Bail <[email protected]>
1 parent ac7d974 commit a68b37b

File tree

5 files changed

+33
-8
lines changed

5 files changed

+33
-8
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ public static class ScriptHostServiceLoggerExtension
9090
new EventId(512, nameof(Restarted)),
9191
"Host restarted.");
9292

93-
private static readonly Action<ILogger, bool, bool, Guid, Exception> _building =
94-
LoggerMessage.Define<bool, bool, Guid>(
93+
private static readonly Action<ILogger, string, bool, bool, Guid, Exception> _building =
94+
LoggerMessage.Define<string, bool, bool, Guid>(
9595
LogLevel.Information,
9696
new EventId(513, nameof(Building)),
97-
"Building host: startup suppressed: '{skipHostStartup}', configuration suppressed: '{skipHostJsonConfiguration}', startup operation id: '{operationId}'");
97+
"Building host: version spec: {functionsExtensionVersion}, startup suppressed: '{skipHostStartup}', configuration suppressed: '{skipHostJsonConfiguration}', startup operation id: '{operationId}'");
9898

9999
private static readonly Action<ILogger, Guid, Exception> _startupOperationWasCanceled =
100100
LoggerMessage.Define<Guid>(
@@ -264,9 +264,9 @@ public static void Restarted(this ILogger logger)
264264
_restarted(logger, null);
265265
}
266266

267-
public static void Building(this ILogger logger, bool skipHostStartup, bool skipHostJsonConfiguration, Guid operationId)
267+
public static void Building(this ILogger logger, string functionExtensionVersion, bool skipHostStartup, bool skipHostJsonConfiguration, Guid operationId)
268268
{
269-
_building(logger, skipHostStartup, skipHostJsonConfiguration, operationId, null);
269+
_building(logger, functionExtensionVersion, skipHostStartup, skipHostJsonConfiguration, operationId, null);
270270
}
271271

272272
public static void StartupOperationWasCanceled(this ILogger logger, Guid operationId)

src/WebJobs.Script.WebHost/WebJobsScriptHostService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,8 @@ private async Task UnsynchronizedStartHostAsync(ScriptHostStartupOperation activ
269269
// If we're in a non-transient error state or offline, skip host initialization
270270
bool skipJobHostStartup = isOffline || hasNonTransientErrors;
271271
bool skipHostJsonConfiguration = startupMode == JobHostStartupMode.HandlingConfigurationParsingError;
272-
_logger.Building(skipJobHostStartup, skipHostJsonConfiguration, activeOperation.Id);
272+
string functionsExtensionVersion = _environment.GetFunctionsExtensionVersion();
273+
_logger.Building(functionsExtensionVersion, skipJobHostStartup, skipHostJsonConfiguration, activeOperation.Id);
273274

274275
using (_metricsLogger.LatencyEvent(MetricEventNames.ScriptHostManagerBuildScriptHost))
275276
{

src/WebJobs.Script/Environment/EnvironmentExtensions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,5 +584,14 @@ public static void ClearCache()
584584
isMultiLanguageEnabled = null;
585585
isApplicationInsightsAgentEnabled = null;
586586
}
587+
588+
/// <summary>
589+
/// Gets a value indicated in the variable FUNCTIONS_EXTENSION_VERSION
590+
/// </summary>
591+
/// <returns>Value of FUNCTIONS_EXTENSION_VERSION variable</returns>
592+
public static string GetFunctionsExtensionVersion(this IEnvironment environment)
593+
{
594+
return environment.GetEnvironmentVariableOrDefault(FunctionsExtensionVersion, string.Empty);
595+
}
587596
}
588597
}

test/WebJobs.Script.Tests.Integration/WebHostEndToEnd/WebJobsStartupEndToEndTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public async Task ExternalStartup_Succeeds()
4747
public async Task ExternalStartup_InvalidOverwrite_StopsHost()
4848
{
4949
_envVars["Cron"] = "* * * * * *";
50+
_envVars[EnvironmentSettingNames.FunctionsExtensionVersion] = "~4";
5051

5152
// We need different fixture setup for each test.
5253
var fixture = new CSharpPrecompiledEndToEndTestFixture(_projectName, _envVars); // Startup.cs will change this.
@@ -66,8 +67,8 @@ public async Task ExternalStartup_InvalidOverwrite_StopsHost()
6667

6768
// Check that one startup began successfully, then the restart was suppressed.
6869
var logMessages = fixture.Host.GetWebHostLogMessages();
69-
Assert.Single(logMessages, p => p.FormattedMessage != null && p.FormattedMessage.Contains("Building host: startup suppressed: 'True'"));
70-
Assert.Single(logMessages, p => p.FormattedMessage != null && p.FormattedMessage.Contains("Building host: startup suppressed: 'False'"));
70+
Assert.Single(logMessages, p => p.FormattedMessage != null && p.FormattedMessage.Contains("Building host: version spec: ~4, startup suppressed: 'True'"));
71+
Assert.Single(logMessages, p => p.FormattedMessage != null && p.FormattedMessage.Contains("Building host: version spec: ~4, startup suppressed: 'False'"));
7172
}
7273
finally
7374
{

test/WebJobs.Script.Tests/Extensions/EnvironmentExtensionsTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,20 @@ public void Returns_WorkerRuntime(string workerRuntime, string expectedWorkerRun
229229
Assert.Equal(expectedWorkerRuntime, environment.GetFunctionsWorkerRuntime());
230230
}
231231

232+
[Theory]
233+
[InlineData("~1", "~1")]
234+
[InlineData("~2", "~2")]
235+
[InlineData("~3", "~3")]
236+
[InlineData("~4", "~4")]
237+
[InlineData(null, "")]
238+
[InlineData("", "")]
239+
public void Returns_FunctionsExtensionVersion(string functionsExtensionVersion, string functionsExtensionVersionExpected)
240+
{
241+
var enviroment = new TestEnvironment();
242+
enviroment.SetEnvironmentVariable(FunctionsExtensionVersion, functionsExtensionVersion);
243+
Assert.Equal(functionsExtensionVersionExpected, enviroment.GetFunctionsExtensionVersion());
244+
}
245+
232246
[Theory]
233247
[InlineData(RpcWorkerConstants.PowerShellLanguageWorkerName, true, false, true)]
234248
[InlineData(RpcWorkerConstants.PowerShellLanguageWorkerName, false, true, true)]

0 commit comments

Comments
 (0)