Skip to content

Commit 7faabeb

Browse files
authored
Fix asset-worker not logging analytics for successful requests (#7808)
* Fix asset-worker not logging analytics for successful requests * Fix env being undefined in handleRequest span and add version ID
1 parent ce165ff commit 7faabeb

File tree

3 files changed

+38
-20
lines changed

3 files changed

+38
-20
lines changed

.changeset/heavy-parents-switch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@cloudflare/workers-shared": patch
3+
---
4+
5+
fix: fix analytics not being logged for `asset-worker` in the case of a successful request.

packages/workers-shared/asset-worker/src/index.ts

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ export default class extends WorkerEntrypoint<Env> {
106106
hostname: url.hostname,
107107
eyeballPath: url.pathname,
108108
env: this.env.ENVIRONMENT,
109+
version: this.env.VERSION_METADATA?.id,
109110
});
110111

111112
return handleRequest(
@@ -115,21 +116,17 @@ export default class extends WorkerEntrypoint<Env> {
115116
this.unstable_exists.bind(this),
116117
this.unstable_getByETag.bind(this)
117118
);
118-
}).catch((err) =>
119-
this.handleError(sentry, analytics, performance, startTimeMs, err)
120-
);
119+
})
120+
.catch((err) => this.handleError(sentry, analytics, err))
121+
.finally(() => this.submitMetrics(analytics, performance, startTimeMs));
121122
} catch (err) {
122-
return this.handleError(sentry, analytics, performance, startTimeMs, err);
123+
const errorResponse = this.handleError(sentry, analytics, err);
124+
this.submitMetrics(analytics, performance, startTimeMs);
125+
return errorResponse;
123126
}
124127
}
125128

126-
handleError(
127-
sentry: Toucan | undefined,
128-
analytics: Analytics,
129-
performance: PerformanceTimer,
130-
startTimeMs: number,
131-
err: unknown
132-
) {
129+
handleError(sentry: Toucan | undefined, analytics: Analytics, err: unknown) {
133130
try {
134131
const response = new InternalServerErrorResponse(err as Error);
135132

@@ -143,9 +140,22 @@ export default class extends WorkerEntrypoint<Env> {
143140
}
144141

145142
return response;
146-
} finally {
143+
} catch (e) {
144+
console.error("Error handling error", e);
145+
return new InternalServerErrorResponse(e as Error);
146+
}
147+
}
148+
149+
submitMetrics(
150+
analytics: Analytics,
151+
performance: PerformanceTimer,
152+
startTimeMs: number
153+
) {
154+
try {
147155
analytics.setData({ requestTime: performance.now() - startTimeMs });
148156
analytics.write();
157+
} catch (e) {
158+
console.error("Error submitting metrics", e);
149159
}
150160
}
151161

packages/workers-shared/asset-worker/wrangler.toml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ compatibility_date = "2024-07-31"
1515
# nodejs_compat required when using @cloudflare/vitest-pool-workers
1616
compatibility_flags = ["nodejs_compat"]
1717

18+
[unsafe.metadata.build_options]
19+
stable_id = "cloudflare/cf_asset_worker"
20+
networks = ["cf","jdc"]
21+
22+
[vars]
23+
ENVIRONMENT = "production"
24+
25+
[version_metadata]
26+
binding = "VERSION_METADATA"
27+
1828
[[unsafe.bindings]]
1929
name = "CONFIG"
2030
type = "param"
@@ -30,13 +40,6 @@ data_ref = true
3040
name = "ASSETS_KV_NAMESPACE"
3141
type = "internal_assets"
3242

33-
[unsafe.metadata.build_options]
34-
stable_id = "cloudflare/cf_asset_worker"
35-
networks = ["cf","jdc"]
36-
37-
[version_metadata]
38-
binding = "VERSION_METADATA"
39-
4043
[[unsafe.bindings]]
4144
name = "workers-asset-worker"
42-
type = "internal_capability_grants"
45+
type = "internal_capability_grants"

0 commit comments

Comments
 (0)