[Azure Functions] Stabilize isolated host readiness and shutdown#8887
[Azure Functions] Stabilize isolated host readiness and shutdown#8887bouwkast wants to merge 3 commits into
Conversation
|
@codex review |
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8887) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (70ms) : 68, 72
master - mean (70ms) : 68, 72
section Bailout
This PR (8887) - mean (74ms) : 72, 76
master - mean (77ms) : 73, 80
section CallTarget+Inlining+NGEN
This PR (8887) - mean (1,082ms) : 1039, 1126
master - mean (1,090ms) : 1029, 1151
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (109ms) : 105, 113
master - mean (112ms) : 105, 118
section Bailout
This PR (8887) - mean (110ms) : 108, 113
master - mean (114ms) : 108, 120
section CallTarget+Inlining+NGEN
This PR (8887) - mean (787ms) : 765, 809
master - mean (780ms) : 750, 809
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (97ms) : 92, 102
master - mean (96ms) : 93, 99
section Bailout
This PR (8887) - mean (97ms) : 94, 100
master - mean (101ms) : 91, 110
section CallTarget+Inlining+NGEN
This PR (8887) - mean (934ms) : 900, 968
master - mean (937ms) : 900, 974
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (97ms) : 90, 103
master - mean (95ms) : 91, 100
section Bailout
This PR (8887) - mean (98ms) : 94, 103
master - mean (95ms) : 93, 97
section CallTarget+Inlining+NGEN
This PR (8887) - mean (810ms) : 774, 846
master - mean (814ms) : 778, 850
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (202ms) : 197, 207
master - mean (202ms) : 196, 209
section Bailout
This PR (8887) - mean (205ms) : 200, 210
master - mean (205ms) : 201, 209
section CallTarget+Inlining+NGEN
This PR (8887) - mean (1,209ms) : 1159, 1260
master - mean (1,213ms) : 1165, 1261
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (289ms) : 281, 298
master - mean (291ms) : 284, 297
section Bailout
This PR (8887) - mean (289ms) : 281, 296
master - mean (289ms) : 283, 295
section CallTarget+Inlining+NGEN
This PR (8887) - mean (970ms) : 942, 997
master - mean (966ms) : 948, 985
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (281ms) : 273, 288
master - mean (281ms) : 275, 288
section Bailout
This PR (8887) - mean (281ms) : 277, 284
master - mean (282ms) : 278, 286
section CallTarget+Inlining+NGEN
This PR (8887) - mean (1,164ms) : 1137, 1191
master - mean (1,166ms) : 1124, 1209
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8887) - mean (276ms) : 269, 283
master - mean (279ms) : 272, 287
section Bailout
This PR (8887) - mean (276ms) : 270, 283
master - mean (281ms) : 276, 286
section CallTarget+Inlining+NGEN
This PR (8887) - mean (1,043ms) : 1002, 1084
master - mean (1,046ms) : 1009, 1083
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmark execution time: 2026-07-10 23:05:11 Comparing candidate commit 20ac1e9 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 72 metrics, 0 unstable metrics, 58 known flaky benchmarks, 68 flaky benchmarks without significant changes.
|
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary of changes
This change stabilizes the isolated Azure Functions integration tests by addressing both startup and shutdown races.
The startup timer can execute before the Functions host has finished registering its HTTP routes. The sample now waits for
/admin/host/pingto report readiness before making its self-calls. Spans created by these readiness probes are excluded from the test results.Previously, the sample waited three seconds after completing its workload and then forcibly killed
func.exe. This could terminate the host before its final trace batch reached the mock agent, leaving tests with only 17 of the expected 21 spans.The tests now keep the host alive while waiting for and asserting spans and logs. After the assertions complete, they request shutdown through a dedicated endpoint. If Core Tools remains running, teardown terminates only the process tree started by that test.
This removes the automatic exit timer, mutex, fixed shutdown delay, and global
func.exetermination. Log assertions also wait for a completion signal instead of depending on process-exit timing.Test coverage
Had a lot of azurite / docker issues locally so just going to try to see if it works on CI
Other details
#incident-57303