diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index c71360e..28bbf14 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -27,8 +27,8 @@ jobs: uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4 with: dotnet-version: | - 6.0.x 8.0.x + 10.0.x - name: NuGet Restore run: dotnet restore -v n @@ -41,6 +41,6 @@ jobs: shell: pwsh - name: Durable framework tests - run: dotnet test --no-build --verbosity normal --filter Category!=Stress ./test/DurableTask.SqlServer.Tests/DurableTask.SqlServer.Tests.csproj + run: dotnet test --no-build --verbosity normal --filter Category!=Stress -p:TestTfmsInParallel=false ./test/DurableTask.SqlServer.Tests/DurableTask.SqlServer.Tests.csproj - name: Functions runtime tests - run: dotnet test --no-build --verbosity normal ./test/DurableTask.SqlServer.AzureFunctions.Tests/DurableTask.SqlServer.AzureFunctions.Tests.csproj + run: dotnet test --no-build --verbosity normal -p:TestTfmsInParallel=false ./test/DurableTask.SqlServer.AzureFunctions.Tests/DurableTask.SqlServer.AzureFunctions.Tests.csproj diff --git a/DurableTask.SqlServer.sln b/DurableTask.SqlServer.sln index 69645c3..016d058 100644 --- a/DurableTask.SqlServer.sln +++ b/DurableTask.SqlServer.sln @@ -17,6 +17,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution src\common.props = src\common.props Directory.Build.targets = Directory.Build.targets Directory.Packages.props = Directory.Packages.props + global.json = global.json nuget.config = nuget.config README.md = README.md sign.snk = sign.snk diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0bcba83..b70f6d3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -15,10 +15,10 @@ steps: version: '2.1.x' - task: UseDotNet@2 - displayName: 'Use the .NET 6 SDK' + displayName: 'Use the .NET 10 SDK' inputs: packageType: 'sdk' - version: '6.0.x' + version: '10.0.x' - task: UseDotNet@2 displayName: 'Use the .NET 8 SDK' diff --git a/eng/templates/build.yml b/eng/templates/build.yml index 04de820..cb57b07 100644 --- a/eng/templates/build.yml +++ b/eng/templates/build.yml @@ -11,10 +11,10 @@ jobs: steps: - task: UseDotNet@2 - displayName: 'Use the .NET 6 SDK' + displayName: 'Use the .NET 10 SDK' inputs: packageType: 'sdk' - version: '6.0.x' + version: '10.0.x' - task: UseDotNet@2 displayName: 'Use the .NET 8 SDK' diff --git a/global.json b/global.json new file mode 100644 index 0000000..545c92c --- /dev/null +++ b/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "10.0.302", + "rollForward": "latestFeature" + } +} diff --git a/src/DurableTask.SqlServer.AzureFunctions/DurableTask.SqlServer.AzureFunctions.csproj b/src/DurableTask.SqlServer.AzureFunctions/DurableTask.SqlServer.AzureFunctions.csproj index 18b4003..761e45f 100644 --- a/src/DurableTask.SqlServer.AzureFunctions/DurableTask.SqlServer.AzureFunctions.csproj +++ b/src/DurableTask.SqlServer.AzureFunctions/DurableTask.SqlServer.AzureFunctions.csproj @@ -4,10 +4,7 @@ - net8.0 - - - + net8.0;net10.0 $(DefineConstants);FUNCTIONS_V4 diff --git a/src/DurableTask.SqlServer/DurableTask.SqlServer.csproj b/src/DurableTask.SqlServer/DurableTask.SqlServer.csproj index e8b3e59..8828cd8 100644 --- a/src/DurableTask.SqlServer/DurableTask.SqlServer.csproj +++ b/src/DurableTask.SqlServer/DurableTask.SqlServer.csproj @@ -4,7 +4,7 @@ - netstandard2.0 + netstandard2.0;net8.0;net10.0 true diff --git a/src/DurableTask.SqlServer/SqlUtils.cs b/src/DurableTask.SqlServer/SqlUtils.cs index 88bfd85..435f786 100644 --- a/src/DurableTask.SqlServer/SqlUtils.cs +++ b/src/DurableTask.SqlServer/SqlUtils.cs @@ -910,7 +910,8 @@ public static Task ExecuteReaderAsync( command, traceHelper, instanceId, - cmd => cmd.ExecuteReaderAsync(cancellationToken)); + cmd => cmd.ExecuteReaderAsync(cancellationToken), + cancellationToken); } public static Task ExecuteNonQueryAsync( @@ -923,7 +924,8 @@ public static Task ExecuteNonQueryAsync( command, traceHelper, instanceId, - cmd => cmd.ExecuteNonQueryAsync(cancellationToken)); + cmd => cmd.ExecuteNonQueryAsync(cancellationToken), + cancellationToken); } public static Task ExecuteScalarAsync( @@ -936,20 +938,26 @@ public static Task ExecuteScalarAsync( command, traceHelper, instanceId, - cmd => cmd.ExecuteScalarAsync(cancellationToken)); + cmd => cmd.ExecuteScalarAsync(cancellationToken), + cancellationToken); } static async Task ExecuteSprocAndTraceAsync( DbCommand command, LogHelper traceHelper, string? instanceId, - Func> executor) + Func> executor, + CancellationToken cancellationToken) { var context = new SprocExecutionContext(); try { return await WithRetry(command, executor, context, traceHelper, instanceId); } + catch (SqlException e) when (cancellationToken.IsCancellationRequested) + { + throw new OperationCanceledException("The SQL operation was canceled.", e, cancellationToken); + } finally { context.LatencyStopwatch.Stop(); diff --git a/src/Functions.Worker.Extensions.DurableTask.SqlServer/Functions.Worker.Extensions.DurableTask.SqlServer.csproj b/src/Functions.Worker.Extensions.DurableTask.SqlServer/Functions.Worker.Extensions.DurableTask.SqlServer.csproj index 507326b..70fb4ae 100644 --- a/src/Functions.Worker.Extensions.DurableTask.SqlServer/Functions.Worker.Extensions.DurableTask.SqlServer.csproj +++ b/src/Functions.Worker.Extensions.DurableTask.SqlServer/Functions.Worker.Extensions.DurableTask.SqlServer.csproj @@ -4,7 +4,7 @@ - netstandard2.0 + netstandard2.0;net8.0;net10.0 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.SqlServer diff --git a/test/DurableTask.SqlServer.AzureFunctions.Tests/DurableTask.SqlServer.AzureFunctions.Tests.csproj b/test/DurableTask.SqlServer.AzureFunctions.Tests/DurableTask.SqlServer.AzureFunctions.Tests.csproj index e5e00b3..02aa180 100644 --- a/test/DurableTask.SqlServer.AzureFunctions.Tests/DurableTask.SqlServer.AzureFunctions.Tests.csproj +++ b/test/DurableTask.SqlServer.AzureFunctions.Tests/DurableTask.SqlServer.AzureFunctions.Tests.csproj @@ -1,7 +1,7 @@  - net8.0 + net8.0;net10.0 false true 9.0 diff --git a/test/DurableTask.SqlServer.Tests/DurableTask.SqlServer.Tests.csproj b/test/DurableTask.SqlServer.Tests/DurableTask.SqlServer.Tests.csproj index a021dd6..9c0f819 100644 --- a/test/DurableTask.SqlServer.Tests/DurableTask.SqlServer.Tests.csproj +++ b/test/DurableTask.SqlServer.Tests/DurableTask.SqlServer.Tests.csproj @@ -1,7 +1,7 @@  - net6.0 + net8.0;net10.0 false true 9.0 diff --git a/test/DurableTask.SqlServer.Tests/Integration/DataRetentionTests.cs b/test/DurableTask.SqlServer.Tests/Integration/DataRetentionTests.cs index 710bd07..d261c67 100644 --- a/test/DurableTask.SqlServer.Tests/Integration/DataRetentionTests.cs +++ b/test/DurableTask.SqlServer.Tests/Integration/DataRetentionTests.cs @@ -143,7 +143,7 @@ public async Task PurgesMoreThanOneThousandInstances() version: string.Empty, implementation: (ctx, input) => Task.FromResult(input)); - TimeSpan timeout = TimeSpan.FromSeconds(60); + TimeSpan timeout = TimeSpan.FromMinutes(2); await Task.WhenAll(instances.Select(instance => instance.WaitForCompletion(timeout))); var filter = new PurgeInstanceFilter( diff --git a/test/PerformanceTests/PerformanceTests.csproj b/test/PerformanceTests/PerformanceTests.csproj index 9570a29..74ce038 100644 --- a/test/PerformanceTests/PerformanceTests.csproj +++ b/test/PerformanceTests/PerformanceTests.csproj @@ -1,6 +1,6 @@  - net8.0 + net8.0;net10.0 v4 diff --git a/tools/TestDBGenerator/TestDBGenerator.csproj b/tools/TestDBGenerator/TestDBGenerator.csproj index ff3f925..79809f1 100644 --- a/tools/TestDBGenerator/TestDBGenerator.csproj +++ b/tools/TestDBGenerator/TestDBGenerator.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net8.0;net10.0 enable enable @@ -20,7 +20,6 @@ -