Skip to content

Commit fccbcf2

Browse files
authored
Use AsyncLocal to find the correct ModuleLogger (#535)
* Use AsyncLocal to find the correct ModuleLogger * Git pull * Retry
1 parent 186719a commit fccbcf2

File tree

7 files changed

+18
-10
lines changed

7 files changed

+18
-10
lines changed

src/ModularPipelines.Build/GitHelpers.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ await context.Git().Commands
6363
public static async Task CommitAndPush(IPipelineContext context, string? branchToPushTo, string message, string token,
6464
CancellationToken cancellationToken)
6565
{
66+
await context.Git().Commands.Pull(token: cancellationToken);
67+
6668
await context.Git().Commands.Add(new GitAddOptions
6769
{
6870
All = true,

src/ModularPipelines.Build/Modules/UpdateReleaseNotesModule.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ private async Task<string> GetDependabotCommits()
108108
);
109109

110110
return $"""
111+
111112
## Dependabot
112113
113114
{splitCommits}
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
- Show exception (if one was thrown) within the GitHub markdown summary
2-
3-
# Breaking
4-
- GitVersion.yml has been updated to v6. If using the `GitVersionInformation` model, some properties may have been added/removed/changed.
1+
- Use `AsyncLocal` to find the correct `IModuleLogger` when using the `IModuleLoggerProvider` helper.

src/ModularPipelines/Engine/ModuleExecutor.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using ModularPipelines.Attributes;
77
using ModularPipelines.Exceptions;
88
using ModularPipelines.Extensions;
9+
using ModularPipelines.Logging;
910
using ModularPipelines.Models;
1011
using ModularPipelines.Modules;
1112
using ModularPipelines.Options;
@@ -150,7 +151,7 @@ private Task<ModuleBase> StartModule(ModuleBase module)
150151
{
151152
lock (_moduleDictionaryLock)
152153
{
153-
return _moduleExecutionTasks.GetOrAdd(module, async @base =>
154+
return _moduleExecutionTasks.GetOrAdd(module, @base => Task.Run(async () =>
154155
{
155156
_logger.LogDebug("Starting Module {Module}", module.GetType().Name);
156157

@@ -163,6 +164,8 @@ private Task<ModuleBase> StartModule(ModuleBase module)
163164

164165
try
165166
{
167+
ModuleLogger.Values.Value = module.Context.Logger;
168+
166169
await _pipelineSetupExecutor.OnBeforeModuleStartAsync(module);
167170

168171
await module.StartInternal();
@@ -180,7 +183,7 @@ private Task<ModuleBase> StartModule(ModuleBase module)
180183
await _moduleDisposer.DisposeAsync(module);
181184
}
182185
}
183-
});
186+
}));
184187
}
185188
}
186189

src/ModularPipelines/Logging/ModuleLogger.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ namespace ModularPipelines.Logging;
77

88
internal abstract class ModuleLogger : IModuleLogger
99
{
10+
internal static readonly AsyncLocal<IModuleLogger> Values = new();
11+
1012
protected static readonly object DisposeLock = new();
1113
protected static readonly object LogLock = new();
1214
protected Exception? _exception;
13-
15+
1416
internal DateTime LastLogWritten { get; set; } = DateTime.MinValue;
1517

1618
public abstract void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter);
@@ -34,7 +36,6 @@ internal class ModuleLogger<T> : ModuleLogger, IModuleLogger, ILogger<T>
3436
{
3537
private readonly ILogger<T> _defaultLogger;
3638
private readonly ISecretObfuscator _secretObfuscator;
37-
private readonly ISecretProvider _secretProvider;
3839
private readonly IConsoleWriter _consoleWriter;
3940
private readonly ISmartCollapsableLoggingStringBlockProvider _collapsableLoggingStringBlockProvider;
4041

@@ -46,13 +47,11 @@ internal class ModuleLogger<T> : ModuleLogger, IModuleLogger, ILogger<T>
4647
public ModuleLogger(ILogger<T> defaultLogger,
4748
IModuleLoggerContainer moduleLoggerContainer,
4849
ISecretObfuscator secretObfuscator,
49-
ISecretProvider secretProvider,
5050
IConsoleWriter consoleWriter,
5151
ISmartCollapsableLoggingStringBlockProvider collapsableLoggingStringBlockProvider)
5252
{
5353
_defaultLogger = defaultLogger;
5454
_secretObfuscator = secretObfuscator;
55-
_secretProvider = secretProvider;
5655
_consoleWriter = consoleWriter;
5756
_collapsableLoggingStringBlockProvider = collapsableLoggingStringBlockProvider;
5857
moduleLoggerContainer.AddLogger(this);

src/ModularPipelines/Logging/ModuleLoggerProvider.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public IModuleLogger GetLogger()
3030
{
3131
return _moduleLogger;
3232
}
33+
34+
if (ModuleLogger.Values.Value != null)
35+
{
36+
return _moduleLogger = ModuleLogger.Values.Value;
37+
}
3338

3439
var stackFrames = new StackTrace().GetFrames().ToList();
3540

test/ModularPipelines.UnitTests/RetryTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
namespace ModularPipelines.UnitTests;
88

9+
[Retry(3)]
910
public class RetryTests : TestBase
1011
{
1112
private class SuccessModule : Module

0 commit comments

Comments
 (0)