From 10d19d8db3be7593a8867f28f9f5a743bbfaae42 Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Wed, 29 Jul 2026 15:02:07 +0200 Subject: [PATCH] feat(op): Add object storage span operations Register the finite object storage operations emitted by sentry-javascript (e.g. Cloudflare R2 and S3-compatible stores): object.get, object.head, object.put, object.delete, object.list, object.upload_part, and the object.multipart_upload.abort/create/complete operations. Generated artifacts (op.ts, op.rs) regenerated via `yarn generate`. Co-Authored-By: Claude Opus 4.8 --- javascript/sentry-conventions/src/op.ts | 50 +++++++++++++++++++++++++ model/op/object.json | 42 +++++++++++++++++++++ rust/src/op.rs | 31 +++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 model/op/object.json diff --git a/javascript/sentry-conventions/src/op.ts b/javascript/sentry-conventions/src/op.ts index 1d5ec239..305b078a 100644 --- a/javascript/sentry-conventions/src/op.ts +++ b/javascript/sentry-conventions/src/op.ts @@ -235,6 +235,56 @@ export const MOBILE_SERIALIZE_SPAN_OP = 'serialize'; export const MOBILE_HTTP_SPAN_OP = 'http'; +// Path: model/op/object.json +// Name: object + +// Description: Object storage related spans represent operations on object storage systems such as Cloudflare R2, Amazon S3, and compatible services. + +/** + * Retrieving an object from an object store. + */ +export const OBJECT_OBJECT_GET_SPAN_OP = 'object.get'; + +/** + * Retrieving the metadata of an object from an object store. + */ +export const OBJECT_OBJECT_HEAD_SPAN_OP = 'object.head'; + +/** + * Storing an object in an object store. + */ +export const OBJECT_OBJECT_PUT_SPAN_OP = 'object.put'; + +/** + * Deleting an object from an object store. + */ +export const OBJECT_OBJECT_DELETE_SPAN_OP = 'object.delete'; + +/** + * Listing objects in an object store. + */ +export const OBJECT_OBJECT_LIST_SPAN_OP = 'object.list'; + +/** + * Uploading a single part of a multipart upload to an object store. + */ +export const OBJECT_OBJECT_UPLOAD_PART_SPAN_OP = 'object.upload_part'; + +/** + * Aborting a multipart upload to an object store. + */ +export const OBJECT_OBJECT_MULTIPART_UPLOAD_ABORT_SPAN_OP = 'object.multipart_upload.abort'; + +/** + * Creating a multipart upload to an object store. + */ +export const OBJECT_OBJECT_MULTIPART_UPLOAD_CREATE_SPAN_OP = 'object.multipart_upload.create'; + +/** + * Completing a multipart upload to an object store. + */ +export const OBJECT_OBJECT_MULTIPART_UPLOAD_COMPLETE_SPAN_OP = 'object.multipart_upload.complete'; + // Path: model/op/web_server.json // Name: web_server diff --git a/model/op/object.json b/model/op/object.json new file mode 100644 index 00000000..c7b57966 --- /dev/null +++ b/model/op/object.json @@ -0,0 +1,42 @@ +{ + "name": "object", + "description": "Object storage related spans represent operations on object storage systems such as Cloudflare R2, Amazon S3, and compatible services.", + "fields": [ + { + "name": "object.get", + "description": "Retrieving an object from an object store." + }, + { + "name": "object.head", + "description": "Retrieving the metadata of an object from an object store." + }, + { + "name": "object.put", + "description": "Storing an object in an object store." + }, + { + "name": "object.delete", + "description": "Deleting an object from an object store." + }, + { + "name": "object.list", + "description": "Listing objects in an object store." + }, + { + "name": "object.upload_part", + "description": "Uploading a single part of a multipart upload to an object store." + }, + { + "name": "object.multipart_upload.abort", + "description": "Aborting a multipart upload to an object store." + }, + { + "name": "object.multipart_upload.create", + "description": "Creating a multipart upload to an object store." + }, + { + "name": "object.multipart_upload.complete", + "description": "Completing a multipart upload to an object store." + } + ] +} diff --git a/rust/src/op.rs b/rust/src/op.rs index 908d0f1f..a79431cd 100644 --- a/rust/src/op.rs +++ b/rust/src/op.rs @@ -179,6 +179,37 @@ pub const MOBILE_SERIALIZE_SPAN_OP: &str = "serialize"; pub const MOBILE_HTTP_SPAN_OP: &str = "http"; +// Path: model/op/object.json +// Name: object + +// Description: Object storage related spans represent operations on object storage systems such as Cloudflare R2, Amazon S3, and compatible services. +/// Retrieving an object from an object store. +pub const OBJECT_OBJECT_GET_SPAN_OP: &str = "object.get"; + +/// Retrieving the metadata of an object from an object store. +pub const OBJECT_OBJECT_HEAD_SPAN_OP: &str = "object.head"; + +/// Storing an object in an object store. +pub const OBJECT_OBJECT_PUT_SPAN_OP: &str = "object.put"; + +/// Deleting an object from an object store. +pub const OBJECT_OBJECT_DELETE_SPAN_OP: &str = "object.delete"; + +/// Listing objects in an object store. +pub const OBJECT_OBJECT_LIST_SPAN_OP: &str = "object.list"; + +/// Uploading a single part of a multipart upload to an object store. +pub const OBJECT_OBJECT_UPLOAD_PART_SPAN_OP: &str = "object.upload_part"; + +/// Aborting a multipart upload to an object store. +pub const OBJECT_OBJECT_MULTIPART_UPLOAD_ABORT_SPAN_OP: &str = "object.multipart_upload.abort"; + +/// Creating a multipart upload to an object store. +pub const OBJECT_OBJECT_MULTIPART_UPLOAD_CREATE_SPAN_OP: &str = "object.multipart_upload.create"; + +/// Completing a multipart upload to an object store. +pub const OBJECT_OBJECT_MULTIPART_UPLOAD_COMPLETE_SPAN_OP: &str = "object.multipart_upload.complete"; + // Path: model/op/web_server.json // Name: web_server