Skip to content

Commit 648c134

Browse files
authored
Implemented lock for pipeline node output changes. (#186)
1 parent 7e3b7ef commit 648c134

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/CodeCasa.AutomationPipelines/Pipeline.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace CodeCasa.AutomationPipelines;
77
/// </summary>
88
public class Pipeline<TState> : PipelineNode<TState>, IPipeline<TState>
99
{
10+
private readonly Lock _lock = new();
1011
private readonly List<IPipelineNode<TState>> _nodes = new();
1112
private readonly ILogger<Pipeline<TState>>? _logger;
1213

@@ -136,8 +137,12 @@ public IPipeline<TState> RegisterNode(IPipelineNode<TState> node)
136137
var destinationIndex = _nodes.Count;
137138
previousNode.OnNewOutput.Subscribe(output =>
138139
{
139-
_logger?.LogTrace($"{LogPrefix}[Node {sourceIndex}] ({previousNode}) passed value [{output?.ToString() ?? "NULL"}] to [Node {destinationIndex}] ({node}).");
140-
node.Input = output;
140+
lock (_lock)
141+
{
142+
_logger?.LogTrace(
143+
$"{LogPrefix}[Node {sourceIndex}] ({previousNode}) passed value [{output?.ToString() ?? "NULL"}] to [Node {destinationIndex}] ({node}).");
144+
node.Input = output;
145+
}
141146
});
142147

143148
_logger?.LogTrace($"{LogPrefix}Passing [Node {sourceIndex}] ({previousNode}) value [{previousNode.Output?.ToString() ?? "NULL"}] to [Node {destinationIndex}] ({node}).");
@@ -157,8 +162,12 @@ public IPipeline<TState> RegisterNode(IPipelineNode<TState> node)
157162
var nodeIndex = _nodes.Count - 1;
158163
_subscription = node.OnNewOutput.Subscribe(o =>
159164
{
160-
_logger?.LogTrace($"{LogPrefix}[Node {nodeIndex}] ({node}) passed value [{o?.ToString() ?? "NULL"}] to pipeline output.");
161-
SetOutputAndCallActionWhenApplicable(o);
165+
lock (_lock)
166+
{
167+
_logger?.LogTrace(
168+
$"{LogPrefix}[Node {nodeIndex}] ({node}) passed value [{o?.ToString() ?? "NULL"}] to pipeline output.");
169+
SetOutputAndCallActionWhenApplicable(o);
170+
}
162171
});
163172

164173
var newOutput = node.Output;

0 commit comments

Comments
 (0)