Skip to content

Commit e2e11f4

Browse files
authored
Merge pull request #144 from JeringTech/improve_connection_retries
Improve process connection system
2 parents f4e90c3 + 7eb58b8 commit e2e11f4

53 files changed

Lines changed: 2001 additions & 1336 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Changelog.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ This project uses [semantic versioning](http://semver.org/spec/v2.0.0.html). Ref
33
*[Semantic Versioning in Practice](https://www.jering.tech/articles/semantic-versioning-in-practice)*
44
for an overview of semantic versioning.
55

6-
## [Unreleased](https://github.com/JeringTech/Javascript.NodeJS/compare/7.0.0-beta.0...HEAD)
6+
## [Unreleased](https://github.com/JeringTech/Javascript.NodeJS/compare/7.0.0-beta.1...HEAD)
7+
8+
## [7.0.0-beta.1](https://github.com/JeringTech/Javascript.NodeJS/compare/7.0.0-beta.0...7.0.0-beta.1) - Aug 26, 2022
9+
### Changes
10+
- **Breaking Changes**:
11+
- Replaced `void INodeJSService.MoveToNewProcess` with `ValueTask MoveToNewProcessAsync()`. ([#144](https://github.com/JeringTech/Javascript.NodeJS/pull/144))
12+
- Replaced `OutOfProcessNodeJSServiceOptions.TimeoutMS` with `OutOfProcessNodeJSServiceOptions.ConnectionTimeoutMS` and `OutOfProcessNodeJSServiceOptions.InvocationTimeoutMS`. ([#144](https://github.com/JeringTech/Javascript.NodeJS/pull/144))
713

814
## [7.0.0-beta.0](https://github.com/JeringTech/Javascript.NodeJS/compare/6.3.1...7.0.0-beta.0) - Aug 25, 2022
915
### Changes

ReadMe.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,11 +1219,13 @@ Thrown if this instance is disposed or if it attempts to use a disposed dependen
12191219
`OperationCanceledException`
12201220
Thrown if `cancellationToken` is cancelled.
12211221

1222-
##### INodeJSService.MoveToNewProcess()
1222+
##### INodeJSService.MoveToNewProcessAsync()
12231223
Moves subsequent invocations to a new NodeJS process.
12241224
```csharp
1225-
void MoveToNewProcess()
1225+
ValueTask MoveToNewProcessAsync()
12261226
```
1227+
###### Returns
1228+
The `ValueTask` representing the asynchronous operation.
12271229
###### Remarks
12281230
This method exposes the system used by file watching (see `OutOfProcessNodeJSServiceOptions.EnableFileWatching`) and process retries
12291231
(see `OutOfProcessNodeJSServiceOptions.NumProcessRetries`) to move to new processes.
@@ -1232,6 +1234,8 @@ When is access to this system useful? Consider the situation where your applicat
12321234
If your application knows when files change (e.g. your application is the actor changing files) you can manually invoke this method instead of using file
12331235
watching. This enables you to avoid the overhead of file watching.
12341236

1237+
You do not need to await this method. Subsequent invocations are wait asynchronously until the new process is ready.
1238+
12351239
The method respects `OutOfProcessNodeJSServiceOptions.GracefulProcessShutdown`.
12361240
<!-- INodeJSService generated docs -->
12371241
<!-- NodeJSProcessOptions generated docs -->
@@ -1303,15 +1307,24 @@ and "production" otherwise.
13031307
public OutOfProcessNodeJSServiceOptions()
13041308
```
13051309
#### Properties
1306-
##### OutOfProcessNodeJSServiceOptions.TimeoutMS
1307-
The maximum duration to wait for the NodeJS process to connect and to wait for responses to invocations.
1310+
##### OutOfProcessNodeJSServiceOptions.ConnectionTimeoutMS
1311+
The maximum duration to wait for the NodeJS process to connect.
1312+
```csharp
1313+
public int ConnectionTimeoutMS { get; set; }
1314+
```
1315+
###### Remarks
1316+
If this value is negative, the maximum duration is infinite.
1317+
1318+
Defaults to `5000`.
1319+
##### OutOfProcessNodeJSServiceOptions.InvocationTimeoutMS
1320+
The maximum duration to wait for responses to invocations.
13081321
```csharp
1309-
public int TimeoutMS { get; set; }
1322+
public int InvocationTimeoutMS { get; set; }
13101323
```
13111324
###### Remarks
13121325
If this value is negative, the maximum duration is infinite.
13131326

1314-
Defaults to 60000.
1327+
Defaults to `100,000`.
13151328
##### OutOfProcessNodeJSServiceOptions.NumRetries
13161329
The number of times a NodeJS process retries an invocation.
13171330
```csharp
@@ -1366,7 +1379,7 @@ public int NumConnectionRetries { get; set; }
13661379
###### Remarks
13671380
If this value is negative, connection attempts are retried indefinitely.
13681381

1369-
Defaults to 1.
1382+
Defaults to 2.
13701383
##### OutOfProcessNodeJSServiceOptions.Concurrency
13711384
The concurrency mode for invocations.
13721385
```csharp

perf/NodeJS/packages.lock.json

Lines changed: 61 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,17 @@
208208
},
209209
"Microsoft.Extensions.DependencyInjection": {
210210
"type": "Transitive",
211-
"resolved": "5.0.1",
212-
"contentHash": "//mDNrYeiJ0eh/awFhDFJQzkRVra/njU5Y4fyK7X29g5HScrzbUkKOKlyTtygthcGFt4zNC8G5CFCjb/oizomA==",
211+
"resolved": "6.0.0",
212+
"contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
213213
"dependencies": {
214-
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0"
214+
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
215+
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
215216
}
216217
},
217218
"Microsoft.Extensions.DependencyInjection.Abstractions": {
218219
"type": "Transitive",
219-
"resolved": "5.0.0",
220-
"contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA=="
220+
"resolved": "6.0.0",
221+
"contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
221222
},
222223
"Microsoft.Extensions.FileProviders.Abstractions": {
223224
"type": "Transitive",
@@ -240,30 +241,31 @@
240241
},
241242
"Microsoft.Extensions.Http": {
242243
"type": "Transitive",
243-
"resolved": "5.0.0",
244-
"contentHash": "kT1ijDKZuSUhBtYoC1sXrmVKP7mA08h9Xrsr4VrS/QOtiKCEtUTTd7dd3XI9dwAb46tZSak13q/zdIcr4jqbyg==",
244+
"resolved": "6.0.0",
245+
"contentHash": "15+pa2G0bAMHbHewaQIdr/y6ag2H3yh4rd9hTXavtWDzQBkvpe2RMqFg8BxDpcQWssmjmBApGPcw93QRz6YcMg==",
245246
"dependencies": {
246-
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
247-
"Microsoft.Extensions.Logging": "5.0.0",
248-
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
249-
"Microsoft.Extensions.Options": "5.0.0"
247+
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
248+
"Microsoft.Extensions.Logging": "6.0.0",
249+
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
250+
"Microsoft.Extensions.Options": "6.0.0"
250251
}
251252
},
252253
"Microsoft.Extensions.Logging": {
253254
"type": "Transitive",
254-
"resolved": "5.0.0",
255-
"contentHash": "MgOwK6tPzB6YNH21wssJcw/2MKwee8b2gI7SllYfn6rvTpIrVvVS5HAjSU2vqSku1fwqRvWP0MdIi14qjd93Aw==",
255+
"resolved": "6.0.0",
256+
"contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
256257
"dependencies": {
257-
"Microsoft.Extensions.DependencyInjection": "5.0.0",
258-
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
259-
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
260-
"Microsoft.Extensions.Options": "5.0.0"
258+
"Microsoft.Extensions.DependencyInjection": "6.0.0",
259+
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
260+
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
261+
"Microsoft.Extensions.Options": "6.0.0",
262+
"System.Diagnostics.DiagnosticSource": "6.0.0"
261263
}
262264
},
263265
"Microsoft.Extensions.Logging.Abstractions": {
264266
"type": "Transitive",
265-
"resolved": "5.0.0",
266-
"contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w=="
267+
"resolved": "6.0.0",
268+
"contentHash": "/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA=="
267269
},
268270
"Microsoft.Extensions.Logging.Configuration": {
269271
"type": "Transitive",
@@ -286,11 +288,11 @@
286288
},
287289
"Microsoft.Extensions.Options": {
288290
"type": "Transitive",
289-
"resolved": "5.0.0",
290-
"contentHash": "CBvR92TCJ5uBIdd9/HzDSrxYak+0W/3+yxrNg8Qm6Bmrkh5L+nu6m3WeazQehcZ5q1/6dDA7J5YdQjim0165zg==",
291+
"resolved": "6.0.0",
292+
"contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
291293
"dependencies": {
292-
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
293-
"Microsoft.Extensions.Primitives": "5.0.0"
294+
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
295+
"Microsoft.Extensions.Primitives": "6.0.0"
294296
}
295297
},
296298
"Microsoft.Extensions.Options.ConfigurationExtensions": {
@@ -306,8 +308,11 @@
306308
},
307309
"Microsoft.Extensions.Primitives": {
308310
"type": "Transitive",
309-
"resolved": "5.0.0",
310-
"contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ=="
311+
"resolved": "6.0.0",
312+
"contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
313+
"dependencies": {
314+
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
315+
}
311316
},
312317
"Microsoft.NETCore.Platforms": {
313318
"type": "Transitive",
@@ -527,6 +532,14 @@
527532
"System.Runtime": "4.3.0"
528533
}
529534
},
535+
"System.Diagnostics.DiagnosticSource": {
536+
"type": "Transitive",
537+
"resolved": "6.0.0",
538+
"contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
539+
"dependencies": {
540+
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
541+
}
542+
},
530543
"System.Diagnostics.FileVersionInfo": {
531544
"type": "Transitive",
532545
"resolved": "4.3.0",
@@ -837,6 +850,11 @@
837850
"Microsoft.NETCore.Targets": "1.1.0"
838851
}
839852
},
853+
"System.Runtime.CompilerServices.Unsafe": {
854+
"type": "Transitive",
855+
"resolved": "6.0.0",
856+
"contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
857+
},
840858
"System.Runtime.Extensions": {
841859
"type": "Transitive",
842860
"resolved": "4.3.0",
@@ -1098,13 +1116,20 @@
10981116
},
10991117
"System.Text.Encodings.Web": {
11001118
"type": "Transitive",
1101-
"resolved": "5.0.1",
1102-
"contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ=="
1119+
"resolved": "6.0.0",
1120+
"contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
1121+
"dependencies": {
1122+
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
1123+
}
11031124
},
11041125
"System.Text.Json": {
11051126
"type": "Transitive",
1106-
"resolved": "5.0.2",
1107-
"contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ=="
1127+
"resolved": "6.0.5",
1128+
"contentHash": "SSH+YYrMpvLcy7Orzb5K1tSyffnFacWahyxCCjYH1PbSHdAF4dekmIetBurFKgtTHDmwEe/J2Csi/7niRH6d/g==",
1129+
"dependencies": {
1130+
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
1131+
"System.Text.Encodings.Web": "6.0.0"
1132+
}
11081133
},
11091134
"System.Text.RegularExpressions": {
11101135
"type": "Transitive",
@@ -1259,13 +1284,13 @@
12591284
"jering.javascript.nodejs": {
12601285
"type": "Project",
12611286
"dependencies": {
1262-
"Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
1263-
"Microsoft.Extensions.DependencyInjection": "5.0.1",
1264-
"Microsoft.Extensions.Http": "5.0.0",
1265-
"Microsoft.Extensions.Logging": "5.0.0",
1266-
"Microsoft.Extensions.Options": "5.0.0",
1267-
"System.Text.Encodings.Web": "5.0.1",
1268-
"System.Text.Json": "5.0.2"
1287+
"Microsoft.AspNetCore.Hosting.Abstractions": "[2.2.0, )",
1288+
"Microsoft.Extensions.DependencyInjection": "[6.0.0, )",
1289+
"Microsoft.Extensions.Http": "[6.0.0, )",
1290+
"Microsoft.Extensions.Logging": "[6.0.0, )",
1291+
"Microsoft.Extensions.Options": "[6.0.0, )",
1292+
"System.Text.Encodings.Web": "[6.0.0, )",
1293+
"System.Text.Json": "[6.0.5, )"
12691294
}
12701295
}
12711296
}

src/NodeJS/INodeJSService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,14 +311,16 @@ public interface INodeJSService : IDisposable
311311
Task<bool> TryInvokeFromCacheAsync(string cacheIdentifier, string? exportName = null, object?[]? args = null, CancellationToken cancellationToken = default);
312312

313313
/// <summary>Moves subsequent invocations to a new NodeJS process.</summary>
314+
/// <returns>The <see cref="ValueTask"/> representing the asynchronous operation.</returns>
314315
/// <remarks>
315316
/// <para>This method exposes the system used by file watching (see <see cref="OutOfProcessNodeJSServiceOptions.EnableFileWatching"/>) and process retries
316317
/// (see <see cref="OutOfProcessNodeJSServiceOptions.NumProcessRetries"/>) to move to new processes.</para>
317318
/// <para>When is access to this system useful? Consider the situation where your application uses file watching.
318319
/// If your application knows when files change (e.g. your application is the actor changing files) you can manually invoke this method instead of using file
319320
/// watching. This enables you to avoid the overhead of file watching.</para>
321+
/// <para>You do not need to await this method. Subsequent invocations are wait asynchronously until the new process is ready.</para>
320322
/// <para>The method respects <see cref="OutOfProcessNodeJSServiceOptions.GracefulProcessShutdown"/>.</para>
321323
/// </remarks>
322-
void MoveToNewProcess();
324+
ValueTask MoveToNewProcessAsync();
323325
}
324326
}

src/NodeJS/Jering.Javascript.NodeJS.csproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
</ItemGroup>
4444

4545
<ItemGroup>
46-
<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" />
47-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0">
46+
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
47+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
4848
<PrivateAssets>all</PrivateAssets>
4949
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
5050
</PackageReference>
@@ -53,15 +53,15 @@
5353
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5454
</PackageReference>
5555
<!-- TODO builds fail on linux and mac if we don't explicitly reference this -->
56-
<PackageReference Include="System.Text.Encodings.Web" Version="5.0.1" />
57-
<PackageReference Include="Yarn.MSBuild" Version="1.22.10" PrivateAssets="all" ExcludeAssets="Runtime">
56+
<PackageReference Include="System.Text.Encodings.Web" Version="6.0.0" />
57+
<PackageReference Include="Yarn.MSBuild" Version="1.22.17" PrivateAssets="all" ExcludeAssets="Runtime">
5858
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5959
</PackageReference>
60-
<PackageReference Include="System.Text.Json" Version="5.0.2" />
61-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
60+
<PackageReference Include="System.Text.Json" Version="6.0.5" />
61+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
6262
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.2.0" />
63-
<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
64-
<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
63+
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
64+
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
6565
</ItemGroup>
6666

6767
<ItemGroup>

src/NodeJS/NodeJSServiceCollectionExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ public static IServiceCollection AddNodeJS(this IServiceCollection services)
3232
AddSingleton<IJsonService, JsonService>().
3333
AddSingleton<IEnvironmentService, EnvironmentService>().
3434
AddSingleton<IFileWatcherFactory, FileWatcherFactory>().
35-
AddSingleton<IMonitorService, MonitorService>().
36-
AddSingleton<ITaskService, TaskService>();
35+
AddSingleton<ITaskService, TaskService>().
36+
AddTransient<IBlockDrainerService, BlockDrainerService>();
3737
#if NETCOREAPP3_1
3838
// If not called, framework forces HTTP/1.1 so long as origin isn't https
3939
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);

src/NodeJS/NodeJSServiceImplementations/OutOfProcess/Http/HttpClientService.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@ public class HttpClientService : IHttpClientService
2121
/// </summary>
2222
/// <param name="httpClient">The <see cref="HttpClient"/> to send HTTP requests with.</param>
2323
/// <param name="outOfProcessNodeJSServiceOptionsAccessor">The <see cref="OutOfProcessNodeJSServiceOptions"/> accessor.</param>
24-
public HttpClientService(HttpClient httpClient,
25-
IOptions<OutOfProcessNodeJSServiceOptions> outOfProcessNodeJSServiceOptionsAccessor)
24+
public HttpClientService(HttpClient httpClient, IOptions<OutOfProcessNodeJSServiceOptions> outOfProcessNodeJSServiceOptionsAccessor)
2625
{
2726
_httpClient = httpClient;
2827

29-
// Configure
30-
OutOfProcessNodeJSServiceOptions outOfProcessNodeJSServiceOptions = outOfProcessNodeJSServiceOptionsAccessor.Value;
31-
httpClient.Timeout = outOfProcessNodeJSServiceOptions.TimeoutMS == -1 ? System.Threading.Timeout.InfiniteTimeSpan :
32-
TimeSpan.FromMilliseconds(outOfProcessNodeJSServiceOptions.TimeoutMS + 1000);
28+
// Set timeout to invocation timeout + 1000 so that HttpClient does not timeout requests if user specifies a timeout > HttpClient's (100,000)
29+
OutOfProcessNodeJSServiceOptions options = outOfProcessNodeJSServiceOptionsAccessor.Value;
30+
httpClient.Timeout = options.InvocationTimeoutMS < 0 ? System.Threading.Timeout.InfiniteTimeSpan : TimeSpan.FromMilliseconds(options.InvocationTimeoutMS + 1000);
3331
}
3432

3533
/// <inheritdoc />

src/NodeJS/NodeJSServiceImplementations/OutOfProcess/Http/HttpNodeJSService.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Net;
66
using System.Net.Http;
77
using System.Reflection;
8-
using System.Text;
98
using System.Text.RegularExpressions;
109
using System.Threading;
1110
using System.Threading.Tasks;
@@ -50,8 +49,8 @@ public class HttpNodeJSService : OutOfProcessNodeJSService
5049
/// <param name="httpContentFactory">The factory for creating <see cref="HttpContent"/>s.</param>
5150
/// <param name="embeddedResourcesService">The service for retrieving NodeJS Http server scripts.</param>
5251
/// <param name="fileWatcherFactory">The service for creating <see cref="IFileWatcher"/>s</param>
53-
/// <param name="monitorService">The service for lock-based thread synchronization.</param>
5452
/// <param name="taskService">The service for utilizing tasks.</param>
53+
/// <param name="blockDrainerService">The service for draining code blocks.</param>
5554
/// <param name="httpClientService">The service for utilizing <see cref="HttpClient"/>.</param>
5655
/// <param name="jsonService">The service for JSON serialization and deserialization.</param>
5756
/// <param name="nodeJSProcessFactory">The factory for creating <see cref="NodeJSProcess"/>s.</param>
@@ -61,8 +60,8 @@ public HttpNodeJSService(IOptions<OutOfProcessNodeJSServiceOptions> outOfProcess
6160
IHttpContentFactory httpContentFactory,
6261
IEmbeddedResourcesService embeddedResourcesService,
6362
IFileWatcherFactory fileWatcherFactory,
64-
IMonitorService monitorService,
6563
ITaskService taskService,
64+
IBlockDrainerService blockDrainerService,
6665
IHttpClientService httpClientService,
6766
IJsonService jsonService,
6867
INodeJSProcessFactory nodeJSProcessFactory,
@@ -72,8 +71,8 @@ public HttpNodeJSService(IOptions<OutOfProcessNodeJSServiceOptions> outOfProcess
7271
outOfProcessNodeJSServiceOptionsAccessor,
7372
embeddedResourcesService,
7473
fileWatcherFactory,
75-
monitorService,
7674
taskService,
75+
blockDrainerService,
7776
typeof(HttpNodeJSService).GetTypeInfo().Assembly,
7877
#if NETCOREAPP3_1 || NET5_0_OR_GREATER
7978
httpNodeJSServiceOptionsAccessor.Value.Version == HttpVersion.Version20 ? HTTP20_SERVER_SCRIPT_NAME : HTTP11_SERVER_SCRIPT_NAME)

0 commit comments

Comments
 (0)