fix: allow assets in multiworker setup#7290
Conversation
🦋 Changeset detectedLatest commit: 24463da The changes in this PR will be included in the next version bump. This PR includes changesets to release 5 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
A wrangler prerelease is available for testing. You can install this latest build in your project with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-wrangler-7290You can reference the automatically updated head of this PR with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/7290/npm-package-wrangler-7290Or you can use npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-wrangler-7290 dev path/to/script.jsAdditional artifacts:cloudflare-workers-bindings-extension: wget https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-workers-bindings-extension-7290 -O ./cloudflare-workers-bindings-extension.0.0.0-v367f0ce0d.vsix && code --install-extension ./cloudflare-workers-bindings-extension.0.0.0-v367f0ce0d.vsixcreate-cloudflare: npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-create-cloudflare-7290 --no-auto-update@cloudflare/kv-asset-handler: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-kv-asset-handler-7290miniflare: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-miniflare-7290@cloudflare/pages-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-pages-shared-7290@cloudflare/unenv-preset: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-unenv-preset-7290@cloudflare/vite-plugin: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-vite-plugin-7290@cloudflare/vitest-pool-workers: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-vitest-pool-workers-7290@cloudflare/workers-editor-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-workers-editor-shared-7290@cloudflare/workers-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-workers-shared-7290@cloudflare/workflows-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13205502548/npm-package-cloudflare-workflows-shared-7290Note that these links will no longer work once the GitHub Actions artifact expires.
Please ensure constraints are pinned, and |
ab5187d to
f123d65
Compare
e8a729f to
e95ee2a
Compare
a997838 to
2999970
Compare
| } | ||
| }) | ||
| ) { | ||
| // if target worker does have assets, set binding to point to router worker for that worker ("assets:router-targetWorkerName"), not the user worker itself ("core:user:targetWorkerName") |
There was a problem hiding this comment.
Is that how this works in production? I'd have expected service bindings to bypass the router worker
There was a problem hiding this comment.
yeah production behaviour seriously confused me at first but fetch on a service binding does definitely hit assets, even if it is a binding to a named entrypoint.
| prod (ie expected behaviour) | |
|---|---|
| Simple fetch handler | assets / UW |
| Fetch on default worker entrypoint | Assets / UW |
| RPC on default entrypoint | UW only |
| Fetch on named entrypoint | |
| RPC on named entrypoint | UW only |
Edit for posterity:
Fetch on named entrypoint | Assets / UW's named entrypoint
this is a bug! that makes so much more sense!!
There was a problem hiding this comment.
Could we add some tests for this? i.e. in https://github.com/cloudflare/workers-sdk/blob/80a83bb4708ea2e3d4b514d3ebc97aa40c14439c/packages/wrangler/e2e/multiworker-dev.test.ts. In particular it would be good to have a test that validates that RPC service bindings bypass Assets
There was a problem hiding this comment.
47a09dab086217fc873658567cde510f914c9a2a
1728808 to
47a09da
Compare
penalosa
left a comment
There was a problem hiding this comment.
Some small comments, but overall 🎉
36b787e to
24463da
Compare
#7251 will allow running multiple workers in one Miniflare instance. Currently we only set up the router/asset worker for the first worker passed to miniflare, assuming this will be the only user worker. This PR will make sure assets works regardless of how many 'user workers' are passed in and at what point.