Skip to content

Commit c6f43af

Browse files
authored
ref(cloudflare): Use conventions constants for R2 span ops and attrs (#23677)
Just using the conventions package. Nothing else
1 parent a9cc606 commit c6f43af

1 file changed

Lines changed: 40 additions & 19 deletions

File tree

packages/cloudflare/src/instrumentations/worker/instrumentR2.ts

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,48 @@
11
import type { R2Bucket, R2ListOptions, R2MultipartUpload } from '@cloudflare/workers-types';
2-
import { isObjectLike, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, startSpan } from '@sentry/core';
2+
import {
3+
CLOUDFLARE_R2_BUCKET,
4+
CLOUDFLARE_R2_OPERATION,
5+
CLOUDFLARE_R2_REQUEST_DELIMITER,
6+
CLOUDFLARE_R2_REQUEST_KEY,
7+
CLOUDFLARE_R2_REQUEST_PART_NUMBER,
8+
CLOUDFLARE_R2_REQUEST_PREFIX,
9+
SENTRY_OP,
10+
} from '@sentry/conventions/attributes';
11+
import {
12+
OBJECT_DELETE,
13+
OBJECT_GET,
14+
OBJECT_HEAD,
15+
OBJECT_LIST,
16+
OBJECT_MULTIPART_UPLOAD_ABORT,
17+
OBJECT_MULTIPART_UPLOAD_COMPLETE,
18+
OBJECT_MULTIPART_UPLOAD_CREATE,
19+
OBJECT_PUT,
20+
OBJECT_UPLOAD_PART,
21+
} from '@sentry/conventions/op';
22+
import { isObjectLike, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, startSpan } from '@sentry/core';
323

424
const ORIGIN = 'auto.faas.cloudflare.r2';
525

626
const R2_OPERATIONS = {
7-
get: { spanName: 'r2_get', op: 'object.get', operation: 'GetObject' },
8-
head: { spanName: 'r2_head', op: 'object.head', operation: 'HeadObject' },
9-
put: { spanName: 'r2_put', op: 'object.put', operation: 'PutObject' },
10-
delete: { spanName: 'r2_delete', op: 'object.delete', operation: 'DeleteObject' },
11-
list: { spanName: 'r2_list', op: 'object.list', operation: 'ListObjects' },
12-
uploadPart: { spanName: 'r2_uploadPart', op: 'object.upload_part', operation: 'UploadPart' },
27+
get: { spanName: 'r2_get', op: OBJECT_GET, operation: 'GetObject' },
28+
head: { spanName: 'r2_head', op: OBJECT_HEAD, operation: 'HeadObject' },
29+
put: { spanName: 'r2_put', op: OBJECT_PUT, operation: 'PutObject' },
30+
delete: { spanName: 'r2_delete', op: OBJECT_DELETE, operation: 'DeleteObject' },
31+
list: { spanName: 'r2_list', op: OBJECT_LIST, operation: 'ListObjects' },
32+
uploadPart: { spanName: 'r2_uploadPart', op: OBJECT_UPLOAD_PART, operation: 'UploadPart' },
1333
abortMultipartUpload: {
1434
spanName: 'r2_abortMultipartUpload',
15-
op: 'object.multipart_upload.abort',
35+
op: OBJECT_MULTIPART_UPLOAD_ABORT,
1636
operation: 'AbortMultipartUpload',
1737
},
1838
createMultipartUpload: {
1939
spanName: 'r2_createMultipartUpload',
20-
op: 'object.multipart_upload.create',
40+
op: OBJECT_MULTIPART_UPLOAD_CREATE,
2141
operation: 'CreateMultipartUpload',
2242
},
2343
completeMultipartUpload: {
2444
spanName: 'r2_completeMultipartUpload',
25-
op: 'object.multipart_upload.complete',
45+
op: OBJECT_MULTIPART_UPLOAD_COMPLETE,
2646
operation: 'CompleteMultipartUpload',
2747
},
2848
} as const;
@@ -41,12 +61,12 @@ function createSpanOptions(bindingName: string, r2Op: R2OperationKey, key?: stri
4161
op,
4262
name: spanName,
4363
attributes: {
44-
'cloudflare.r2.operation': operation,
45-
'cloudflare.r2.bucket': bindingName,
46-
...(requestKey !== undefined && { 'cloudflare.r2.request.key': requestKey }),
47-
...(isR2ListOptions(key) && key.prefix !== undefined && { 'cloudflare.r2.request.prefix': key.prefix }),
48-
...(isR2ListOptions(key) && key.delimiter !== undefined && { 'cloudflare.r2.request.delimiter': key.delimiter }),
49-
[SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,
64+
[CLOUDFLARE_R2_OPERATION]: operation,
65+
[CLOUDFLARE_R2_BUCKET]: bindingName,
66+
...(requestKey !== undefined && { [CLOUDFLARE_R2_REQUEST_KEY]: requestKey }),
67+
...(isR2ListOptions(key) && key.prefix !== undefined && { [CLOUDFLARE_R2_REQUEST_PREFIX]: key.prefix }),
68+
...(isR2ListOptions(key) && key.delimiter !== undefined && { [CLOUDFLARE_R2_REQUEST_DELIMITER]: key.delimiter }),
69+
[SENTRY_OP]: op,
5070
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
5171
},
5272
};
@@ -62,13 +82,14 @@ function instrumentR2MultipartUpload(upload: R2MultipartUpload, bindingName: str
6282

6383
return function (this: unknown, ...args: Parameters<R2MultipartUpload['uploadPart']>) {
6484
const [partNumber] = args;
85+
const spanOptions = createSpanOptions(bindingName, 'uploadPart', key);
6586

6687
return startSpan(
6788
{
68-
...createSpanOptions(bindingName, 'uploadPart', key),
89+
...spanOptions,
6990
attributes: {
70-
...createSpanOptions(bindingName, 'uploadPart', key).attributes,
71-
'cloudflare.r2.request.part_number': partNumber,
91+
...spanOptions.attributes,
92+
[CLOUDFLARE_R2_REQUEST_PART_NUMBER]: partNumber,
7293
},
7394
},
7495
() => Reflect.apply(original, target, args),

0 commit comments

Comments
 (0)