Skip to content

Commit ebe4f1d

Browse files
mathewcwbail
andauthored
Add functions ext version into building log (#8705) (#8707)
* 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]> Co-authored-by: Guilherme Bail <[email protected]>
1 parent f0e72a6 commit ebe4f1d

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
@@ -271,7 +271,8 @@ private async Task UnsynchronizedStartHostAsync(ScriptHostStartupOperation activ
271271
// If we're in a non-transient error state or offline, skip host initialization
272272
bool skipJobHostStartup = isOffline || hasNonTransientErrors;
273273
bool skipHostJsonConfiguration = startupMode == JobHostStartupMode.HandlingConfigurationParsingError;
274-
_logger.Building(skipJobHostStartup, skipHostJsonConfiguration, activeOperation.Id);
274+
string functionsExtensionVersion = _environment.GetFunctionsExtensionVersion();
275+
_logger.Building(functionsExtensionVersion, skipJobHostStartup, skipHostJsonConfiguration, activeOperation.Id);
275276

276277
using (_metricsLogger.LatencyEvent(MetricEventNames.ScriptHostManagerBuildScriptHost))
277278
{

src/WebJobs.Script/Environment/EnvironmentExtensions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,5 +566,14 @@ public static void ClearCache()
566566
{
567567
isMultiLanguageEnabled = null;
568568
}
569+
570+
/// <summary>
571+
/// Gets a value indicated in the variable FUNCTIONS_EXTENSION_VERSION
572+
/// </summary>
573+
/// <returns>Value of FUNCTIONS_EXTENSION_VERSION variable</returns>
574+
public static string GetFunctionsExtensionVersion(this IEnvironment environment)
575+
{
576+
return environment.GetEnvironmentVariableOrDefault(FunctionsExtensionVersion, string.Empty);
577+
}
569578
}
570579
}

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
@@ -208,6 +208,20 @@ public void Returns_WorkerRuntime(string workerRuntime, string expectedWorkerRun
208208
Assert.Equal(expectedWorkerRuntime, environment.GetFunctionsWorkerRuntime());
209209
}
210210

211+
[Theory]
212+
[InlineData("~1", "~1")]
213+
[InlineData("~2", "~2")]
214+
[InlineData("~3", "~3")]
215+
[InlineData("~4", "~4")]
216+
[InlineData(null, "")]
217+
[InlineData("", "")]
218+
public void Returns_FunctionsExtensionVersion(string functionsExtensionVersion, string functionsExtensionVersionExpected)
219+
{
220+
var enviroment = new TestEnvironment();
221+
enviroment.SetEnvironmentVariable(FunctionsExtensionVersion, functionsExtensionVersion);
222+
Assert.Equal(functionsExtensionVersionExpected, enviroment.GetFunctionsExtensionVersion());
223+
}
224+
211225
[Theory]
212226
[InlineData(RpcWorkerConstants.PowerShellLanguageWorkerName, true, false, true)]
213227
[InlineData(RpcWorkerConstants.PowerShellLanguageWorkerName, false, true, true)]

0 commit comments

Comments
 (0)