From c619d8858d3f7830fcb5002bfab4a8ccdef03a9a Mon Sep 17 00:00:00 2001 From: v-vreyya Date: Mon, 7 Apr 2025 19:48:58 +0530 Subject: [PATCH 1/6] Error fixes --- src/Cli/func/Actions/HostActions/StartHostAction.cs | 2 +- src/Cli/func/ConsoleApp.cs | 2 +- src/Cli/func/Helpers/RetryHelper.cs | 4 ++-- src/Cli/func/Telemetry/Telemetry.cs | 9 ++++++--- src/CoreToolsHost/LocalSettingsJsonParser.cs | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Cli/func/Actions/HostActions/StartHostAction.cs b/src/Cli/func/Actions/HostActions/StartHostAction.cs index f48464b78..7bdb81d73 100644 --- a/src/Cli/func/Actions/HostActions/StartHostAction.cs +++ b/src/Cli/func/Actions/HostActions/StartHostAction.cs @@ -76,7 +76,7 @@ internal class StartHostAction : BaseAction public string JsonOutputFile { get; set; } - public string? HostRuntime { get; set; } + public string HostRuntime { get; set; } public StartHostAction(ISecretsManager secretsManager, IProcessManager processManager) { diff --git a/src/Cli/func/ConsoleApp.cs b/src/Cli/func/ConsoleApp.cs index de4cc82d3..f3fc2623e 100644 --- a/src/Cli/func/ConsoleApp.cs +++ b/src/Cli/func/ConsoleApp.cs @@ -373,7 +373,7 @@ internal IAction Parse() return action; } } - catch (CliArgumentsException ex) + catch (CliArgumentsException) { // TODO: we can probably display help here as well. // This happens for actions that expect an ordered untyped options. diff --git a/src/Cli/func/Helpers/RetryHelper.cs b/src/Cli/func/Helpers/RetryHelper.cs index 5935c837e..7b59949cf 100644 --- a/src/Cli/func/Helpers/RetryHelper.cs +++ b/src/Cli/func/Helpers/RetryHelper.cs @@ -24,7 +24,7 @@ public static async Task Retry(Func func, int retryCount, TimeSpan retryDe { if (retryCount <= 0) { - throw e; + throw; } retryCount--; if (displayError) @@ -50,7 +50,7 @@ public static async Task Retry(Func> func, int retryCount, TimeSpa { if (retryCount <= 0) { - throw e; + throw; } retryCount--; if (displayError) diff --git a/src/Cli/func/Telemetry/Telemetry.cs b/src/Cli/func/Telemetry/Telemetry.cs index d48bd0e0a..1d529836e 100644 --- a/src/Cli/func/Telemetry/Telemetry.cs +++ b/src/Cli/func/Telemetry/Telemetry.cs @@ -92,10 +92,13 @@ private void InitializeTelemetry() { var persistenceChannel = new PersistenceChannel.PersistenceChannel(sendersCount: _senderCount); persistenceChannel.SendingInterval = TimeSpan.FromMilliseconds(1); - TelemetryConfiguration.Active.TelemetryChannel = persistenceChannel; + var telemetryConfiguration = new TelemetryConfiguration + { + TelemetryChannel = persistenceChannel, + ConnectionString = $"InstrumentationKey={Constants.TelemetryInstrumentationKey}" + }; - _client = new TelemetryClient(); - _client.InstrumentationKey = Constants.TelemetryInstrumentationKey; + _client = new TelemetryClient(telemetryConfiguration); _client.Context.Session.Id = CurrentSessionId; _client.Context.Device.OperatingSystem = RuntimeEnvironment.OperatingSystem; diff --git a/src/CoreToolsHost/LocalSettingsJsonParser.cs b/src/CoreToolsHost/LocalSettingsJsonParser.cs index 793c947c9..e0938d684 100644 --- a/src/CoreToolsHost/LocalSettingsJsonParser.cs +++ b/src/CoreToolsHost/LocalSettingsJsonParser.cs @@ -9,7 +9,7 @@ namespace CoreToolsHost { internal static class LocalSettingsJsonParser { - internal static async Task GetLocalSettingsJsonAsJObjectAsync() + internal static async Task GetLocalSettingsJsonAsJObjectAsync() { var fullPath = Path.Combine(Environment.CurrentDirectory, "local.settings.json"); From 50126156aafdcf21a385cc77b3e508d7b9f04592 Mon Sep 17 00:00:00 2001 From: v-vreyya Date: Tue, 8 Apr 2025 18:54:00 +0530 Subject: [PATCH 2/6] timeprovider changes --- .../HostActions/WebHost/Security/CliAuthenticationHandler.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Cli/func/Actions/HostActions/WebHost/Security/CliAuthenticationHandler.cs b/src/Cli/func/Actions/HostActions/WebHost/Security/CliAuthenticationHandler.cs index a646e54e6..27bd5c53d 100644 --- a/src/Cli/func/Actions/HostActions/WebHost/Security/CliAuthenticationHandler.cs +++ b/src/Cli/func/Actions/HostActions/WebHost/Security/CliAuthenticationHandler.cs @@ -16,9 +16,10 @@ namespace Azure.Functions.Cli.Actions.HostActions.WebHost.Security { public class CliAuthenticationHandler : AuthenticationHandler where TOptions : AuthenticationSchemeOptions, new() { - public CliAuthenticationHandler(IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) - : base(options, logger, encoder, clock) + public CliAuthenticationHandler(IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder, TimeProvider timeProvider) + : base(options, logger, encoder) { + options.CurrentValue.TimeProvider = timeProvider; } protected override Task HandleAuthenticateAsync() From 251a2270028f720b45c0b20019e977f614985e8e Mon Sep 17 00:00:00 2001 From: v-vreyya Date: Fri, 11 Apr 2025 20:38:26 +0530 Subject: [PATCH 3/6] changes --- eng/Directory.Build.Common.props | 5 +-- .../ArtifactAssembler/ArtifactAssembler.cs | 4 ++- src/Cli/func/Actions/HostActions/Startup.cs | 33 ++++++++++++++++--- .../Telemetry/ExternalTelemetryProperties.cs | 9 ++--- src/CoreToolsHost/AppLoader/HostFxr.cs | 7 ++++ 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/eng/Directory.Build.Common.props b/eng/Directory.Build.Common.props index a74bc3fa6..76445cdb4 100644 --- a/eng/Directory.Build.Common.props +++ b/eng/Directory.Build.Common.props @@ -22,11 +22,12 @@ $(NoWarn);NU1507 + $(NoWarn);NU1701 - + \ No newline at end of file diff --git a/src/Cli/ArtifactAssembler/ArtifactAssembler.cs b/src/Cli/ArtifactAssembler/ArtifactAssembler.cs index 7f7467fcb..1654d448d 100644 --- a/src/Cli/ArtifactAssembler/ArtifactAssembler.cs +++ b/src/Cli/ArtifactAssembler/ArtifactAssembler.cs @@ -277,7 +277,7 @@ private async Task CreateVisualStudioCoreToolsAsync() FileUtilities.CopyDirectory(inProcArtifactDirPath, createDirectory ? Path.Combine(consolidatedArtifactDirPath, Constants.InProc8DirectoryName) : consolidatedArtifactDirPath); Directory.Delete(inProcArtifactDirPath, true); - return (artifactDirName, consolidatedArtifactDirPath); + return await Task.FromResult((artifactDirName, consolidatedArtifactDirPath)); } private async Task CreateCliCoreToolsAsync() @@ -365,6 +365,7 @@ private async Task CreateCliCoreToolsAsync() Console.WriteLine("Finished assembling CLI Core Tools artifacts"); Console.WriteLine(); + await Task.CompletedTask; } private (string artifactDirectory, string version) GetArtifactDirectoryAndVersionNumber(string extractedRootDirectory, string artifactName) @@ -420,6 +421,7 @@ private async Task ExtractZipFilesInDirectoryAsync(string zipSourceDir, string e FileUtilities.ExtractToDirectory(zipFile, destinationDir); File.Delete(zipFile); } + await Task.CompletedTask; } } } \ No newline at end of file diff --git a/src/Cli/func/Actions/HostActions/Startup.cs b/src/Cli/func/Actions/HostActions/Startup.cs index a0b98f5eb..1f05df7c5 100644 --- a/src/Cli/func/Actions/HostActions/Startup.cs +++ b/src/Cli/func/Actions/HostActions/Startup.cs @@ -16,6 +16,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.UserSecrets; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -107,6 +108,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services) } services.AddSingleton(); + services.AddSingleton(); return services.BuildServiceProvider(); } @@ -136,11 +138,6 @@ public void Configure(IApplicationBuilder app) } }); } - - IApplicationLifetime applicationLifetime = app.ApplicationServices - .GetRequiredService(); - - app.UseWebJobsScriptHost(applicationLifetime); } private class ThrowingDependencyValidator : DependencyValidator @@ -159,5 +156,31 @@ public override void Validate(IServiceCollection services) } } } + + public class MyHostedService : IHostedService + { + private readonly IHostApplicationLifetime _appLifetime; + + public MyHostedService(IHostApplicationLifetime appLifetime) + { + _appLifetime = appLifetime; + } + + public Task StartAsync(CancellationToken cancellationToken) + { + _appLifetime.ApplicationStarted.Register(() => + { + Console.WriteLine("Started"); + }); + + return Task.CompletedTask; + } + + public Task StopAsync(CancellationToken cancellationToken) + { + Console.WriteLine("Stopping"); + return Task.CompletedTask; + } + } } } diff --git a/src/Cli/func/Telemetry/ExternalTelemetryProperties.cs b/src/Cli/func/Telemetry/ExternalTelemetryProperties.cs index e0ebf8142..5f506fe5e 100644 --- a/src/Cli/func/Telemetry/ExternalTelemetryProperties.cs +++ b/src/Cli/func/Telemetry/ExternalTelemetryProperties.cs @@ -24,17 +24,14 @@ internal static class ExternalTelemetryProperties /// internal static string GetInstallationType() { - if (RuntimeEnvironment.OperatingSystemPlatform != Platform.Windows) - { - return ""; - } - const string Key = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"; const string ValueName = @"InstallationType"; try { - return (string)Registry.GetValue(Key, ValueName, defaultValue: ""); + return RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? Registry.GetValue(Key, ValueName, defaultValue: "") as string + : ""; } // Catch everything: this is for telemetry only. catch (Exception e) diff --git a/src/CoreToolsHost/AppLoader/HostFxr.cs b/src/CoreToolsHost/AppLoader/HostFxr.cs index 6e7d2616b..528a48fd5 100644 --- a/src/CoreToolsHost/AppLoader/HostFxr.cs +++ b/src/CoreToolsHost/AppLoader/HostFxr.cs @@ -12,6 +12,13 @@ public unsafe struct hostfxr_initialize_parameters public nint size; public char* host_path; public char* dotnet_root; + + public hostfxr_initialize_parameters() + { + size = sizeof(hostfxr_initialize_parameters); + host_path = null; + dotnet_root = null; + } }; [LibraryImport("hostfxr", EntryPoint = "hostfxr_initialize_for_dotnet_command_line", From 13e4d49f75bdb13d8a3336fbd958fb0a0281b8ee Mon Sep 17 00:00:00 2001 From: v-vreyya Date: Fri, 11 Apr 2025 20:55:12 +0530 Subject: [PATCH 4/6] corrections --- eng/Directory.Build.Common.props | 2 -- src/Cli/func/Actions/HostActions/Startup.cs | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/eng/Directory.Build.Common.props b/eng/Directory.Build.Common.props index 76445cdb4..3db799473 100644 --- a/eng/Directory.Build.Common.props +++ b/eng/Directory.Build.Common.props @@ -25,8 +25,6 @@ $(NoWarn);NU1701 - - true diff --git a/src/Cli/func/Actions/HostActions/Startup.cs b/src/Cli/func/Actions/HostActions/Startup.cs index 1f05df7c5..070aae046 100644 --- a/src/Cli/func/Actions/HostActions/Startup.cs +++ b/src/Cli/func/Actions/HostActions/Startup.cs @@ -157,7 +157,7 @@ public override void Validate(IServiceCollection services) } } - public class MyHostedService : IHostedService + private class MyHostedService : IHostedService { private readonly IHostApplicationLifetime _appLifetime; From 46c72d886455241489829850e959a0cf0914beec Mon Sep 17 00:00:00 2001 From: v-vreyya Date: Fri, 11 Apr 2025 20:57:20 +0530 Subject: [PATCH 5/6] corrections --- src/CoreToolsHost/AppLoader/HostFxr.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CoreToolsHost/AppLoader/HostFxr.cs b/src/CoreToolsHost/AppLoader/HostFxr.cs index 528a48fd5..dee9341e2 100644 --- a/src/CoreToolsHost/AppLoader/HostFxr.cs +++ b/src/CoreToolsHost/AppLoader/HostFxr.cs @@ -12,8 +12,8 @@ public unsafe struct hostfxr_initialize_parameters public nint size; public char* host_path; public char* dotnet_root; - - public hostfxr_initialize_parameters() + + public hostfxr_initialize_parameters() { size = sizeof(hostfxr_initialize_parameters); host_path = null; From e4768a1e07ec755c4e4c7153f3cd8e35bbf5f6cd Mon Sep 17 00:00:00 2001 From: v-vreyya Date: Mon, 14 Apr 2025 16:09:03 +0530 Subject: [PATCH 6/6] Iapplicationlifetime --- eng/Directory.Build.Common.props | 4 +-- src/Cli/func/Actions/HostActions/Startup.cs | 33 ++++----------------- 2 files changed, 7 insertions(+), 30 deletions(-) diff --git a/eng/Directory.Build.Common.props b/eng/Directory.Build.Common.props index 3db799473..c851fe773 100644 --- a/eng/Directory.Build.Common.props +++ b/eng/Directory.Build.Common.props @@ -25,7 +25,7 @@ $(NoWarn);NU1701 - + \ No newline at end of file diff --git a/src/Cli/func/Actions/HostActions/Startup.cs b/src/Cli/func/Actions/HostActions/Startup.cs index 070aae046..ae5ed45f3 100644 --- a/src/Cli/func/Actions/HostActions/Startup.cs +++ b/src/Cli/func/Actions/HostActions/Startup.cs @@ -16,7 +16,6 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.UserSecrets; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -108,7 +107,6 @@ public IServiceProvider ConfigureServices(IServiceCollection services) } services.AddSingleton(); - services.AddSingleton(); return services.BuildServiceProvider(); } @@ -138,6 +136,11 @@ public void Configure(IApplicationBuilder app) } }); } + + IApplicationLifetime applicationLifetime = app.ApplicationServices + .GetRequiredService(); + + app.UseWebJobsScriptHost(applicationLifetime); } private class ThrowingDependencyValidator : DependencyValidator @@ -156,31 +159,5 @@ public override void Validate(IServiceCollection services) } } } - - private class MyHostedService : IHostedService - { - private readonly IHostApplicationLifetime _appLifetime; - - public MyHostedService(IHostApplicationLifetime appLifetime) - { - _appLifetime = appLifetime; - } - - public Task StartAsync(CancellationToken cancellationToken) - { - _appLifetime.ApplicationStarted.Register(() => - { - Console.WriteLine("Started"); - }); - - return Task.CompletedTask; - } - - public Task StopAsync(CancellationToken cancellationToken) - { - Console.WriteLine("Stopping"); - return Task.CompletedTask; - } - } } }