[SVLS-9186] add Windows Function App support to aas instrument#2357
Merged
ava-silver merged 1 commit intoJun 25, 2026
Merged
Conversation
Contributor
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
🎉 All green!🧪 All tests passed 🔗 Commit SHA: 222cbaf | Docs | Datadog PR Page | Give us feedback! |
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 22, 2026 19:46
bbb595f to
675be60
Compare
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 22, 2026 21:32
705aa92 to
88e2ce2
Compare
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 22, 2026 21:41
88e2ce2 to
ada4aef
Compare
ava-silver
force-pushed
the
graphite-base/2357
branch
from
June 22, 2026 21:41
df67891 to
7556a51
Compare
ava-silver
changed the base branch from
graphite-base/2357
to
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
June 22, 2026 21:41
1 task
ava-silver
changed the base branch from
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
to
graphite-base/2357
June 23, 2026 14:10
ava-silver
force-pushed
the
graphite-base/2357
branch
from
June 23, 2026 14:11
7556a51 to
2639e03
Compare
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 23, 2026 14:11
ada4aef to
54924fe
Compare
ava-silver
changed the base branch from
graphite-base/2357
to
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
June 23, 2026 14:11
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 23, 2026 20:43
54924fe to
d471c5b
Compare
ava-silver
force-pushed
the
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
branch
from
June 23, 2026 21:02
8bc19ef to
9703991
Compare
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 23, 2026 21:02
d471c5b to
7bdd25e
Compare
ava-silver
force-pushed
the
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
branch
from
June 24, 2026 16:32
9703991 to
f71e945
Compare
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
2 times, most recently
from
June 24, 2026 16:56
4354f98 to
1038c8f
Compare
ava-silver
marked this pull request as ready for review
June 24, 2026 19:03
Lewis-E
reviewed
Jun 24, 2026
| return envVars | ||
| } | ||
|
|
||
| export const AZURE_FUNCTIONS_DOCS_URL = 'https://docs.datadoghq.com/serverless/azure_functions' |
There was a problem hiding this comment.
Do you want https://docs.datadoghq.com/serverless/azure_functions for this url, or https://docs.datadoghq.com/serverless/azure_functions/dotnet_extension? The second page is specific to the extension installation, while the first (current value of AZURE_FUNCTIONS_DOCS_URL) is mostly about the compat layer.
Contributor
Author
There was a problem hiding this comment.
good catch, for some of the warnings we do want it, but not for all. i'll differentiate the two
Lewis-E
approved these changes
Jun 24, 2026
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 24, 2026 20:02
a143d04 to
473dd89
Compare
ava-silver
force-pushed
the
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
branch
from
June 24, 2026 20:02
0cf934c to
e832323
Compare
ava-silver
force-pushed
the
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
branch
from
June 24, 2026 20:59
e832323 to
cb356f8
Compare
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
2 times, most recently
from
June 24, 2026 21:01
844cb34 to
c956523
Compare
Drarig29
approved these changes
Jun 24, 2026
nina9753
approved these changes
Jun 25, 2026
Base automatically changed from
ava.silver/svls-9256/auto-mark-dd-env-sticky-on-slot-instrumentation
to
master
June 25, 2026 17:18
ava-silver
force-pushed
the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
from
June 25, 2026 17:21
c956523 to
222cbaf
Compare
ava-silver
deleted the
ava.silver/svls-9186/windows-dotnet-functions-support
branch
June 25, 2026 20:52
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What and why?
aas instrumenttreated every site like a Web App, so Function Apps fell through the platform checks and got the wrong handling. This adds first-class Function App support:SiteExtensionsdirectory, so Kudu'sMoveDirectorystep fails intermittently during the install. SettingWEBSITE_PRIVATE_EXTENSIONS=0makes the runtime release those locks. It is committed before the install and registered as a sticky slot setting so it doesn't follow a swap into production.Web App behavior is unchanged. Builds on the sticky-slot helpers from the parent PR.
How?
common.ts:isFunctionApp,isWindowsFunctionApp,isConsumptionPlan, theWEBSITE_PRIVATE_EXTENSIONSconstant, andAZURE_FUNCTIONS_DOCS_URL.isConsumptionPlanreadssite.sku(the plan tier name, e.g.Dynamicfor Consumption,FlexConsumptionfor Flex Consumption) off the site object the command already fetches -- no extra API call.getEnvVars(config, site, webApp)derives containerization from the site and injectsWEBSITE_PRIVATE_EXTENSIONS=0for Windows Function App slots, so the lock-release setting is part of the settings written before the install.registerStickySlotSettingsintomutateStickySlotSettings(..., mode: 'add' | 'remove', ...), so the same single-read-modify-write path both registers settings (instrument) and unregisters them (uninstrument).ProcessResulttype and astickySlotSettingshelper here so both commands use them.instrument.ts:instrumentExtension/instrumentSidecartake the resolvedsiteand write app settings before the extension install (previously the write was dispatched and only awaited afterward). This gives the lock-release setting the ordering it needs.WEBSITE_PRIVATE_EXTENSIONSsticky alongsideDD_ENV.uninstrument.ts:ProcessResultand, on a Windows Function App slot, removes theWEBSITE_PRIVATE_EXTENSIONSapp setting and unregisters it sticky (mutateStickySlotSettingsinremovemode, aggregated once per site).DD_ENVis intentionally left sticky.Testing
Validated end-to-end against a live Windows .NET (isolated) Function App on a Dedicated (App Service) plan: deployed an HTTP-triggered function, ran
aas instrument --windows-runtime dotnet, drove traffic, and confirmed traces in Datadog.While doing this I also confirmed the plan requirement empirically: on a Consumption plan the extension installs but never injects the profiler (
CORECLR_*env vars are absent from the worker), so no traces flow -- which is why the command now rejects Consumption/Flex Consumption up front. On the Dedicated plan, traces flowed withWEBSITE_USE_PLACEHOLDER_DOTNETISOLATEDleft at its default, so no extra placeholder configuration is needed.Review checklist