diff --git a/src/Packaging.NServiceBus.AmazonSQS/Packaging.NServiceBus.AmazonSQS.csproj b/src/Packaging.NServiceBus.AmazonSQS/Packaging.NServiceBus.AmazonSQS.csproj
index 9eba00f..9ef5a95 100644
--- a/src/Packaging.NServiceBus.AmazonSQS/Packaging.NServiceBus.AmazonSQS.csproj
+++ b/src/Packaging.NServiceBus.AmazonSQS/Packaging.NServiceBus.AmazonSQS.csproj
@@ -40,19 +40,19 @@
- ..\packages\AWSSDK.Core.3.3.21.6\lib\net45\AWSSDK.Core.dll
+ ..\packages\AWSSDK.Core.3.3.29.16\lib\net45\AWSSDK.Core.dll
- ..\packages\AWSSDK.S3.3.3.16.2\lib\net45\AWSSDK.S3.dll
+ ..\packages\AWSSDK.S3.3.3.31.3\lib\net45\AWSSDK.S3.dll
- ..\packages\AWSSDK.SQS.3.3.3.2\lib\net45\AWSSDK.SQS.dll
+ ..\packages\AWSSDK.SQS.3.3.3.42\lib\net45\AWSSDK.SQS.dll
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AmazonSQS.4.1.2\lib\net452\NServiceBus.AmazonSQS.dll
+ ..\packages\NServiceBus.AmazonSQS.4.2.0\lib\net452\NServiceBus.AmazonSQS.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
@@ -75,8 +75,8 @@
-
-
+
+
diff --git a/src/Packaging.NServiceBus.AmazonSQS/packages.config b/src/Packaging.NServiceBus.AmazonSQS/packages.config
index 262a99e..7cda599 100644
--- a/src/Packaging.NServiceBus.AmazonSQS/packages.config
+++ b/src/Packaging.NServiceBus.AmazonSQS/packages.config
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Monitoring.AcceptanceTests/ServiceControl.Monitoring.AcceptanceTests.csproj b/src/ServiceControl.Monitoring.AcceptanceTests/ServiceControl.Monitoring.AcceptanceTests.csproj
index fc06555..455c6bd 100644
--- a/src/ServiceControl.Monitoring.AcceptanceTests/ServiceControl.Monitoring.AcceptanceTests.csproj
+++ b/src/ServiceControl.Monitoring.AcceptanceTests/ServiceControl.Monitoring.AcceptanceTests.csproj
@@ -36,11 +36,11 @@
4
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
@@ -52,7 +52,7 @@
..\packages\NServiceBus.Metrics.ServiceControl.3.0.2\lib\net452\NServiceBus.Metrics.ServiceControl.dll
- ..\packages\NServiceBus.Newtonsoft.Json.2.1.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
+ ..\packages\NServiceBus.Newtonsoft.Json.2.2.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll
diff --git a/src/ServiceControl.Monitoring.AcceptanceTests/packages.config b/src/ServiceControl.Monitoring.AcceptanceTests/packages.config
index 110aa78..d8ed0ff 100644
--- a/src/ServiceControl.Monitoring.AcceptanceTests/packages.config
+++ b/src/ServiceControl.Monitoring.AcceptanceTests/packages.config
@@ -1,10 +1,10 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/ServiceControl.Monitoring.SmokeTests.AmazonSQS.csproj b/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/ServiceControl.Monitoring.SmokeTests.AmazonSQS.csproj
index 1f3198b..529f393 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/ServiceControl.Monitoring.SmokeTests.AmazonSQS.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/ServiceControl.Monitoring.SmokeTests.AmazonSQS.csproj
@@ -36,22 +36,22 @@
- ..\packages\AWSSDK.Core.3.3.21.6\lib\net45\AWSSDK.Core.dll
+ ..\packages\AWSSDK.Core.3.3.29.16\lib\net45\AWSSDK.Core.dll
- ..\packages\AWSSDK.S3.3.3.16.2\lib\net45\AWSSDK.S3.dll
+ ..\packages\AWSSDK.S3.3.3.31.3\lib\net45\AWSSDK.S3.dll
- ..\packages\AWSSDK.SQS.3.3.3.2\lib\net45\AWSSDK.SQS.dll
+ ..\packages\AWSSDK.SQS.3.3.3.42\lib\net45\AWSSDK.SQS.dll
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
- ..\packages\NServiceBus.AmazonSQS.4.1.2\lib\net452\NServiceBus.AmazonSQS.dll
+ ..\packages\NServiceBus.AmazonSQS.4.2.0\lib\net452\NServiceBus.AmazonSQS.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
@@ -63,7 +63,7 @@
..\packages\NServiceBus.Metrics.ServiceControl.3.0.2\lib\net452\NServiceBus.Metrics.ServiceControl.dll
- ..\packages\NServiceBus.Newtonsoft.Json.2.1.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
+ ..\packages\NServiceBus.Newtonsoft.Json.2.2.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll
@@ -103,8 +103,8 @@
-
-
+
+
diff --git a/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/packages.config b/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/packages.config
index a4f445a..b0a65da 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.AmazonSQS/packages.config
@@ -1,14 +1,14 @@
-
-
-
-
+
+
+
+
-
-
+
+
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Monitoring.SmokeTests.AzureServiceBus/ServiceControl.Monitoring.SmokeTests.AzureServiceBus.csproj b/src/ServiceControl.Monitoring.SmokeTests.AzureServiceBus/ServiceControl.Monitoring.SmokeTests.AzureServiceBus.csproj
index 167955d..ce60102 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.AzureServiceBus/ServiceControl.Monitoring.SmokeTests.AzureServiceBus.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.AzureServiceBus/ServiceControl.Monitoring.SmokeTests.AzureServiceBus.csproj
@@ -51,16 +51,16 @@
- 7.1.4
+ 7.1.6
3.0.2
- 1.0.0-alpha0174
+ 1.0.0
- 11.0.2
+ 12.0.1
diff --git a/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues.csproj b/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues.csproj
index 2e505db..d1a1e78 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues.csproj
@@ -47,17 +47,17 @@
..\packages\Microsoft.Data.Services.Client.5.8.4\lib\net40\Microsoft.Data.Services.Client.dll
-
- ..\packages\WindowsAzure.Storage.8.2.1\lib\net45\Microsoft.WindowsAzure.Storage.dll
+
+ ..\packages\WindowsAzure.Storage.9.3.3\lib\net45\Microsoft.WindowsAzure.Storage.dll
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
- ..\packages\NServiceBus.Azure.Transports.WindowsAzureStorageQueues.8.0.1\lib\net452\NServiceBus.Azure.Transports.WindowsAzureStorageQueues.dll
+ ..\packages\NServiceBus.Azure.Transports.WindowsAzureStorageQueues.8.1.0\lib\net452\NServiceBus.Azure.Transports.WindowsAzureStorageQueues.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
@@ -69,7 +69,7 @@
..\packages\NServiceBus.Metrics.ServiceControl.3.0.2\lib\net452\NServiceBus.Metrics.ServiceControl.dll
- ..\packages\NServiceBus.Newtonsoft.Json.2.1.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
+ ..\packages\NServiceBus.Newtonsoft.Json.2.2.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll
diff --git a/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/packages.config b/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/packages.config
index 8ed8ebe..2641866 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.AzureStorageQueues/packages.config
@@ -4,18 +4,18 @@
-
+
-
-
+
+
-
+
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/ServiceControl.Monitoring.SmokeTests.LearningTransport.csproj b/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/ServiceControl.Monitoring.SmokeTests.LearningTransport.csproj
index 3c4e324..b5076ac 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/ServiceControl.Monitoring.SmokeTests.LearningTransport.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/ServiceControl.Monitoring.SmokeTests.LearningTransport.csproj
@@ -35,11 +35,11 @@
4
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
diff --git a/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/packages.config b/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/packages.config
index 9ba27ad..15fb60e 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.LearningTransport/packages.config
@@ -1,8 +1,8 @@
-
+
-
+
diff --git a/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus.csproj b/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus.csproj
index aeff00e..07e498f 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus.csproj
@@ -45,16 +45,16 @@
..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.3.19.8\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll
- ..\packages\WindowsAzure.ServiceBus.4.1.11\lib\net45\Microsoft.ServiceBus.dll
+ ..\packages\WindowsAzure.ServiceBus.5.0.2\lib\net46\Microsoft.ServiceBus.dll
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
-
- ..\packages\NServiceBus.Azure.Transports.WindowsAzureServiceBus.8.0.6\lib\net452\NServiceBus.Azure.Transports.WindowsAzureServiceBus.dll
+
+ ..\packages\NServiceBus.Azure.Transports.WindowsAzureServiceBus.9.1.0\lib\net46\NServiceBus.Azure.Transports.WindowsAzureServiceBus.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
@@ -66,7 +66,7 @@
..\packages\NServiceBus.Metrics.ServiceControl.3.0.2\lib\net452\NServiceBus.Metrics.ServiceControl.dll
- ..\packages\NServiceBus.Newtonsoft.Json.2.1.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
+ ..\packages\NServiceBus.Newtonsoft.Json.2.2.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll
diff --git a/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/packages.config b/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/packages.config
index 1de09c4..c3fd23a 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.LegacyAzureServiceBus/packages.config
@@ -2,14 +2,14 @@
-
+
-
-
+
+
-
+
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Monitoring.SmokeTests.MSMQ/ServiceControl.Monitoring.SmokeTests.MSMQ.csproj b/src/ServiceControl.Monitoring.SmokeTests.MSMQ/ServiceControl.Monitoring.SmokeTests.MSMQ.csproj
index 1c41d4e..1af027a 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.MSMQ/ServiceControl.Monitoring.SmokeTests.MSMQ.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.MSMQ/ServiceControl.Monitoring.SmokeTests.MSMQ.csproj
@@ -36,11 +36,11 @@
4
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
diff --git a/src/ServiceControl.Monitoring.SmokeTests.MSMQ/packages.config b/src/ServiceControl.Monitoring.SmokeTests.MSMQ/packages.config
index 9e8cbe3..cc73f59 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.MSMQ/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.MSMQ/packages.config
@@ -1,8 +1,8 @@
-
+
-
+
diff --git a/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/ServiceControl.Monitoring.SmokeTests.RabbitMQ.csproj b/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/ServiceControl.Monitoring.SmokeTests.RabbitMQ.csproj
index 3379446..764a635 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/ServiceControl.Monitoring.SmokeTests.RabbitMQ.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/ServiceControl.Monitoring.SmokeTests.RabbitMQ.csproj
@@ -47,11 +47,11 @@
..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.28\lib\net46\Microsoft.Diagnostics.Tracing.EventSource.dll
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
@@ -63,7 +63,7 @@
..\packages\NServiceBus.Metrics.ServiceControl.3.0.2\lib\net452\NServiceBus.Metrics.ServiceControl.dll
- ..\packages\NServiceBus.Newtonsoft.Json.2.1.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
+ ..\packages\NServiceBus.Newtonsoft.Json.2.2.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
..\packages\NServiceBus.RabbitMQ.5.0.1\lib\net452\NServiceBus.Transport.RabbitMQ.dll
diff --git a/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/packages.config b/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/packages.config
index 8f7e55e..79edce6 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.RabbitMQ/packages.config
@@ -4,12 +4,12 @@
-
+
-
+
-
+
diff --git a/src/ServiceControl.Monitoring.SmokeTests.SQLServer/ServiceControl.Monitoring.SmokeTests.SQLServer.csproj b/src/ServiceControl.Monitoring.SmokeTests.SQLServer/ServiceControl.Monitoring.SmokeTests.SQLServer.csproj
index ffa84ca..2bd75f8 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.SQLServer/ServiceControl.Monitoring.SmokeTests.SQLServer.csproj
+++ b/src/ServiceControl.Monitoring.SmokeTests.SQLServer/ServiceControl.Monitoring.SmokeTests.SQLServer.csproj
@@ -35,11 +35,11 @@
4
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- ..\packages\NServiceBus.AcceptanceTesting.7.1.4\lib\net452\NServiceBus.AcceptanceTesting.dll
+ ..\packages\NServiceBus.AcceptanceTesting.7.1.6\lib\net452\NServiceBus.AcceptanceTesting.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
diff --git a/src/ServiceControl.Monitoring.SmokeTests.SQLServer/packages.config b/src/ServiceControl.Monitoring.SmokeTests.SQLServer/packages.config
index 5ac5449..6d7da90 100644
--- a/src/ServiceControl.Monitoring.SmokeTests.SQLServer/packages.config
+++ b/src/ServiceControl.Monitoring.SmokeTests.SQLServer/packages.config
@@ -1,8 +1,8 @@
-
+
-
+
diff --git a/src/ServiceControl.Monitoring.Tests/ServiceControl.Monitoring.Tests.csproj b/src/ServiceControl.Monitoring.Tests/ServiceControl.Monitoring.Tests.csproj
index 1cc6e49..89f1956 100644
--- a/src/ServiceControl.Monitoring.Tests/ServiceControl.Monitoring.Tests.csproj
+++ b/src/ServiceControl.Monitoring.Tests/ServiceControl.Monitoring.Tests.csproj
@@ -51,8 +51,8 @@
..\packages\Nancy.1.4.4\lib\net40\Nancy.dll
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
diff --git a/src/ServiceControl.Monitoring.Tests/packages.config b/src/ServiceControl.Monitoring.Tests/packages.config
index 8173ede..02d4011 100644
--- a/src/ServiceControl.Monitoring.Tests/packages.config
+++ b/src/ServiceControl.Monitoring.Tests/packages.config
@@ -3,7 +3,7 @@
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Monitoring/ServiceControl.Monitoring.csproj b/src/ServiceControl.Monitoring/ServiceControl.Monitoring.csproj
index 925d723..45a1cb7 100644
--- a/src/ServiceControl.Monitoring/ServiceControl.Monitoring.csproj
+++ b/src/ServiceControl.Monitoring/ServiceControl.Monitoring.csproj
@@ -76,8 +76,8 @@
..\packages\Nancy.Hosting.Self.1.4.1\lib\net40\Nancy.Hosting.Self.dll
True
-
- ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
..\packages\NLog.4.5.10\lib\net45\NLog.dll
@@ -86,7 +86,7 @@
..\packages\NServiceBus.7.1.6\lib\net452\NServiceBus.Core.dll
- ..\packages\NServiceBus.Newtonsoft.Json.2.1.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
+ ..\packages\NServiceBus.Newtonsoft.Json.2.2.0\lib\net452\NServiceBus.Newtonsoft.Json.dll
..\packages\NServiceBus.NLog.3.0.0\lib\net452\NServiceBus.NLog.dll
diff --git a/src/ServiceControl.Monitoring/packages.config b/src/ServiceControl.Monitoring/packages.config
index 25fa312..c5e1d9d 100644
--- a/src/ServiceControl.Monitoring/packages.config
+++ b/src/ServiceControl.Monitoring/packages.config
@@ -5,11 +5,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Transports.AmazonSQS/QueueAttributesRequestCache.cs b/src/ServiceControl.Transports.AmazonSQS/QueueAttributesRequestCache.cs
index ba84c97..ed3d7f5 100644
--- a/src/ServiceControl.Transports.AmazonSQS/QueueAttributesRequestCache.cs
+++ b/src/ServiceControl.Transports.AmazonSQS/QueueAttributesRequestCache.cs
@@ -1,6 +1,7 @@
namespace ServiceControl.Transports.AmazonSQS
{
using System.Collections.Concurrent;
+ using System.Threading;
using System.Threading.Tasks;
using Amazon.SQS;
using Amazon.SQS.Model;
@@ -13,14 +14,14 @@ public QueueAttributesRequestCache(IAmazonSQS sqsClient)
this.sqsClient = sqsClient;
}
- public async Task GetQueueAttributesRequest(string queueName)
+ public async Task GetQueueAttributesRequest(string queueName, CancellationToken token)
{
if (cache.TryGetValue(queueName, out var attReq))
{
return attReq;
}
- var queueUrl = await GetQueueUrl(queueName).ConfigureAwait(false);
+ var queueUrl = await GetQueueUrl(queueName, token).ConfigureAwait(false);
attReq = new GetQueueAttributesRequest {QueueUrl = queueUrl};
attReq.AttributeNames.Add("ApproximateNumberOfMessages");
@@ -30,9 +31,9 @@ public async Task GetQueueAttributesRequest(string qu
return attReq;
}
- async Task GetQueueUrl(string queueName)
+ async Task GetQueueUrl(string queueName, CancellationToken token)
{
- var response = await sqsClient.GetQueueUrlAsync(queueName)
+ var response = await sqsClient.GetQueueUrlAsync(queueName, token)
.ConfigureAwait(false);
return response.QueueUrl;
}
diff --git a/src/ServiceControl.Transports.AmazonSQS/QueueLengthProvider.cs b/src/ServiceControl.Transports.AmazonSQS/QueueLengthProvider.cs
index fd18fd9..c0b7c85 100644
--- a/src/ServiceControl.Transports.AmazonSQS/QueueLengthProvider.cs
+++ b/src/ServiceControl.Transports.AmazonSQS/QueueLengthProvider.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+ using Amazon.Runtime;
using Amazon.SQS;
using Monitoring;
using Monitoring.Infrastructure;
@@ -23,12 +24,24 @@ public class QueueLengthProvider : IProvideQueueLength
string queueNamePrefix;
CancellationTokenSource stop = new CancellationTokenSource();
- Task pooler;
+ Task poller;
+ Func clientFactory = () => new AmazonSQSClient();
public void Initialize(string connectionString, QueueLengthStore store)
{
var builder = new DbConnectionStringBuilder { ConnectionString = connectionString };
+ if (builder.ContainsKey("AccessKeyId") || builder.ContainsKey("SecretAccessKey"))
+ {
+ // if the user provided the access key and secret access key they should always be loaded from environment credentials
+ clientFactory = () => new AmazonSQSClient(new EnvironmentVariablesAWSCredentials());
+ }
+ else
+ {
+ //See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html#creds-assign
+ Logger.Info("BasicAWSCredentials have not been supplied in the connection string. Attempting to use existing environment or IAM role credentials.");
+ }
+
if (builder.TryGetValue("QueueNamePrefix", out var prefix))
{
queueNamePrefix = (string)prefix;
@@ -64,21 +77,26 @@ public Task Start()
{
stop = new CancellationTokenSource();
- pooler = Task.Run(async () =>
+ poller = Task.Run(async () =>
{
- using (var client = new AmazonSQSClient())
+ using (var client = clientFactory())
{
var cache = new QueueAttributesRequestCache(client);
+ var token = stop.Token;
- while (!stop.Token.IsCancellationRequested)
+ while (!token.IsCancellationRequested)
{
try
{
- await FetchQueueSizes(cache, client).ConfigureAwait(false);
+ await FetchQueueSizes(cache, client, token).ConfigureAwait(false);
UpdateQueueLengthStore();
- await Task.Delay(QueryDelayInterval).ConfigureAwait(false);
+ await Task.Delay(QueryDelayInterval, token).ConfigureAwait(false);
+ }
+ catch (OperationCanceledException)
+ {
+ // no-op
}
catch (Exception e)
{
@@ -95,7 +113,7 @@ public Task Stop()
{
stop.Cancel();
- return pooler;
+ return poller;
}
void UpdateQueueLengthStore()
@@ -114,17 +132,21 @@ void UpdateQueueLengthStore()
}
}
- Task FetchQueueSizes(QueueAttributesRequestCache cache, IAmazonSQS client) => Task.WhenAll(sizes.Select(kvp => FetchLength(kvp.Key, client, cache)));
+ Task FetchQueueSizes(QueueAttributesRequestCache cache, IAmazonSQS client, CancellationToken token) => Task.WhenAll(sizes.Select(kvp => FetchLength(kvp.Key, client, cache, token)));
- async Task FetchLength(string queue, IAmazonSQS client, QueueAttributesRequestCache cache)
+ async Task FetchLength(string queue, IAmazonSQS client, QueueAttributesRequestCache cache, CancellationToken token)
{
try
{
- var attReq = await cache.GetQueueAttributesRequest(queue).ConfigureAwait(false);
- var response = await client.GetQueueAttributesAsync(attReq).ConfigureAwait(false);
+ var attReq = await cache.GetQueueAttributesRequest(queue, token).ConfigureAwait(false);
+ var response = await client.GetQueueAttributesAsync(attReq, token).ConfigureAwait(false);
sizes[queue] = response.ApproximateNumberOfMessages;
}
+ catch (OperationCanceledException)
+ {
+ // no-op
+ }
catch (Exception ex)
{
Logger.Error($"Obtaining an approximate number of messages failed for '{queue}'", ex);
diff --git a/src/ServiceControl.Transports.AmazonSQS/ServiceControl.Transports.AmazonSQS.csproj b/src/ServiceControl.Transports.AmazonSQS/ServiceControl.Transports.AmazonSQS.csproj
index 260b4b9..46c32bc 100644
--- a/src/ServiceControl.Transports.AmazonSQS/ServiceControl.Transports.AmazonSQS.csproj
+++ b/src/ServiceControl.Transports.AmazonSQS/ServiceControl.Transports.AmazonSQS.csproj
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/src/ServiceControl.Transports.AmazonSQS/ServiceControlSqsTransport.cs b/src/ServiceControl.Transports.AmazonSQS/ServiceControlSqsTransport.cs
index 1dcc48d..e2675d3 100644
--- a/src/ServiceControl.Transports.AmazonSQS/ServiceControlSqsTransport.cs
+++ b/src/ServiceControl.Transports.AmazonSQS/ServiceControlSqsTransport.cs
@@ -5,7 +5,10 @@ namespace ServiceControl.Transports.AmazonSQS
using System.Linq;
using System.Reflection;
using Amazon;
+ using Amazon.Runtime;
+ using Amazon.SQS;
using NServiceBus;
+ using NServiceBus.Logging;
using NServiceBus.Settings;
using NServiceBus.Transport;
@@ -15,8 +18,21 @@ public override TransportInfrastructure Initialize(SettingsHolder settings, stri
{
var builder = new DbConnectionStringBuilder { ConnectionString = connectionString };
- PromoteEnvironmentVariableFromConnectionString(builder, "AccessKeyId", "AWS_ACCESS_KEY_ID");
- PromoteEnvironmentVariableFromConnectionString(builder, "SecretAccessKey", "AWS_SECRET_ACCESS_KEY");
+ if (builder.ContainsKey("AccessKeyId") || builder.ContainsKey("SecretAccessKey"))
+ {
+ PromoteEnvironmentVariableFromConnectionString(builder, "AccessKeyId", "AWS_ACCESS_KEY_ID");
+ PromoteEnvironmentVariableFromConnectionString(builder, "SecretAccessKey", "AWS_SECRET_ACCESS_KEY");
+
+ // if the user provided the access key and secret access key they should always be loaded from environment credentials
+ var transport = new TransportExtensions(settings);
+ transport.ClientFactory(() => new AmazonSQSClient(new EnvironmentVariablesAWSCredentials()));
+ }
+ else
+ {
+ //See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html#creds-assign
+ log.Info("BasicAWSCredentials have not been supplied in the connection string. Attempting to use existing environment or IAM role credentials.");
+ }
+
var region = PromoteEnvironmentVariableFromConnectionString(builder, "Region", "AWS_REGION");
var awsRegion = RegionEndpoint.EnumerableAllRegions
@@ -62,5 +78,7 @@ static string PromoteEnvironmentVariableFromConnectionString(DbConnectionStringB
throw new ArgumentException($"Missing value for '{connectionStringKey}'", connectionStringKey);
}
+
+ static ILog log = LogManager.GetLogger();
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.Transports.AzureServiceBus/QueueLengthProvider.cs b/src/ServiceControl.Transports.AzureServiceBus/QueueLengthProvider.cs
index 74969c2..82bd1ca 100644
--- a/src/ServiceControl.Transports.AzureServiceBus/QueueLengthProvider.cs
+++ b/src/ServiceControl.Transports.AzureServiceBus/QueueLengthProvider.cs
@@ -21,7 +21,7 @@ public class QueueLengthProvider : IProvideQueueLength
ManagementClient managementClient;
CancellationTokenSource stop = new CancellationTokenSource();
- Task pooler;
+ Task poller;
public void Initialize(string connectionString, QueueLengthStore store)
{
@@ -46,23 +46,29 @@ public Task Start()
{
stop = new CancellationTokenSource();
- pooler = Task.Run(async () =>
+ poller = Task.Run(async () =>
{
- while (!stop.Token.IsCancellationRequested)
+ var token = stop.Token;
+
+ while (!token.IsCancellationRequested)
{
try
{
Logger.Debug("Waiting for next interval");
- await Task.Delay(QueryDelayInterval).ConfigureAwait(false);
+ await Task.Delay(QueryDelayInterval, token).ConfigureAwait(false);
Logger.DebugFormat("Querying management client.");
- var queues = await managementClient.GetQueuesAsync().ConfigureAwait(false);
+ var queues = await managementClient.GetQueuesAsync(cancellationToken: token).ConfigureAwait(false);
var lookup = queues.ToLookup(x => x.Path, StringComparer.InvariantCultureIgnoreCase);
Logger.DebugFormat("Retrieved details of {0} queues", lookup.Count);
- await UpdateQueueLengthStore(lookup);
+ await UpdateQueueLengthStore(lookup, token);
+ }
+ catch (OperationCanceledException)
+ {
+ // no-op
}
catch (Exception e)
{
@@ -74,7 +80,7 @@ public Task Start()
return TaskEx.Completed;
}
- private async Task UpdateQueueLengthStore(ILookup queueData)
+ async Task UpdateQueueLengthStore(ILookup queueData, CancellationToken token)
{
var timestamp = DateTime.UtcNow.Ticks;
foreach (var mapping in endpointQueueMappings)
@@ -87,7 +93,7 @@ private async Task UpdateQueueLengthStore(ILookup queu
new RawMessage.Entry
{
DateTicks = timestamp,
- Value = (await managementClient.GetQueueRuntimeInfoAsync( queue.Path )).MessageCountDetails.ActiveMessageCount
+ Value = (await managementClient.GetQueueRuntimeInfoAsync(queue.Path, token).ConfigureAwait(false)).MessageCountDetails.ActiveMessageCount
}
};
queueLengthStore.Store(entries, new EndpointInputQueue(mapping.Key.EndpointName, queue.Path));
@@ -102,8 +108,8 @@ private async Task UpdateQueueLengthStore(ILookup queu
public async Task Stop()
{
stop.Cancel();
- await managementClient.CloseAsync();
- await pooler;
+ await poller.ConfigureAwait(false);
+ await managementClient.CloseAsync().ConfigureAwait(false);
}
static TimeSpan QueryDelayInterval = TimeSpan.FromMilliseconds(200);
diff --git a/src/ServiceControl.Transports.AzureServiceBus/ServiceControl.Transports.AzureServiceBus.csproj b/src/ServiceControl.Transports.AzureServiceBus/ServiceControl.Transports.AzureServiceBus.csproj
index b24e5b0..e2938d2 100644
--- a/src/ServiceControl.Transports.AzureServiceBus/ServiceControl.Transports.AzureServiceBus.csproj
+++ b/src/ServiceControl.Transports.AzureServiceBus/ServiceControl.Transports.AzureServiceBus.csproj
@@ -9,7 +9,7 @@
-
+
\ No newline at end of file
diff --git a/src/ServiceControl.Transports.AzureStorageQueues/QueueLengthProvider.cs b/src/ServiceControl.Transports.AzureStorageQueues/QueueLengthProvider.cs
index 09a4103..d11adf7 100644
--- a/src/ServiceControl.Transports.AzureStorageQueues/QueueLengthProvider.cs
+++ b/src/ServiceControl.Transports.AzureStorageQueues/QueueLengthProvider.cs
@@ -24,7 +24,7 @@ public class QueueLengthProvider : IProvideQueueLength
QueueLengthStore store;
CancellationTokenSource stop = new CancellationTokenSource();
- Task pooler;
+ Task poller;
public void Initialize(string connectionString, QueueLengthStore store)
{
@@ -62,17 +62,22 @@ public Task Start()
{
stop = new CancellationTokenSource();
- pooler = Task.Run(async () =>
+ poller = Task.Run(async () =>
{
- while (!stop.Token.IsCancellationRequested)
+ var token = stop.Token;
+ while (!token.IsCancellationRequested)
{
try
{
- await FetchQueueSizes().ConfigureAwait(false);
+ await FetchQueueSizes(token).ConfigureAwait(false);
UpdateQueueLengthStore();
- await Task.Delay(QueryDelayInterval);
+ await Task.Delay(QueryDelayInterval, token).ConfigureAwait(false);
+ }
+ catch (OperationCanceledException)
+ {
+ // no-op
}
catch (Exception e)
{
@@ -88,7 +93,7 @@ public Task Stop()
{
stop.Cancel();
- return pooler;
+ return poller;
}
void UpdateQueueLengthStore()
@@ -107,17 +112,21 @@ void UpdateQueueLengthStore()
}
}
- Task FetchQueueSizes() => Task.WhenAll(sizes.Select(kvp => FetchLength(kvp.Key)));
+ Task FetchQueueSizes(CancellationToken token) => Task.WhenAll(sizes.Select(kvp => FetchLength(kvp.Key, token)));
- async Task FetchLength(CloudQueue queue)
+ async Task FetchLength(CloudQueue queue, CancellationToken token)
{
try
{
- await queue.FetchAttributesAsync(stop.Token).ConfigureAwait(false);
+ await queue.FetchAttributesAsync(token).ConfigureAwait(false);
sizes[queue] = queue.ApproximateMessageCount.GetValueOrDefault();
problematicQueues.TryRemove(queue, out _);
}
+ catch (OperationCanceledException)
+ {
+ // no-op
+ }
catch (Exception ex)
{
// simple "log once" approach to do not flood logs
diff --git a/src/ServiceControl.Transports.AzureStorageQueues/ServiceControl.Transports.AzureStorageQueues.csproj b/src/ServiceControl.Transports.AzureStorageQueues/ServiceControl.Transports.AzureStorageQueues.csproj
index f9a51a9..69b20ad 100644
--- a/src/ServiceControl.Transports.AzureStorageQueues/ServiceControl.Transports.AzureStorageQueues.csproj
+++ b/src/ServiceControl.Transports.AzureStorageQueues/ServiceControl.Transports.AzureStorageQueues.csproj
@@ -49,7 +49,7 @@
- 8.0.1
+ 8.1.0
diff --git a/src/ServiceControl.Transports.LegacyAzureServiceBus/EndpointOrientedTopologyAzureServiceBusTransport.cs b/src/ServiceControl.Transports.LegacyAzureServiceBus/EndpointOrientedTopologyAzureServiceBusTransport.cs
index 59dcd72..6649fe3 100644
--- a/src/ServiceControl.Transports.LegacyAzureServiceBus/EndpointOrientedTopologyAzureServiceBusTransport.cs
+++ b/src/ServiceControl.Transports.LegacyAzureServiceBus/EndpointOrientedTopologyAzureServiceBusTransport.cs
@@ -9,7 +9,8 @@ public class EndpointOrientedTopologyAzureServiceBusTransport : AzureServiceBusT
public override TransportInfrastructure Initialize(SettingsHolder settings, string connectionString)
{
var extensions = new TransportExtensions(settings);
- extensions.UseEndpointOrientedTopology();
+ var topology = extensions.UseEndpointOrientedTopology();
+ topology.EnableMigrationToForwardingTopology();
return base.Initialize(settings, connectionString);
}
diff --git a/src/ServiceControl.Transports.LegacyAzureServiceBus/QueueLengthProvider.cs b/src/ServiceControl.Transports.LegacyAzureServiceBus/QueueLengthProvider.cs
index b630a8e..512a69d 100644
--- a/src/ServiceControl.Transports.LegacyAzureServiceBus/QueueLengthProvider.cs
+++ b/src/ServiceControl.Transports.LegacyAzureServiceBus/QueueLengthProvider.cs
@@ -22,7 +22,7 @@ public class QueueLengthProvider : IProvideQueueLength
NamespaceManager namespaceManager;
CancellationTokenSource stop = new CancellationTokenSource();
- Task pooler;
+ Task poller;
public void Initialize(string connectionString, QueueLengthStore store)
{
@@ -47,10 +47,10 @@ public Task Start()
{
stop = new CancellationTokenSource();
- pooler = Task.Run(async () =>
+ poller = Task.Run(async () =>
{
-
- while (!stop.Token.IsCancellationRequested)
+ var token = stop.Token;
+ while (!token.IsCancellationRequested)
{
try
{
@@ -64,7 +64,11 @@ public Task Start()
UpdateQueueLengthStore(lookup);
Logger.Debug("Waiting for next interval");
- await Task.Delay(QueryDelayInterval).ConfigureAwait(false);
+ await Task.Delay(QueryDelayInterval, token).ConfigureAwait(false);
+ }
+ catch (OperationCanceledException)
+ {
+ // no-op
}
catch (Exception e)
{
@@ -105,7 +109,7 @@ public Task Stop()
{
stop.Cancel();
- return pooler;
+ return poller;
}
static TimeSpan QueryDelayInterval = TimeSpan.FromMilliseconds(200);
diff --git a/src/ServiceControl.Transports.LegacyAzureServiceBus/ServiceControl.Transports.LegacyAzureServiceBus.csproj b/src/ServiceControl.Transports.LegacyAzureServiceBus/ServiceControl.Transports.LegacyAzureServiceBus.csproj
index d59ea8b..011184c 100644
--- a/src/ServiceControl.Transports.LegacyAzureServiceBus/ServiceControl.Transports.LegacyAzureServiceBus.csproj
+++ b/src/ServiceControl.Transports.LegacyAzureServiceBus/ServiceControl.Transports.LegacyAzureServiceBus.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/src/ServiceControl.Transports.RabbitMQ/QueueLengthProvider.cs b/src/ServiceControl.Transports.RabbitMQ/QueueLengthProvider.cs
index 18b43d7..b6eec8c 100644
--- a/src/ServiceControl.Transports.RabbitMQ/QueueLengthProvider.cs
+++ b/src/ServiceControl.Transports.RabbitMQ/QueueLengthProvider.cs
@@ -43,17 +43,22 @@ public Task Start()
{
queryExecutor.Initialize();
- queryLoop = Task.Run(async () =>
+ poller = Task.Run(async () =>
{
- while (!stoppedTokenSource.Token.IsCancellationRequested)
+ var token = stoppedTokenSource.Token;
+ while (!token.IsCancellationRequested)
{
try
{
- await FetchQueueLengths();
+ await FetchQueueLengths(token);
UpdateQueueLengths();
- await Task.Delay(QueryDelayInterval).ConfigureAwait(false);
+ await Task.Delay(QueryDelayInterval, token).ConfigureAwait(false);
+ }
+ catch (OperationCanceledException)
+ {
+ // no-op
}
catch (Exception e)
{
@@ -69,7 +74,7 @@ public async Task Stop()
{
stoppedTokenSource.Cancel();
- await queryLoop;
+ await poller;
queryExecutor.Dispose();
}
@@ -96,7 +101,7 @@ void UpdateQueueLengths()
}
}
- async Task FetchQueueLengths()
+ async Task FetchQueueLengths(CancellationToken token)
{
foreach (var endpointQueuePair in endpointQueues)
{
@@ -114,7 +119,7 @@ await queryExecutor.Execute(m =>
{
Logger.Warn($"Error querying queue length for {queueName}", e);
}
- });
+ }, token);
}
}
@@ -137,7 +142,7 @@ public void Initialize()
connectionFactory = new ConnectionFactory(connectionConfiguration, null, false, false);
}
- public async Task Execute(Action action)
+ public async Task Execute(Action action, CancellationToken token)
{
try
{
@@ -149,7 +154,7 @@ public async Task Execute(Action action)
//Connection implements reconnection logic
while (connection.IsOpen == false)
{
- await Task.Delay(ReconnectionDelay);
+ await Task.Delay(ReconnectionDelay, token);
}
if (model == null || model.IsClosed)
@@ -161,6 +166,10 @@ public async Task Execute(Action action)
action(model);
}
+ catch (OperationCanceledException)
+ {
+ // no-op
+ }
catch (Exception e)
{
Logger.Warn("Error querying queue length.", e);
@@ -179,7 +188,7 @@ public void Dispose()
ConcurrentDictionary sizes = new ConcurrentDictionary();
CancellationTokenSource stoppedTokenSource = new CancellationTokenSource();
- Task queryLoop;
+ Task poller;
QueueLengthStore store;
QueryExecutor queryExecutor;
diff --git a/src/ServiceControl.Transports.SQLServer/QueueLengthProvider.cs b/src/ServiceControl.Transports.SQLServer/QueueLengthProvider.cs
index bce6134..7864f7f 100644
--- a/src/ServiceControl.Transports.SQLServer/QueueLengthProvider.cs
+++ b/src/ServiceControl.Transports.SQLServer/QueueLengthProvider.cs
@@ -66,16 +66,22 @@ public Task Start()
poller = Task.Run(async () =>
{
- while (!stop.Token.IsCancellationRequested)
+ var token = stop.Token;
+
+ while (!token.IsCancellationRequested)
{
try
{
- await Task.Delay(QueryDelayInterval);
+ await Task.Delay(QueryDelayInterval, token).ConfigureAwait(false);
- await QueryTableSizes();
+ await QueryTableSizes(token).ConfigureAwait(false);
UpdateQueueLengthStore();
}
+ catch (OperationCanceledException)
+ {
+ // no-op
+ }
catch (Exception e)
{
Logger.Error("Error querying sql queue sizes.", e);
@@ -109,7 +115,7 @@ void UpdateQueueLengthStore()
}
}
- async Task QueryTableSizes()
+ async Task QueryTableSizes(CancellationToken token)
{
var chunks = tableSizes
.Select((i, index) => new
@@ -121,13 +127,13 @@ async Task QueryTableSizes()
.Select(grp => grp.Select(g => g.i).ToArray())
.ToList();
- foreach (var chunk in chunks)
+ using (var connection = new SqlConnection(connectionString))
{
- using (var connection = new SqlConnection(connectionString))
- {
- await connection.OpenAsync();
+ await connection.OpenAsync(token).ConfigureAwait(false);
- await UpdateChunk(connection, chunk, stop.Token);
+ foreach (var chunk in chunks)
+ {
+ await UpdateChunk(connection, chunk, token).ConfigureAwait(false);
}
}
}
@@ -138,11 +144,11 @@ async Task UpdateChunk(SqlConnection connection, KeyValuePair[] c
using (var command = new SqlCommand(query, connection))
{
- var reader = await command.ExecuteReaderAsync(token);
+ var reader = await command.ExecuteReaderAsync(token).ConfigureAwait(false);
foreach (var chunkPair in chunk)
{
- await reader.ReadAsync(token);
+ await reader.ReadAsync(token).ConfigureAwait(false);
var queueLength = reader.GetInt32(0);
@@ -155,7 +161,7 @@ async Task UpdateChunk(SqlConnection connection, KeyValuePair[] c
tableSizes.TryUpdate(chunkPair.Key, queueLength, chunkPair.Value);
}
- await reader.NextResultAsync(token);
+ await reader.NextResultAsync(token).ConfigureAwait(false);
}
}
}