Skip to content

Remove the in-process worker, port Netherite to isolated, rebuild CI - #321

Closed
Viswanath (ViswanathBalusu) wants to merge 1 commit into
microsoft:mainfrom
ViswanathBalusu:remove-inproc-worker
Closed

Viswanath (ViswanathBalusu) wants to merge 1 commit into
microsoft:mainfrom
ViswanathBalusu:remove-inproc-worker

Conversation

@ViswanathBalusu

Copy link
Copy Markdown

The .NET in-process backend was a parallel fork of the isolated one, not a consumer of it, so removing it touches nothing the isolated projects rely on.

Removed:
durablefunctionsmonitor.dotnetbackend
tests/durablefunctionsmonitor.dotnetbackend.tests
custom-backends/{mssql,netherite,netcore21,netcore31}

Netherite was the only storage provider without an isolated backend, so it is ported rather than dropped: durablefunctionsmonitor.dotnetisolated.netherite plus custom-backends/dotnetIsolated-netherite, mirroring the .mssql pair. Task Hub discovery reads Netherite's DurableTaskPartitions table via core's TableClient, which also gains identity-based Storage support that the in-process version lacked. Reaching that helper needs one InternalsVisibleTo, matching how core already exposes internals to its test project.

VS Code extension now launches isolated backends: FUNCTIONS_WORKER_RUNTIME is dotnet-isolated and the contradictory --csharp flag is gone. The Functions v4 version gate moved ahead of the custom-backend dispatch, since every backend now requires it. The backendVersionToUse setting is dropped; it only ever selected .NET Core 2.1/3.1 in-process backends.

Custom backends reference durablefunctionsmonitor.dotnetisolated.* by project, so they cannot build from inside the VSIX. CI now pre-publishes them as binaries instead of shipping source, which also removes the slow dotnet publish on first launch. Docker builds move to a repo-root context for the same reason.

CI/CD:
build.yml reusable build, called by all publishing workflows
pr-build.yml PR validation, publishes nothing
main-build.yml main -> GitHub Packages prerelease
publish-nuget.yml tag v* -> nuget.org via Trusted Publishing (OIDC)
push-to-nuget.yml deleted, superseded

Directory.Build.props becomes the single source of version truth, replacing 12 hardcoded copies. Package ids and versions are now nuspec tokens supplied at pack time.

Fixes a latent packaging bug: MSBuild only auto-imports build/.targets, but the nuspecs shipped a fixed filename, so the targets that copies DfmStatics into a consumer's output never fired for DurableFunctionsMonitor.DotNetIsolated.MsSql. Now targeted as build/$id$.targets.

publish-nuget.yml hard-fails unless PACKAGE_ID_PREFIX is set, because DurableFunctionsMonitor.DotNetIsolated and .MsSql are owned by other accounts on nuget.org and cannot be published from this repo.

The .NET in-process backend was a parallel fork of the isolated one, not a
consumer of it, so removing it touches nothing the isolated projects rely on.

Removed:
  durablefunctionsmonitor.dotnetbackend
  tests/durablefunctionsmonitor.dotnetbackend.tests
  custom-backends/{mssql,netherite,netcore21,netcore31}

Netherite was the only storage provider without an isolated backend, so it is
ported rather than dropped: durablefunctionsmonitor.dotnetisolated.netherite
plus custom-backends/dotnetIsolated-netherite, mirroring the .mssql pair. Task
Hub discovery reads Netherite's DurableTaskPartitions table via core's
TableClient, which also gains identity-based Storage support that the
in-process version lacked. Reaching that helper needs one InternalsVisibleTo,
matching how core already exposes internals to its test project.

VS Code extension now launches isolated backends: FUNCTIONS_WORKER_RUNTIME is
dotnet-isolated and the contradictory --csharp flag is gone. The Functions v4
version gate moved ahead of the custom-backend dispatch, since every backend
now requires it. The backendVersionToUse setting is dropped; it only ever
selected .NET Core 2.1/3.1 in-process backends.

Custom backends reference durablefunctionsmonitor.dotnetisolated.* by project,
so they cannot build from inside the VSIX. CI now pre-publishes them as
binaries instead of shipping source, which also removes the slow dotnet publish
on first launch. Docker builds move to a repo-root context for the same reason.

CI/CD:
  build.yml            reusable build, called by all publishing workflows
  pr-build.yml         PR validation, publishes nothing
  main-build.yml       main -> GitHub Packages prerelease
  publish-nuget.yml    tag v* -> nuget.org via Trusted Publishing (OIDC)
  push-to-nuget.yml    deleted, superseded

Directory.Build.props becomes the single source of version truth, replacing 12
hardcoded copies. Package ids and versions are now nuspec tokens supplied at
pack time.

Fixes a latent packaging bug: MSBuild only auto-imports build/<PackageId>.targets,
but the nuspecs shipped a fixed filename, so the targets that copies DfmStatics
into a consumer's output never fired for DurableFunctionsMonitor.DotNetIsolated.MsSql.
Now targeted as build/$id$.targets.

publish-nuget.yml hard-fails unless PACKAGE_ID_PREFIX is set, because
DurableFunctionsMonitor.DotNetIsolated and .MsSql are owned by other accounts
on nuget.org and cannot be published from this repo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ViswanathBalusu
Viswanath (ViswanathBalusu) deleted the remove-inproc-worker branch September 4, 2026 17:31
@ViswanathBalusu
Viswanath (ViswanathBalusu) restored the remove-inproc-worker branch September 4, 2026 17:32
@ViswanathBalusu
Viswanath (ViswanathBalusu) deleted the remove-inproc-worker branch September 4, 2026 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant