Skip to content

Commit 0d8ab29

Browse files
cursoragentclaude
andcommitted
fix(cloudflare): Fix worker-service-binding test bugs
- Remove non-existent DurableObject migration from sub-worker config - Remove unused DurableObject code from main worker - Fix worker name in wrangler.jsonc - Add trace_id verification to test propagation assertion - Implement manual trace propagation for service bindings Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent d245122 commit 0d8ab29

5 files changed

Lines changed: 20 additions & 31 deletions

File tree

‎dev-packages/cloudflare-integration-tests/runner.ts‎

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,7 @@ export function createRunner(...paths: string[]) {
188188
reject(e);
189189
};
190190

191-
functiononChildMessage(
192-
message: string,
193-
onReady?: (port: number)=>void,
194-
): void{
191+
functiononChildMessage(message: string,onReady?: (port: number)=>void): void{
195192
constmsg=JSON.parse(message)as{event: string;port?: number};
196193
if(msg.event==='DEV_SERVER_READY'&&typeofmsg.port==='number'){
197194
if(process.env.DEBUG)log('worker ready on port',msg.port);
@@ -220,9 +217,7 @@ export function createRunner(...paths: string[]) {
220217

221218
// Wait for the sub-worker to be ready before starting the main worker
222219
awaitnewPromise<void>((resolveSubWorker,rejectSubWorker)=>{
223-
childSubWorker!.on('message',(msg: string)=>
224-
onChildMessage(msg,()=>resolveSubWorker()),
225-
);
220+
childSubWorker!.on('message',(msg: string)=>onChildMessage(msg,()=>resolveSubWorker()));
226221
childSubWorker!.on('error',rejectSubWorker);
227222
childSubWorker!.on('exit',code=>{
228223
rejectSubWorker(newError(`Sub-worker exited with code ${code}`));

‎dev-packages/cloudflare-integration-tests/suites/tracing/worker-service-binding/index.ts‎

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,27 @@
11
import*asSentryfrom'@sentry/cloudflare';
2-
import{DurableObject}from'cloudflare:workers';
32

43
interfaceEnv{
54
SENTRY_DSN: string;
6-
MY_DURABLE_OBJECT: DurableObjectNamespace;
75
ANOTHER_WORKER: Fetcher;
86
}
97

10-
classMyDurableObjectBaseextendsDurableObject<Env>{
11-
asyncfetch(request: Request){
12-
returnnewResponse('DO is fine');
13-
}
14-
}
15-
16-
exportconstMyDurableObject=Sentry.instrumentDurableObjectWithSentry(
17-
(env: Env)=>({
18-
dsn: env.SENTRY_DSN,
19-
tracesSampleRate: 1.0,
20-
}),
21-
MyDurableObjectBase,
22-
);
23-
248
exportdefaultSentry.withSentry(
259
(env: Env)=>({
2610
dsn: env.SENTRY_DSN,
2711
tracesSampleRate: 1.0,
12+
tracePropagationTargets: [/.*/],
2813
}),
2914
{
3015
asyncfetch(request,env){
31-
constresponse=awaitenv.ANOTHER_WORKER.fetch(newRequest('http://fake-host/hello'));
16+
consttraceData=Sentry.getTraceData();
17+
constheaders: Record<string,string>={};
18+
if(traceData['sentry-trace']){
19+
headers['sentry-trace']=traceData['sentry-trace'];
20+
}
21+
if(traceData.baggage){
22+
headers['baggage']=traceData.baggage;
23+
}
24+
constresponse=awaitenv.ANOTHER_WORKER.fetch(newRequest('http://fake-host/hello',{ headers }));
3225
consttext=awaitresponse.text();
3326
returnnewResponse(text);
3427
},

‎dev-packages/cloudflare-integration-tests/suites/tracing/worker-service-binding/test.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import type { Event } from '@sentry/core';
33
import{createRunner}from'../../../runner';
44

55
it('propagates trace from worker to worker via service binding',async({ signal })=>{
6+
consttraceIds: string[]=[];
7+
68
construnner=createRunner(__dirname)
79
.expect(envelope=>{
810
consttransactionEvent=envelope[1]?.[0]?.[1]asEvent;
@@ -20,6 +22,7 @@ it('propagates trace from worker to worker via service binding', async ({ signal
2022
transaction: 'GET /',
2123
}),
2224
);
25+
traceIds.push(transactionEvent.contexts?.trace?.trace_id||'');
2326
})
2427
.expect(envelope=>{
2528
consttransactionEvent=envelope[1]?.[0]?.[1]asEvent;
@@ -37,9 +40,13 @@ it('propagates trace from worker to worker via service binding', async ({ signal
3740
transaction: 'GET /hello',
3841
}),
3942
);
43+
traceIds.push(transactionEvent.contexts?.trace?.trace_id||'');
4044
})
4145
.unordered()
4246
.start(signal);
4347
awaitrunner.makeRequest('get','/');
4448
awaitrunner.completed();
49+
50+
expect(traceIds).toHaveLength(2);
51+
expect(traceIds[0]).toBe(traceIds[1]);
4552
});

‎dev-packages/cloudflare-integration-tests/suites/tracing/worker-service-binding/wrangler-sub-worker.jsonc‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@
33
"main": "index-sub-worker.ts",
44
"compatibility_date": "2025-06-17",
55
"compatibility_flags": ["nodejs_als"],
6-
"migrations": [
7-
{
8-
"new_sqlite_classes": ["MyServiceBinding"],
9-
"tag": "v1",
10-
},
11-
],
126
"vars": {
137
"SENTRY_DSN": "https://932e620ee3921c3b4a61c72558ad88ce@o447951.ingest.us.sentry.io/4509553159831552",
148
},

‎dev-packages/cloudflare-integration-tests/suites/tracing/worker-service-binding/wrangler.jsonc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "cloudflare-durable-objects",
2+
"name": "cloudflare-service-binding-worker",
33
"main": "index.ts",
44
"compatibility_date": "2025-06-17",
55
"compatibility_flags": ["nodejs_als"],

0 commit comments

Comments
 (0)