diff --git a/.github/workflows/smoketest-dotnet-isolated-v4.yml b/.github/workflows/smoketest-dotnet-isolated-v4.yml
index 2b5daaadc..f5d45f539 100644
--- a/.github/workflows/smoketest-dotnet-isolated-v4.yml
+++ b/.github/workflows/smoketest-dotnet-isolated-v4.yml
@@ -86,7 +86,7 @@ jobs:
uses: actions/cache@v3
with:
path: .azurite
- key: ${{ runner.os }}-azurite-v1
+ key: ${{ runner.os }}-azurite-v2
- name: Install Azurite
if: steps.cache-azurite.outputs.cache-hit != 'true'
@@ -100,7 +100,7 @@ jobs:
- name: Start Azurite
shell: pwsh
run: |
- Start-Process (Resolve-Path '.azurite\node_modules\.bin\azurite.cmd') -ArgumentList '--silent','--blobPort','10000','--queuePort','10001','--tablePort','10002'
+ Start-Process (Resolve-Path '.azurite/node_modules/.bin/azurite') -ArgumentList '--silent','--skipApiVersionCheck','--blobPort','10000','--queuePort','10001','--tablePort','10002'
$timeout = 30
for ($i = 1; $i -le $timeout; $i++) {
try {
diff --git a/.github/workflows/validate-build-analyzer.yml b/.github/workflows/validate-build-analyzer.yml
index f9e746efe..eaede117b 100644
--- a/.github/workflows/validate-build-analyzer.yml
+++ b/.github/workflows/validate-build-analyzer.yml
@@ -69,7 +69,7 @@ jobs:
- name: Start Azurite
shell: pwsh
run: |
- Start-Process (Resolve-Path '.azurite\node_modules\.bin\azurite.cmd') -ArgumentList '--silent','--blobPort','10000','--queuePort','10001','--tablePort','10002'
+ Start-Process (Resolve-Path '.azurite\node_modules\.bin\azurite.cmd') -ArgumentList '--silent','--skipApiVersionCheck','--blobPort','10000','--queuePort','10001','--tablePort','10002'
$timeout = 30
for ($i = 1; $i -le $timeout; $i++) {
try {
diff --git a/.github/workflows/validate-build-e2e.yml b/.github/workflows/validate-build-e2e.yml
index 814df02d6..edeb5be24 100644
--- a/.github/workflows/validate-build-e2e.yml
+++ b/.github/workflows/validate-build-e2e.yml
@@ -76,7 +76,7 @@ jobs:
- name: Start Azurite
shell: pwsh
run: |
- Start-Process (Resolve-Path '.azurite\node_modules\.bin\azurite.cmd') -ArgumentList '--silent','--blobPort','10000','--queuePort','10001','--tablePort','10002'
+ Start-Process (Resolve-Path '.azurite\node_modules\.bin\azurite.cmd') -ArgumentList '--silent','--skipApiVersionCheck','--blobPort','10000','--queuePort','10001','--tablePort','10002'
$timeout = 30
for ($i = 1; $i -le $timeout; $i++) {
try {
diff --git a/.github/workflows/validate-build-scale.yml b/.github/workflows/validate-build-scale.yml
index b4319d09d..a56cde80b 100644
--- a/.github/workflows/validate-build-scale.yml
+++ b/.github/workflows/validate-build-scale.yml
@@ -64,7 +64,7 @@ jobs:
- name: Run Scale tests
run : |
- ./.azurite/node_modules/.bin/azurite --silent --blobPort 10000 --queuePort 10001 --tablePort 10002 &
+ ./.azurite/node_modules/.bin/azurite --silent --skipApiVersionCheck --blobPort 10000 --queuePort 10001 --tablePort 10002 &
AZURITE_PID=$!
trap "kill $AZURITE_PID || true" EXIT
diff --git a/Directory.Packages.props b/Directory.Packages.props
index a60daa802..abb15a371 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -13,39 +13,39 @@
-
-
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
diff --git a/samples/Directory.Packages.props b/samples/Directory.Packages.props
index ca61b8ff8..1ba8b8490 100644
--- a/samples/Directory.Packages.props
+++ b/samples/Directory.Packages.props
@@ -39,10 +39,10 @@
-
+
-
+
diff --git a/src/WebJobs.Extensions.DurableTask/WebJobs.Extensions.DurableTask.csproj b/src/WebJobs.Extensions.DurableTask/WebJobs.Extensions.DurableTask.csproj
index e86a35040..2c8214c49 100644
--- a/src/WebJobs.Extensions.DurableTask/WebJobs.Extensions.DurableTask.csproj
+++ b/src/WebJobs.Extensions.DurableTask/WebJobs.Extensions.DurableTask.csproj
@@ -6,7 +6,7 @@
Microsoft.Azure.WebJobs.Extensions.DurableTask
3
12
- 2
+ 3
$(MajorVersion).$(MinorVersion).$(PatchVersion)
$(MajorVersion).$(MinorVersion).$(PatchVersion)
$(MajorVersion).0.0.0
diff --git a/src/Worker.Extensions.DurableTask/AssemblyInfo.cs b/src/Worker.Extensions.DurableTask/AssemblyInfo.cs
index 7e47c04d3..7c1fe013d 100644
--- a/src/Worker.Extensions.DurableTask/AssemblyInfo.cs
+++ b/src/Worker.Extensions.DurableTask/AssemblyInfo.cs
@@ -5,5 +5,5 @@
using Microsoft.Azure.Functions.Worker.Extensions.Abstractions;
// TODO: Find a way to generate this dynamically at build-time
-[assembly: ExtensionInformation("Microsoft.Azure.WebJobs.Extensions.DurableTask", "3.12.2")]
+[assembly: ExtensionInformation("Microsoft.Azure.WebJobs.Extensions.DurableTask", "3.12.3")]
[assembly: InternalsVisibleTo("Worker.Extensions.DurableTask.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100cd1dabd5a893b40e75dc901fe7293db4a3caf9cd4d3e3ed6178d49cd476969abe74a9e0b7f4a0bb15edca48758155d35a4f05e6e852fff1b319d103b39ba04acbadd278c2753627c95e1f6f6582425374b92f51cca3deb0d2aab9de3ecda7753900a31f70a236f163006beefffe282888f85e3c76d1205ec7dfef7fa472a17b1")]
diff --git a/src/Worker.Extensions.DurableTask/TaskOrchestrationContextExtensionMethods.cs b/src/Worker.Extensions.DurableTask/TaskOrchestrationContextExtensionMethods.cs
index e40bc6696..b7300a6a2 100644
--- a/src/Worker.Extensions.DurableTask/TaskOrchestrationContextExtensionMethods.cs
+++ b/src/Worker.Extensions.DurableTask/TaskOrchestrationContextExtensionMethods.cs
@@ -38,7 +38,9 @@ public static async Task CallHttpAsync(this TaskOrchestrati
}
ILogger logger = context.CreateReplaySafeLogger("Microsoft.Azure.Functions.Worker.Extensions.DurableTask.CallHttp");
+#pragma warning disable DURABLE2003 // BuiltIn::HttpActivity is a reserved framework activity, not user-defined
DurableHttpResponse response = await context.CallActivityAsync(Constants.HttpTaskActivityReservedName, request);
+#pragma warning restore DURABLE2003
while (response.StatusCode == HttpStatusCode.Accepted && request.AsynchronousPatternEnabled )
{
@@ -82,7 +84,9 @@ public static async Task CallHttpAsync(this TaskOrchestrati
logger.LogInformation($"Polling HTTP status at location: {locationUrl}");
+#pragma warning disable DURABLE2003 // BuiltIn::HttpActivity is a reserved framework activity, not user-defined
response = await context.CallActivityAsync(Constants.HttpTaskActivityReservedName, newHttpRequest);
+#pragma warning restore DURABLE2003
}
return response;
diff --git a/src/Worker.Extensions.DurableTask/Worker.Extensions.DurableTask.csproj b/src/Worker.Extensions.DurableTask/Worker.Extensions.DurableTask.csproj
index e29109ba4..1f8094489 100644
--- a/src/Worker.Extensions.DurableTask/Worker.Extensions.DurableTask.csproj
+++ b/src/Worker.Extensions.DurableTask/Worker.Extensions.DurableTask.csproj
@@ -29,7 +29,7 @@
..\..\sign.snk
- 1.16.2
+ 1.16.3
$(VersionPrefix).0
diff --git a/test/Directory.Packages.props b/test/Directory.Packages.props
index 803a2b337..221a7128b 100644
--- a/test/Directory.Packages.props
+++ b/test/Directory.Packages.props
@@ -31,11 +31,11 @@
-
+
-
+
diff --git a/test/SmokeTests/OOProcSmokeTests/DotNetIsolated/FaultyOrchestrators.cs b/test/SmokeTests/OOProcSmokeTests/DotNetIsolated/FaultyOrchestrators.cs
index 00e7eddd0..fa13b987b 100644
--- a/test/SmokeTests/OOProcSmokeTests/DotNetIsolated/FaultyOrchestrators.cs
+++ b/test/SmokeTests/OOProcSmokeTests/DotNetIsolated/FaultyOrchestrators.cs
@@ -27,29 +27,13 @@ public static Task OOMOrchestrator(
// force the process to run out of memory
#if NET10_0_OR_GREATER
- // On .NET 10+ / Linux, memory overcommit allows virtual allocations to succeed
- // without committing physical RAM. Writing to each page forces the OS to back
- // the allocation with real memory, triggering an actual OOM crash.
- try
- {
- List data = new List();
-
- for (int i = 0; i < 10000000; i++)
- {
- var arr = new byte[1024 * 1024 * 1024];
-
- for (int j = 0; j < arr.Length; j += 4096)
- {
- arr[j] = 1;
- }
-
- data.Add(arr);
- }
- }
- catch (OutOfMemoryException)
- {
- Environment.FailFast("Out of memory!");
- }
+ // On .NET 10+ / Linux, memory overcommit makes true OOM unreliable:
+ // virtual allocations succeed without committing physical RAM, and
+ // writing every page to force commitment is slow and triggers the
+ // Linux OOM killer (SIGKILL) instead of a .NET OutOfMemoryException.
+ // Since this test validates orchestration recovery from a process crash,
+ // use FailFast to simulate the crash directly.
+ Environment.FailFast("Simulated OOM crash for smoke test");
#else
List data = new List();
diff --git a/test/SmokeTests/e2e-test.ps1 b/test/SmokeTests/e2e-test.ps1
index 901a4b026..3a17e054e 100644
--- a/test/SmokeTests/e2e-test.ps1
+++ b/test/SmokeTests/e2e-test.ps1
@@ -1,4 +1,4 @@
-
+
param(
[Parameter(Mandatory=$true)]
[string]$DockerfilePath,
@@ -73,7 +73,7 @@ function Start-And-Wait-Orchestration {
}
$ErrorActionPreference = "Stop"
-$AzuriteVersion = "3.34.0"
+$AzuriteVersion = "3.35.0"
if ($NoSetup -eq $false) {
# Build the docker image first, since that's the most critical step
@@ -100,7 +100,7 @@ if ($NoSetup -eq $false) {
Exit-OnError
Write-Host "Starting Azurite storage emulator using default ports..." -ForegroundColor Yellow
- docker run --name 'azurite' -p 10000:10000 -p 10001:10001 -p 10002:10002 -d "mcr.microsoft.com/azure-storage/azurite:${AzuriteVersion}"
+ docker run --name 'azurite' -p 10000:10000 -p 10001:10001 -p 10002:10002 -d "mcr.microsoft.com/azure-storage/azurite:${AzuriteVersion}" azurite --skipApiVersionCheck -l /data --blobHost 0.0.0.0 --queueHost 0.0.0.0 --tableHost 0.0.0.0
Exit-OnError
if ($SetupSQLServer -eq $true) {
diff --git a/test/e2e/Tests/start-emulators.ps1 b/test/e2e/Tests/start-emulators.ps1
index ae9f86143..b5a2df930 100644
--- a/test/e2e/Tests/start-emulators.ps1
+++ b/test/e2e/Tests/start-emulators.ps1
@@ -62,13 +62,13 @@ if (!$SkipStorageEmulator)
{
npm install -g azurite
New-Item -Path "./azurite" -ItemType Directory -ErrorAction SilentlyContinue
- Start-Process azurite.cmd -WorkingDirectory "./azurite" -ArgumentList "--silent"
+ Start-Process azurite.cmd -WorkingDirectory "./azurite" -ArgumentList "--silent","--skipApiVersionCheck"
}
else
{
sudo npm install -g azurite
New-Item -Path "./azurite" -ItemType Directory -ErrorAction SilentlyContinue
- sudo azurite --silent --location azurite --debug azurite\debug.log &
+ sudo azurite --silent --skipApiVersionCheck --location azurite --debug azurite\debug.log &
}
$startedStorage = $true