diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 4cebd7796..2faa48d6b 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -12336,6 +12336,538 @@ export const MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count'; */ export type MESSAGING_BATCH_MESSAGE_COUNT_TYPE = number; +// Path: model/attributes/messaging/messaging__bullmq__flow__name.json + +/** + * The name of the root job of the BullMQ flow that FlowProducer.add() adds. `messaging.bullmq.flow.name` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_FLOW_NAME_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "build-report" + */ +export const MESSAGING_BULLMQ_FLOW_NAME = 'messaging.bullmq.flow.name'; + +/** + * Type for {@link MESSAGING_BULLMQ_FLOW_NAME} messaging.bullmq.flow.name + */ +export type MESSAGING_BULLMQ_FLOW_NAME_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__job__attempt_finished_timestamp.json + +/** + * The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished. `messaging.bullmq.job.attempt_finished_timestamp` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 1791184722406 + */ +export const MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP = 'messaging.bullmq.job.attempt_finished_timestamp'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP} messaging.bullmq.job.attempt_finished_timestamp + */ +export type MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__job__bulk__names.json + +/** + * The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk(). `messaging.bullmq.job.bulk.names` + * + * Attribute Value Type: `Array` {@link MESSAGING_BULLMQ_JOB_BULK_NAMES_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["send-welcome-email","generate-report"] + */ +export const MESSAGING_BULLMQ_JOB_BULK_NAMES = 'messaging.bullmq.job.bulk.names'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_BULK_NAMES} messaging.bullmq.job.bulk.names + */ +export type MESSAGING_BULLMQ_JOB_BULK_NAMES_TYPE = Array; + +// Path: model/attributes/messaging/messaging__bullmq__job__deduplication__key.json + +/** + * The deduplication ID that Queue.removeDeduplicationKey() removes. `messaging.bullmq.job.deduplication.key` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "user-42-sync" + */ +export const MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY = 'messaging.bullmq.job.deduplication.key'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY} messaging.bullmq.job.deduplication.key + */ +export type MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__job__ids.json + +/** + * The IDs of the BullMQ jobs that Queue.clean() removed. `messaging.bullmq.job.ids` + * + * Attribute Value Type: `Array` {@link MESSAGING_BULLMQ_JOB_IDS_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["1","2","3"] + */ +export const MESSAGING_BULLMQ_JOB_IDS = 'messaging.bullmq.job.ids'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_IDS} messaging.bullmq.job.ids + */ +export type MESSAGING_BULLMQ_JOB_IDS_TYPE = Array; + +// Path: model/attributes/messaging/messaging__bullmq__job__key.json + +/** + * The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey(). `messaging.bullmq.job.key` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_JOB_KEY_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "user-42-sync" + */ +export const MESSAGING_BULLMQ_JOB_KEY = 'messaging.bullmq.job.key'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_KEY} messaging.bullmq.job.key + */ +export type MESSAGING_BULLMQ_JOB_KEY_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__job__name.json + +/** + * The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work. `messaging.bullmq.job.name` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_JOB_NAME_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "send-welcome-email" + * @example "generate-report" + */ +export const MESSAGING_BULLMQ_JOB_NAME = 'messaging.bullmq.job.name'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_NAME} messaging.bullmq.job.name + */ +export type MESSAGING_BULLMQ_JOB_NAME_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__job__processed_timestamp.json + +/** + * The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job. `messaging.bullmq.job.processed_timestamp` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 1791184722281 + */ +export const MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP = 'messaging.bullmq.job.processed_timestamp'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP} messaging.bullmq.job.processed_timestamp + */ +export type MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__job__scheduler__id.json + +/** + * The ID of the BullMQ job scheduler that adds the job. `messaging.bullmq.job.scheduler.id` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_JOB_SCHEDULER_ID_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "daily-report" + */ +export const MESSAGING_BULLMQ_JOB_SCHEDULER_ID = 'messaging.bullmq.job.scheduler.id'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_SCHEDULER_ID} messaging.bullmq.job.scheduler.id + */ +export type MESSAGING_BULLMQ_JOB_SCHEDULER_ID_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__job__state.json + +/** + * The state of the BullMQ job that a job metric counts. `messaging.bullmq.job.state` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_JOB_STATE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "completed" + * @example "failed" + * @example "delayed" + */ +export const MESSAGING_BULLMQ_JOB_STATE = 'messaging.bullmq.job.state'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_STATE} messaging.bullmq.job.state + */ +export type MESSAGING_BULLMQ_JOB_STATE_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__job__type.json + +/** + * The job state from which Queue.clean() removes BullMQ jobs. `messaging.bullmq.job.type` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_JOB_TYPE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "completed" + * @example "failed" + */ +export const MESSAGING_BULLMQ_JOB_TYPE = 'messaging.bullmq.job.type'; + +/** + * Type for {@link MESSAGING_BULLMQ_JOB_TYPE} messaging.bullmq.job.type + */ +export type MESSAGING_BULLMQ_JOB_TYPE_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__queue__clean__count.json + +/** + * The number of BullMQ jobs that Queue.clean() removed. `messaging.bullmq.queue.clean.count` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 25 + */ +export const MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT = 'messaging.bullmq.queue.clean.count'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT} messaging.bullmq.queue.clean.count + */ +export type MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__queue__clean__limit.json + +/** + * The maximum number of BullMQ jobs that Queue.clean() removes. `messaging.bullmq.queue.clean.limit` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 1000 + */ +export const MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT = 'messaging.bullmq.queue.clean.limit'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT} messaging.bullmq.queue.clean.limit + */ +export type MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__queue__drain__delay.json + +/** + * Whether Queue.drain() also removes the delayed BullMQ jobs. `messaging.bullmq.queue.drain.delay` + * + * Attribute Value Type: `boolean` {@link MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example true + */ +export const MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY = 'messaging.bullmq.queue.drain.delay'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY} messaging.bullmq.queue.drain.delay + */ +export type MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY_TYPE = boolean; + +// Path: model/attributes/messaging/messaging__bullmq__queue__event__max_length.json + +/** + * The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream. `messaging.bullmq.queue.event.max_length` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 10000 + */ +export const MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH = 'messaging.bullmq.queue.event.max_length'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH} messaging.bullmq.queue.event.max_length + */ +export type MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__queue__grace.json + +/** + * The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed. `messaging.bullmq.queue.grace` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_QUEUE_GRACE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 60000 + */ +export const MESSAGING_BULLMQ_QUEUE_GRACE = 'messaging.bullmq.queue.grace'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_GRACE} messaging.bullmq.queue.grace + */ +export type MESSAGING_BULLMQ_QUEUE_GRACE_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__queue__jobs__state.json + +/** + * The BullMQ job state that the queue job count metric counts. `messaging.bullmq.queue.jobs.state` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_QUEUE_JOBS_STATE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "waiting" + * @example "active" + * @example "completed" + */ +export const MESSAGING_BULLMQ_QUEUE_JOBS_STATE = 'messaging.bullmq.queue.jobs.state'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_JOBS_STATE} messaging.bullmq.queue.jobs.state + */ +export type MESSAGING_BULLMQ_QUEUE_JOBS_STATE_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__queue__rate_limit.json + +/** + * The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue. `messaging.bullmq.queue.rate_limit` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_QUEUE_RATE_LIMIT_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 5000 + */ +export const MESSAGING_BULLMQ_QUEUE_RATE_LIMIT = 'messaging.bullmq.queue.rate_limit'; + +/** + * Type for {@link MESSAGING_BULLMQ_QUEUE_RATE_LIMIT} messaging.bullmq.queue.rate_limit + */ +export type MESSAGING_BULLMQ_QUEUE_RATE_LIMIT_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__worker__do_not_wait_active.json + +/** + * Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish. `messaging.bullmq.worker.do_not_wait_active` + * + * Attribute Value Type: `boolean` {@link MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example false + */ +export const MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE = 'messaging.bullmq.worker.do_not_wait_active'; + +/** + * Type for {@link MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE} messaging.bullmq.worker.do_not_wait_active + */ +export type MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE_TYPE = boolean; + +// Path: model/attributes/messaging/messaging__bullmq__worker__force_close.json + +/** + * Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish. `messaging.bullmq.worker.force_close` + * + * Attribute Value Type: `boolean` {@link MESSAGING_BULLMQ_WORKER_FORCE_CLOSE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example false + */ +export const MESSAGING_BULLMQ_WORKER_FORCE_CLOSE = 'messaging.bullmq.worker.force_close'; + +/** + * Type for {@link MESSAGING_BULLMQ_WORKER_FORCE_CLOSE} messaging.bullmq.worker.force_close + */ +export type MESSAGING_BULLMQ_WORKER_FORCE_CLOSE_TYPE = boolean; + +// Path: model/attributes/messaging/messaging__bullmq__worker__jobs_to_extend_locks.json + +/** + * The IDs of the BullMQ jobs whose locks the Worker extends. `messaging.bullmq.worker.jobs_to_extend_locks` + * + * Attribute Value Type: `Array` {@link MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["1","2"] + */ +export const MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS = 'messaging.bullmq.worker.jobs_to_extend_locks'; + +/** + * Type for {@link MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS} messaging.bullmq.worker.jobs_to_extend_locks + */ +export type MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS_TYPE = Array; + +// Path: model/attributes/messaging/messaging__bullmq__worker__name.json + +/** + * The name that the user gives to the BullMQ Worker in its options. `messaging.bullmq.worker.name` + * + * Attribute Value Type: `string` {@link MESSAGING_BULLMQ_WORKER_NAME_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "email-worker" + */ +export const MESSAGING_BULLMQ_WORKER_NAME = 'messaging.bullmq.worker.name'; + +/** + * Type for {@link MESSAGING_BULLMQ_WORKER_NAME} messaging.bullmq.worker.name + */ +export type MESSAGING_BULLMQ_WORKER_NAME_TYPE = string; + +// Path: model/attributes/messaging/messaging__bullmq__worker__rate_limit.json + +/** + * The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker. `messaging.bullmq.worker.rate_limit` + * + * Attribute Value Type: `number` {@link MESSAGING_BULLMQ_WORKER_RATE_LIMIT_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 5000 + */ +export const MESSAGING_BULLMQ_WORKER_RATE_LIMIT = 'messaging.bullmq.worker.rate_limit'; + +/** + * Type for {@link MESSAGING_BULLMQ_WORKER_RATE_LIMIT} messaging.bullmq.worker.rate_limit + */ +export type MESSAGING_BULLMQ_WORKER_RATE_LIMIT_TYPE = number; + +// Path: model/attributes/messaging/messaging__bullmq__worker__stalled_jobs.json + +/** + * The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state. `messaging.bullmq.worker.stalled_jobs` + * + * Attribute Value Type: `Array` {@link MESSAGING_BULLMQ_WORKER_STALLED_JOBS_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["1","2"] + */ +export const MESSAGING_BULLMQ_WORKER_STALLED_JOBS = 'messaging.bullmq.worker.stalled_jobs'; + +/** + * Type for {@link MESSAGING_BULLMQ_WORKER_STALLED_JOBS} messaging.bullmq.worker.stalled_jobs + */ +export type MESSAGING_BULLMQ_WORKER_STALLED_JOBS_TYPE = Array; + +// Path: model/attributes/messaging/messaging__client__id.json + +/** + * A unique identifier for the client that consumes or produces a message. `messaging.client.id` + * + * Attribute Value Type: `string` {@link MESSAGING_CLIENT_ID_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: Yes + * Visibility: public + * + * @example "client-5" + * @example "myhost@8742@s8083jm" + */ +export const MESSAGING_CLIENT_ID = 'messaging.client.id'; + +/** + * Type for {@link MESSAGING_CLIENT_ID} messaging.client.id + */ +export type MESSAGING_CLIENT_ID_TYPE = string; + // Path: model/attributes/messaging/messaging__conversation_id.json /** @@ -20508,6 +21040,31 @@ export const ATTRIBUTE_TYPE: Record = { 'mcp.transport': 'string', 'mdc.': 'string', 'messaging.batch.message_count': 'integer', + 'messaging.bullmq.flow.name': 'string', + 'messaging.bullmq.job.attempt_finished_timestamp': 'integer', + 'messaging.bullmq.job.bulk.names': 'string[]', + 'messaging.bullmq.job.deduplication.key': 'string', + 'messaging.bullmq.job.ids': 'string[]', + 'messaging.bullmq.job.key': 'string', + 'messaging.bullmq.job.name': 'string', + 'messaging.bullmq.job.processed_timestamp': 'integer', + 'messaging.bullmq.job.scheduler.id': 'string', + 'messaging.bullmq.job.state': 'string', + 'messaging.bullmq.job.type': 'string', + 'messaging.bullmq.queue.clean.count': 'integer', + 'messaging.bullmq.queue.clean.limit': 'integer', + 'messaging.bullmq.queue.drain.delay': 'boolean', + 'messaging.bullmq.queue.event.max_length': 'integer', + 'messaging.bullmq.queue.grace': 'integer', + 'messaging.bullmq.queue.jobs.state': 'string', + 'messaging.bullmq.queue.rate_limit': 'integer', + 'messaging.bullmq.worker.do_not_wait_active': 'boolean', + 'messaging.bullmq.worker.force_close': 'boolean', + 'messaging.bullmq.worker.jobs_to_extend_locks': 'string[]', + 'messaging.bullmq.worker.name': 'string', + 'messaging.bullmq.worker.rate_limit': 'integer', + 'messaging.bullmq.worker.stalled_jobs': 'string[]', + 'messaging.client.id': 'string', 'messaging.conversation_id': 'string', 'messaging.destination': 'string', 'messaging.destination.connection': 'string', @@ -21395,6 +21952,31 @@ export type AttributeName = | typeof MCP_TRANSPORT | typeof MDC_KEY | typeof MESSAGING_BATCH_MESSAGE_COUNT + | typeof MESSAGING_BULLMQ_FLOW_NAME + | typeof MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP + | typeof MESSAGING_BULLMQ_JOB_BULK_NAMES + | typeof MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY + | typeof MESSAGING_BULLMQ_JOB_IDS + | typeof MESSAGING_BULLMQ_JOB_KEY + | typeof MESSAGING_BULLMQ_JOB_NAME + | typeof MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP + | typeof MESSAGING_BULLMQ_JOB_SCHEDULER_ID + | typeof MESSAGING_BULLMQ_JOB_STATE + | typeof MESSAGING_BULLMQ_JOB_TYPE + | typeof MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT + | typeof MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT + | typeof MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY + | typeof MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH + | typeof MESSAGING_BULLMQ_QUEUE_GRACE + | typeof MESSAGING_BULLMQ_QUEUE_JOBS_STATE + | typeof MESSAGING_BULLMQ_QUEUE_RATE_LIMIT + | typeof MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE + | typeof MESSAGING_BULLMQ_WORKER_FORCE_CLOSE + | typeof MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS + | typeof MESSAGING_BULLMQ_WORKER_NAME + | typeof MESSAGING_BULLMQ_WORKER_RATE_LIMIT + | typeof MESSAGING_BULLMQ_WORKER_STALLED_JOBS + | typeof MESSAGING_CLIENT_ID | typeof MESSAGING_CONVERSATION_ID | typeof MESSAGING_DESTINATION | typeof MESSAGING_DESTINATION_CONNECTION @@ -30724,6 +31306,421 @@ export const ATTRIBUTE_METADATA: Record = { example: 10, changelog: [{ version: '0.6.0', prs: [341], description: 'Added messaging.batch.message_count attribute' }], }, + 'messaging.bullmq.flow.name': { + brief: 'The name of the root job of the BullMQ flow that FlowProducer.add() adds.', + type: 'string', + keys: ['messaging.bullmq.flow.name'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'build-report', + examples: ['build-report'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.flow.name attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.flow.name` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.attempt_finished_timestamp': { + brief: 'The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished.', + type: 'integer', + keys: ['messaging.bullmq.job.attempt_finished_timestamp'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 1791184722406, + examples: [1791184722406], + changelog: [ + { version: 'next', prs: [690], description: 'Added messaging.bullmq.job.attempt_finished_timestamp attribute' }, + ], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.attempt_finished_timestamp` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.bulk.names': { + brief: 'The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk().', + type: 'string[]', + keys: ['messaging.bullmq.job.bulk.names'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: ['send-welcome-email', 'generate-report'], + examples: [['send-welcome-email', 'generate-report']], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.bulk.names attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.bulk.names` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.deduplication.key': { + brief: 'The deduplication ID that Queue.removeDeduplicationKey() removes.', + type: 'string', + keys: ['messaging.bullmq.job.deduplication.key'], + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: 'user-42-sync', + examples: ['user-42-sync'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.deduplication.key attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.deduplication.key` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.ids': { + brief: 'The IDs of the BullMQ jobs that Queue.clean() removed.', + type: 'string[]', + keys: ['messaging.bullmq.job.ids'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: ['1', '2', '3'], + examples: [['1', '2', '3']], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.ids attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.ids` attribute of BullMQ's telemetry interface.", + 'BullMQ 5.79.1 sets this attribute. BullMQ 6.3.11 does not.', + ], + }, + 'messaging.bullmq.job.key': { + brief: + 'The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey().', + type: 'string', + keys: ['messaging.bullmq.job.key'], + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: 'user-42-sync', + examples: ['user-42-sync'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.key attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.key` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.name': { + brief: 'The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work.', + type: 'string', + keys: ['messaging.bullmq.job.name'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'send-welcome-email', + examples: ['send-welcome-email', 'generate-report'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.name attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.name` attribute of BullMQ's telemetry interface.", + 'Also set on the BullMQ job metrics.', + ], + }, + 'messaging.bullmq.job.processed_timestamp': { + brief: 'The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job.', + type: 'integer', + keys: ['messaging.bullmq.job.processed_timestamp'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 1791184722281, + examples: [1791184722281], + changelog: [ + { version: 'next', prs: [690], description: 'Added messaging.bullmq.job.processed_timestamp attribute' }, + ], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.processed.timestamp` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.scheduler.id': { + brief: 'The ID of the BullMQ job scheduler that adds the job.', + type: 'string', + keys: ['messaging.bullmq.job.scheduler.id'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'daily-report', + examples: ['daily-report'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.scheduler.id attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.scheduler.id` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.job.state': { + brief: 'The state of the BullMQ job that a job metric counts.', + type: 'string', + keys: ['messaging.bullmq.job.state'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'completed', + examples: ['completed', 'failed', 'delayed'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.state attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.state` attribute of BullMQ's telemetry interface. BullMQ before 5.81.2 sets `bullmq.job.status` instead, and the SDK then uses that value.", + ], + }, + 'messaging.bullmq.job.type': { + brief: 'The job state from which Queue.clean() removes BullMQ jobs.', + type: 'string', + keys: ['messaging.bullmq.job.type'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'completed', + examples: ['completed', 'failed'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.job.type attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.job.type` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.queue.clean.count': { + brief: 'The number of BullMQ jobs that Queue.clean() removed.', + type: 'integer', + keys: ['messaging.bullmq.queue.clean.count'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 25, + examples: [25], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.clean.count attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.clean.count` attribute of BullMQ's telemetry interface.", + 'BullMQ 6.3.11 sets this attribute. BullMQ 5.79.1 does not.', + ], + }, + 'messaging.bullmq.queue.clean.limit': { + brief: 'The maximum number of BullMQ jobs that Queue.clean() removes.', + type: 'integer', + keys: ['messaging.bullmq.queue.clean.limit'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 1000, + examples: [1000], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.clean.limit attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.clean.limit` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.queue.drain.delay': { + brief: 'Whether Queue.drain() also removes the delayed BullMQ jobs.', + type: 'boolean', + keys: ['messaging.bullmq.queue.drain.delay'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: true, + examples: [true], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.drain.delay attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.drain.delay` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.queue.event.max_length': { + brief: 'The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream.', + type: 'integer', + keys: ['messaging.bullmq.queue.event.max_length'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 10000, + examples: [10000], + changelog: [ + { version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.event.max_length attribute' }, + ], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.event.max.length` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.queue.grace': { + brief: 'The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed.', + type: 'integer', + keys: ['messaging.bullmq.queue.grace'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 60000, + examples: [60000], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.grace attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.grace` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.queue.jobs.state': { + brief: 'The BullMQ job state that the queue job count metric counts.', + type: 'string', + keys: ['messaging.bullmq.queue.jobs.state'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'waiting', + examples: ['waiting', 'active', 'completed'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.jobs.state attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.jobs.state` attribute of BullMQ's telemetry interface.", + 'Set on the BullMQ queue job count metric.', + ], + }, + 'messaging.bullmq.queue.rate_limit': { + brief: 'The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue.', + type: 'integer', + keys: ['messaging.bullmq.queue.rate_limit'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 5000, + examples: [5000], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.queue.rate_limit attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.queue.rate.limit` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.worker.do_not_wait_active': { + brief: 'Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish.', + type: 'boolean', + keys: ['messaging.bullmq.worker.do_not_wait_active'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: false, + examples: [false], + changelog: [ + { version: 'next', prs: [690], description: 'Added messaging.bullmq.worker.do_not_wait_active attribute' }, + ], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.worker.do.not.wait.active` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.worker.force_close': { + brief: 'Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish.', + type: 'boolean', + keys: ['messaging.bullmq.worker.force_close'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: false, + examples: [false], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.worker.force_close attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.worker.force.close` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.worker.jobs_to_extend_locks': { + brief: 'The IDs of the BullMQ jobs whose locks the Worker extends.', + type: 'string[]', + keys: ['messaging.bullmq.worker.jobs_to_extend_locks'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: ['1', '2'], + examples: [['1', '2']], + changelog: [ + { version: 'next', prs: [690], description: 'Added messaging.bullmq.worker.jobs_to_extend_locks attribute' }, + ], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.worker.jobs.to.extend.locks` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.worker.name': { + brief: 'The name that the user gives to the BullMQ Worker in its options.', + type: 'string', + keys: ['messaging.bullmq.worker.name'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'email-worker', + examples: ['email-worker'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.worker.name attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.worker.name` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.worker.rate_limit': { + brief: 'The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker.', + type: 'integer', + keys: ['messaging.bullmq.worker.rate_limit'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 5000, + examples: [5000], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.worker.rate_limit attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.worker.rate.limit` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.bullmq.worker.stalled_jobs': { + brief: 'The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state.', + type: 'string[]', + keys: ['messaging.bullmq.worker.stalled_jobs'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: ['1', '2'], + examples: [['1', '2']], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.bullmq.worker.stalled_jobs attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute from the `bullmq.worker.stalled.jobs` attribute of BullMQ's telemetry interface.", + ], + }, + 'messaging.client.id': { + brief: 'A unique identifier for the client that consumes or produces a message.', + type: 'string', + keys: ['messaging.client.id'], + applyScrubbing: { + key: 'manual', + }, + isInOtel: true, + visibility: 'public', + example: 'client-5', + examples: ['client-5', 'myhost@8742@s8083jm'], + changelog: [{ version: 'next', prs: [690], description: 'Added messaging.client.id attribute' }], + additionalContext: [ + "The Sentry SDK sets this attribute on BullMQ spans from the `bullmq.worker.id` attribute of BullMQ's telemetry interface, which is the ID of the Worker.", + ], + }, 'messaging.conversation_id': { brief: 'The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".', @@ -36670,6 +37667,31 @@ export type Attributes = { [MCP_TRANSPORT]?: MCP_TRANSPORT_TYPE; [MDC_KEY]?: MDC_KEY_TYPE; [MESSAGING_BATCH_MESSAGE_COUNT]?: MESSAGING_BATCH_MESSAGE_COUNT_TYPE; + [MESSAGING_BULLMQ_FLOW_NAME]?: MESSAGING_BULLMQ_FLOW_NAME_TYPE; + [MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP]?: MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP_TYPE; + [MESSAGING_BULLMQ_JOB_BULK_NAMES]?: MESSAGING_BULLMQ_JOB_BULK_NAMES_TYPE; + [MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY]?: MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY_TYPE; + [MESSAGING_BULLMQ_JOB_IDS]?: MESSAGING_BULLMQ_JOB_IDS_TYPE; + [MESSAGING_BULLMQ_JOB_KEY]?: MESSAGING_BULLMQ_JOB_KEY_TYPE; + [MESSAGING_BULLMQ_JOB_NAME]?: MESSAGING_BULLMQ_JOB_NAME_TYPE; + [MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP]?: MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP_TYPE; + [MESSAGING_BULLMQ_JOB_SCHEDULER_ID]?: MESSAGING_BULLMQ_JOB_SCHEDULER_ID_TYPE; + [MESSAGING_BULLMQ_JOB_STATE]?: MESSAGING_BULLMQ_JOB_STATE_TYPE; + [MESSAGING_BULLMQ_JOB_TYPE]?: MESSAGING_BULLMQ_JOB_TYPE_TYPE; + [MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT]?: MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT_TYPE; + [MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT]?: MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT_TYPE; + [MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY]?: MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY_TYPE; + [MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH]?: MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH_TYPE; + [MESSAGING_BULLMQ_QUEUE_GRACE]?: MESSAGING_BULLMQ_QUEUE_GRACE_TYPE; + [MESSAGING_BULLMQ_QUEUE_JOBS_STATE]?: MESSAGING_BULLMQ_QUEUE_JOBS_STATE_TYPE; + [MESSAGING_BULLMQ_QUEUE_RATE_LIMIT]?: MESSAGING_BULLMQ_QUEUE_RATE_LIMIT_TYPE; + [MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE]?: MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE_TYPE; + [MESSAGING_BULLMQ_WORKER_FORCE_CLOSE]?: MESSAGING_BULLMQ_WORKER_FORCE_CLOSE_TYPE; + [MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS]?: MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS_TYPE; + [MESSAGING_BULLMQ_WORKER_NAME]?: MESSAGING_BULLMQ_WORKER_NAME_TYPE; + [MESSAGING_BULLMQ_WORKER_RATE_LIMIT]?: MESSAGING_BULLMQ_WORKER_RATE_LIMIT_TYPE; + [MESSAGING_BULLMQ_WORKER_STALLED_JOBS]?: MESSAGING_BULLMQ_WORKER_STALLED_JOBS_TYPE; + [MESSAGING_CLIENT_ID]?: MESSAGING_CLIENT_ID_TYPE; [MESSAGING_CONVERSATION_ID]?: MESSAGING_CONVERSATION_ID_TYPE; [MESSAGING_DESTINATION]?: MESSAGING_DESTINATION_TYPE; [MESSAGING_DESTINATION_CONNECTION]?: MESSAGING_DESTINATION_CONNECTION_TYPE; diff --git a/javascript/sentry-conventions/src/search.ts b/javascript/sentry-conventions/src/search.ts index b3dff46d8..4168a7f88 100644 --- a/javascript/sentry-conventions/src/search.ts +++ b/javascript/sentry-conventions/src/search.ts @@ -3121,6 +3121,132 @@ export const SEARCH_MDC__KEY = 'mdc.'; */ export const SEARCH_MESSAGING__BATCH__MESSAGE_COUNT = 'messaging.batch.message_count'; +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_FLOW_NAME}. `messaging.bullmq.flow.name` + */ +export const SEARCH_MESSAGING__BULLMQ__FLOW__NAME = 'messaging.bullmq.flow.name'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP}. `messaging.bullmq.job.attempt_finished_timestamp` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__ATTEMPT_FINISHED_TIMESTAMP = + 'messaging.bullmq.job.attempt_finished_timestamp'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_BULK_NAMES}. `messaging.bullmq.job.bulk.names` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__BULK__NAMES = 'messaging.bullmq.job.bulk.names'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY}. `messaging.bullmq.job.deduplication.key` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__DEDUPLICATION__KEY = 'messaging.bullmq.job.deduplication.key'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_IDS}. `messaging.bullmq.job.ids` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__IDS = 'messaging.bullmq.job.ids'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_KEY}. `messaging.bullmq.job.key` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__KEY = 'messaging.bullmq.job.key'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_NAME}. `messaging.bullmq.job.name` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__NAME = 'messaging.bullmq.job.name'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP}. `messaging.bullmq.job.processed_timestamp` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__PROCESSED_TIMESTAMP = 'messaging.bullmq.job.processed_timestamp'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_SCHEDULER_ID}. `messaging.bullmq.job.scheduler.id` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__SCHEDULER__ID = 'messaging.bullmq.job.scheduler.id'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_STATE}. `messaging.bullmq.job.state` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__STATE = 'messaging.bullmq.job.state'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_JOB_TYPE}. `messaging.bullmq.job.type` + */ +export const SEARCH_MESSAGING__BULLMQ__JOB__TYPE = 'messaging.bullmq.job.type'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT}. `messaging.bullmq.queue.clean.count` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__CLEAN__COUNT = 'messaging.bullmq.queue.clean.count'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT}. `messaging.bullmq.queue.clean.limit` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__CLEAN__LIMIT = 'messaging.bullmq.queue.clean.limit'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY}. `messaging.bullmq.queue.drain.delay` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__DRAIN__DELAY = 'messaging.bullmq.queue.drain.delay'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH}. `messaging.bullmq.queue.event.max_length` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__EVENT__MAX_LENGTH = 'messaging.bullmq.queue.event.max_length'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_GRACE}. `messaging.bullmq.queue.grace` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__GRACE = 'messaging.bullmq.queue.grace'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_JOBS_STATE}. `messaging.bullmq.queue.jobs.state` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__JOBS__STATE = 'messaging.bullmq.queue.jobs.state'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_QUEUE_RATE_LIMIT}. `messaging.bullmq.queue.rate_limit` + */ +export const SEARCH_MESSAGING__BULLMQ__QUEUE__RATE_LIMIT = 'messaging.bullmq.queue.rate_limit'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE}. `messaging.bullmq.worker.do_not_wait_active` + */ +export const SEARCH_MESSAGING__BULLMQ__WORKER__DO_NOT_WAIT_ACTIVE = 'messaging.bullmq.worker.do_not_wait_active'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_WORKER_FORCE_CLOSE}. `messaging.bullmq.worker.force_close` + */ +export const SEARCH_MESSAGING__BULLMQ__WORKER__FORCE_CLOSE = 'messaging.bullmq.worker.force_close'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS}. `messaging.bullmq.worker.jobs_to_extend_locks` + */ +export const SEARCH_MESSAGING__BULLMQ__WORKER__JOBS_TO_EXTEND_LOCKS = 'messaging.bullmq.worker.jobs_to_extend_locks'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_WORKER_NAME}. `messaging.bullmq.worker.name` + */ +export const SEARCH_MESSAGING__BULLMQ__WORKER__NAME = 'messaging.bullmq.worker.name'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_WORKER_RATE_LIMIT}. `messaging.bullmq.worker.rate_limit` + */ +export const SEARCH_MESSAGING__BULLMQ__WORKER__RATE_LIMIT = 'messaging.bullmq.worker.rate_limit'; + +/** + * Search name for {@link attributes.MESSAGING_BULLMQ_WORKER_STALLED_JOBS}. `messaging.bullmq.worker.stalled_jobs` + */ +export const SEARCH_MESSAGING__BULLMQ__WORKER__STALLED_JOBS = 'messaging.bullmq.worker.stalled_jobs'; + +/** + * Search name for {@link attributes.MESSAGING_CLIENT_ID}. `messaging.client.id` + */ +export const SEARCH_MESSAGING__CLIENT__ID = 'messaging.client.id'; + /** * Search name for {@link attributes.MESSAGING_CONVERSATION_ID}. `messaging.conversation_id` * @@ -5670,6 +5796,31 @@ export type AttributeSearchName = | typeof SEARCH_MCP__TRANSPORT | typeof SEARCH_MDC__KEY | typeof SEARCH_MESSAGING__BATCH__MESSAGE_COUNT + | typeof SEARCH_MESSAGING__BULLMQ__FLOW__NAME + | typeof SEARCH_MESSAGING__BULLMQ__JOB__ATTEMPT_FINISHED_TIMESTAMP + | typeof SEARCH_MESSAGING__BULLMQ__JOB__BULK__NAMES + | typeof SEARCH_MESSAGING__BULLMQ__JOB__DEDUPLICATION__KEY + | typeof SEARCH_MESSAGING__BULLMQ__JOB__IDS + | typeof SEARCH_MESSAGING__BULLMQ__JOB__KEY + | typeof SEARCH_MESSAGING__BULLMQ__JOB__NAME + | typeof SEARCH_MESSAGING__BULLMQ__JOB__PROCESSED_TIMESTAMP + | typeof SEARCH_MESSAGING__BULLMQ__JOB__SCHEDULER__ID + | typeof SEARCH_MESSAGING__BULLMQ__JOB__STATE + | typeof SEARCH_MESSAGING__BULLMQ__JOB__TYPE + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__CLEAN__COUNT + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__CLEAN__LIMIT + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__DRAIN__DELAY + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__EVENT__MAX_LENGTH + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__GRACE + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__JOBS__STATE + | typeof SEARCH_MESSAGING__BULLMQ__QUEUE__RATE_LIMIT + | typeof SEARCH_MESSAGING__BULLMQ__WORKER__DO_NOT_WAIT_ACTIVE + | typeof SEARCH_MESSAGING__BULLMQ__WORKER__FORCE_CLOSE + | typeof SEARCH_MESSAGING__BULLMQ__WORKER__JOBS_TO_EXTEND_LOCKS + | typeof SEARCH_MESSAGING__BULLMQ__WORKER__NAME + | typeof SEARCH_MESSAGING__BULLMQ__WORKER__RATE_LIMIT + | typeof SEARCH_MESSAGING__BULLMQ__WORKER__STALLED_JOBS + | typeof SEARCH_MESSAGING__CLIENT__ID | typeof SEARCH_MESSAGING__CONVERSATION_ID | typeof SEARCH_MESSAGING__DESTINATION | typeof SEARCH_MESSAGING__DESTINATION__CONNECTION @@ -9689,6 +9840,157 @@ export const ATTRIBUTE_SEARCH_METADATA: Record brief: 'The number of messages sent, received, or processed in the scope of the batching operation.', deprecationChain: ['messaging.batch.message_count'], }, + 'messaging.bullmq.flow.name': { + canonicalName: 'messaging.bullmq.flow.name', + type: 'string', + brief: 'The name of the root job of the BullMQ flow that FlowProducer.add() adds.', + deprecationChain: ['messaging.bullmq.flow.name'], + }, + 'messaging.bullmq.job.attempt_finished_timestamp': { + canonicalName: 'messaging.bullmq.job.attempt_finished_timestamp', + type: 'integer', + brief: 'The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished.', + deprecationChain: ['messaging.bullmq.job.attempt_finished_timestamp'], + }, + 'messaging.bullmq.job.bulk.names': { + canonicalName: 'messaging.bullmq.job.bulk.names', + type: 'string[]', + brief: 'The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk().', + deprecationChain: ['messaging.bullmq.job.bulk.names'], + }, + 'messaging.bullmq.job.deduplication.key': { + canonicalName: 'messaging.bullmq.job.deduplication.key', + type: 'string', + brief: 'The deduplication ID that Queue.removeDeduplicationKey() removes.', + deprecationChain: ['messaging.bullmq.job.deduplication.key'], + }, + 'messaging.bullmq.job.ids': { + canonicalName: 'messaging.bullmq.job.ids', + type: 'string[]', + brief: 'The IDs of the BullMQ jobs that Queue.clean() removed.', + deprecationChain: ['messaging.bullmq.job.ids'], + }, + 'messaging.bullmq.job.key': { + canonicalName: 'messaging.bullmq.job.key', + type: 'string', + brief: + 'The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey().', + deprecationChain: ['messaging.bullmq.job.key'], + }, + 'messaging.bullmq.job.name': { + canonicalName: 'messaging.bullmq.job.name', + type: 'string', + brief: 'The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work.', + deprecationChain: ['messaging.bullmq.job.name'], + }, + 'messaging.bullmq.job.processed_timestamp': { + canonicalName: 'messaging.bullmq.job.processed_timestamp', + type: 'integer', + brief: 'The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job.', + deprecationChain: ['messaging.bullmq.job.processed_timestamp'], + }, + 'messaging.bullmq.job.scheduler.id': { + canonicalName: 'messaging.bullmq.job.scheduler.id', + type: 'string', + brief: 'The ID of the BullMQ job scheduler that adds the job.', + deprecationChain: ['messaging.bullmq.job.scheduler.id'], + }, + 'messaging.bullmq.job.state': { + canonicalName: 'messaging.bullmq.job.state', + type: 'string', + brief: 'The state of the BullMQ job that a job metric counts.', + deprecationChain: ['messaging.bullmq.job.state'], + }, + 'messaging.bullmq.job.type': { + canonicalName: 'messaging.bullmq.job.type', + type: 'string', + brief: 'The job state from which Queue.clean() removes BullMQ jobs.', + deprecationChain: ['messaging.bullmq.job.type'], + }, + 'messaging.bullmq.queue.clean.count': { + canonicalName: 'messaging.bullmq.queue.clean.count', + type: 'integer', + brief: 'The number of BullMQ jobs that Queue.clean() removed.', + deprecationChain: ['messaging.bullmq.queue.clean.count'], + }, + 'messaging.bullmq.queue.clean.limit': { + canonicalName: 'messaging.bullmq.queue.clean.limit', + type: 'integer', + brief: 'The maximum number of BullMQ jobs that Queue.clean() removes.', + deprecationChain: ['messaging.bullmq.queue.clean.limit'], + }, + 'messaging.bullmq.queue.drain.delay': { + canonicalName: 'messaging.bullmq.queue.drain.delay', + type: 'boolean', + brief: 'Whether Queue.drain() also removes the delayed BullMQ jobs.', + deprecationChain: ['messaging.bullmq.queue.drain.delay'], + }, + 'messaging.bullmq.queue.event.max_length': { + canonicalName: 'messaging.bullmq.queue.event.max_length', + type: 'integer', + brief: 'The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream.', + deprecationChain: ['messaging.bullmq.queue.event.max_length'], + }, + 'messaging.bullmq.queue.grace': { + canonicalName: 'messaging.bullmq.queue.grace', + type: 'integer', + brief: 'The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed.', + deprecationChain: ['messaging.bullmq.queue.grace'], + }, + 'messaging.bullmq.queue.jobs.state': { + canonicalName: 'messaging.bullmq.queue.jobs.state', + type: 'string', + brief: 'The BullMQ job state that the queue job count metric counts.', + deprecationChain: ['messaging.bullmq.queue.jobs.state'], + }, + 'messaging.bullmq.queue.rate_limit': { + canonicalName: 'messaging.bullmq.queue.rate_limit', + type: 'integer', + brief: 'The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue.', + deprecationChain: ['messaging.bullmq.queue.rate_limit'], + }, + 'messaging.bullmq.worker.do_not_wait_active': { + canonicalName: 'messaging.bullmq.worker.do_not_wait_active', + type: 'boolean', + brief: 'Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish.', + deprecationChain: ['messaging.bullmq.worker.do_not_wait_active'], + }, + 'messaging.bullmq.worker.force_close': { + canonicalName: 'messaging.bullmq.worker.force_close', + type: 'boolean', + brief: 'Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish.', + deprecationChain: ['messaging.bullmq.worker.force_close'], + }, + 'messaging.bullmq.worker.jobs_to_extend_locks': { + canonicalName: 'messaging.bullmq.worker.jobs_to_extend_locks', + type: 'string[]', + brief: 'The IDs of the BullMQ jobs whose locks the Worker extends.', + deprecationChain: ['messaging.bullmq.worker.jobs_to_extend_locks'], + }, + 'messaging.bullmq.worker.name': { + canonicalName: 'messaging.bullmq.worker.name', + type: 'string', + brief: 'The name that the user gives to the BullMQ Worker in its options.', + deprecationChain: ['messaging.bullmq.worker.name'], + }, + 'messaging.bullmq.worker.rate_limit': { + canonicalName: 'messaging.bullmq.worker.rate_limit', + type: 'integer', + brief: 'The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker.', + deprecationChain: ['messaging.bullmq.worker.rate_limit'], + }, + 'messaging.bullmq.worker.stalled_jobs': { + canonicalName: 'messaging.bullmq.worker.stalled_jobs', + type: 'string[]', + brief: 'The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state.', + deprecationChain: ['messaging.bullmq.worker.stalled_jobs'], + }, + 'messaging.client.id': { + canonicalName: 'messaging.client.id', + type: 'string', + brief: 'A unique identifier for the client that consumes or produces a message.', + deprecationChain: ['messaging.client.id'], + }, 'messaging.conversation_id': { canonicalName: 'messaging.message.conversation_id', type: 'string', diff --git a/model/attributes/messaging/messaging__bullmq__flow__name.json b/model/attributes/messaging/messaging__bullmq__flow__name.json new file mode 100644 index 000000000..1d5a1a8d3 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__flow__name.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.flow.name", + "brief": "The name of the root job of the BullMQ flow that FlowProducer.add() adds.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["build-report"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.flow.name` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.flow.name attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__attempt_finished_timestamp.json b/model/attributes/messaging/messaging__bullmq__job__attempt_finished_timestamp.json new file mode 100644 index 000000000..287b31463 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__attempt_finished_timestamp.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.attempt_finished_timestamp", + "brief": "The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [1791184722406], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.attempt_finished_timestamp` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.attempt_finished_timestamp attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__bulk__names.json b/model/attributes/messaging/messaging__bullmq__job__bulk__names.json new file mode 100644 index 000000000..8f50fba16 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__bulk__names.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.bulk.names", + "brief": "The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk().", + "type": "string[]", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [["send-welcome-email", "generate-report"]], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.bulk.names` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.bulk.names attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__deduplication__key.json b/model/attributes/messaging/messaging__bullmq__job__deduplication__key.json new file mode 100644 index 000000000..9bf37ee9f --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__deduplication__key.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.deduplication.key", + "brief": "The deduplication ID that Queue.removeDeduplicationKey() removes.", + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["user-42-sync"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.deduplication.key` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.deduplication.key attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__ids.json b/model/attributes/messaging/messaging__bullmq__job__ids.json new file mode 100644 index 000000000..774d6b93c --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__ids.json @@ -0,0 +1,22 @@ +{ + "key": "messaging.bullmq.job.ids", + "brief": "The IDs of the BullMQ jobs that Queue.clean() removed.", + "type": "string[]", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [["1", "2", "3"]], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.ids` attribute of BullMQ's telemetry interface.", + "BullMQ 5.79.1 sets this attribute. BullMQ 6.3.11 does not." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.ids attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__key.json b/model/attributes/messaging/messaging__bullmq__job__key.json new file mode 100644 index 000000000..60a4696eb --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__key.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.key", + "brief": "The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey().", + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["user-42-sync"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.key` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.key attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__name.json b/model/attributes/messaging/messaging__bullmq__job__name.json new file mode 100644 index 000000000..f9c96e52a --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__name.json @@ -0,0 +1,22 @@ +{ + "key": "messaging.bullmq.job.name", + "brief": "The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["send-welcome-email", "generate-report"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.name` attribute of BullMQ's telemetry interface.", + "Also set on the BullMQ job metrics." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.name attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__processed_timestamp.json b/model/attributes/messaging/messaging__bullmq__job__processed_timestamp.json new file mode 100644 index 000000000..79f8a1efd --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__processed_timestamp.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.processed_timestamp", + "brief": "The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [1791184722281], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.processed.timestamp` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.processed_timestamp attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__scheduler__id.json b/model/attributes/messaging/messaging__bullmq__job__scheduler__id.json new file mode 100644 index 000000000..d47659824 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__scheduler__id.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.scheduler.id", + "brief": "The ID of the BullMQ job scheduler that adds the job.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["daily-report"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.scheduler.id` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.scheduler.id attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__state.json b/model/attributes/messaging/messaging__bullmq__job__state.json new file mode 100644 index 000000000..0c3e59060 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__state.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.state", + "brief": "The state of the BullMQ job that a job metric counts.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["completed", "failed", "delayed"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.state` attribute of BullMQ's telemetry interface. BullMQ before 5.81.2 sets `bullmq.job.status` instead, and the SDK then uses that value." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.state attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__job__type.json b/model/attributes/messaging/messaging__bullmq__job__type.json new file mode 100644 index 000000000..bea37fff7 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__job__type.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.job.type", + "brief": "The job state from which Queue.clean() removes BullMQ jobs.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["completed", "failed"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.job.type` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.job.type attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__clean__count.json b/model/attributes/messaging/messaging__bullmq__queue__clean__count.json new file mode 100644 index 000000000..75d97a343 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__clean__count.json @@ -0,0 +1,22 @@ +{ + "key": "messaging.bullmq.queue.clean.count", + "brief": "The number of BullMQ jobs that Queue.clean() removed.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [25], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.clean.count` attribute of BullMQ's telemetry interface.", + "BullMQ 6.3.11 sets this attribute. BullMQ 5.79.1 does not." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.clean.count attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__clean__limit.json b/model/attributes/messaging/messaging__bullmq__queue__clean__limit.json new file mode 100644 index 000000000..ae0aef97b --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__clean__limit.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.queue.clean.limit", + "brief": "The maximum number of BullMQ jobs that Queue.clean() removes.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [1000], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.clean.limit` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.clean.limit attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__drain__delay.json b/model/attributes/messaging/messaging__bullmq__queue__drain__delay.json new file mode 100644 index 000000000..1ee3313a7 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__drain__delay.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.queue.drain.delay", + "brief": "Whether Queue.drain() also removes the delayed BullMQ jobs.", + "type": "boolean", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [true], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.drain.delay` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.drain.delay attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__event__max_length.json b/model/attributes/messaging/messaging__bullmq__queue__event__max_length.json new file mode 100644 index 000000000..d6f64fd37 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__event__max_length.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.queue.event.max_length", + "brief": "The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [10000], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.event.max.length` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.event.max_length attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__grace.json b/model/attributes/messaging/messaging__bullmq__queue__grace.json new file mode 100644 index 000000000..7b1a5852a --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__grace.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.queue.grace", + "brief": "The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [60000], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.grace` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.grace attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__jobs__state.json b/model/attributes/messaging/messaging__bullmq__queue__jobs__state.json new file mode 100644 index 000000000..6303ce2cd --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__jobs__state.json @@ -0,0 +1,22 @@ +{ + "key": "messaging.bullmq.queue.jobs.state", + "brief": "The BullMQ job state that the queue job count metric counts.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["waiting", "active", "completed"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.jobs.state` attribute of BullMQ's telemetry interface.", + "Set on the BullMQ queue job count metric." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.jobs.state attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__queue__rate_limit.json b/model/attributes/messaging/messaging__bullmq__queue__rate_limit.json new file mode 100644 index 000000000..30fbd4d6f --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__queue__rate_limit.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.queue.rate_limit", + "brief": "The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [5000], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.queue.rate.limit` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.queue.rate_limit attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__worker__do_not_wait_active.json b/model/attributes/messaging/messaging__bullmq__worker__do_not_wait_active.json new file mode 100644 index 000000000..211db28bc --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__worker__do_not_wait_active.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.worker.do_not_wait_active", + "brief": "Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish.", + "type": "boolean", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [false], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.worker.do.not.wait.active` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.worker.do_not_wait_active attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__worker__force_close.json b/model/attributes/messaging/messaging__bullmq__worker__force_close.json new file mode 100644 index 000000000..5ce54e6eb --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__worker__force_close.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.worker.force_close", + "brief": "Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish.", + "type": "boolean", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [false], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.worker.force.close` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.worker.force_close attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__worker__jobs_to_extend_locks.json b/model/attributes/messaging/messaging__bullmq__worker__jobs_to_extend_locks.json new file mode 100644 index 000000000..1aef53c99 --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__worker__jobs_to_extend_locks.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.worker.jobs_to_extend_locks", + "brief": "The IDs of the BullMQ jobs whose locks the Worker extends.", + "type": "string[]", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [["1", "2"]], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.worker.jobs.to.extend.locks` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.worker.jobs_to_extend_locks attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__worker__name.json b/model/attributes/messaging/messaging__bullmq__worker__name.json new file mode 100644 index 000000000..5156d3e8b --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__worker__name.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.worker.name", + "brief": "The name that the user gives to the BullMQ Worker in its options.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": ["email-worker"], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.worker.name` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.worker.name attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__worker__rate_limit.json b/model/attributes/messaging/messaging__bullmq__worker__rate_limit.json new file mode 100644 index 000000000..998c3a77a --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__worker__rate_limit.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.worker.rate_limit", + "brief": "The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [5000], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.worker.rate.limit` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.worker.rate_limit attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__bullmq__worker__stalled_jobs.json b/model/attributes/messaging/messaging__bullmq__worker__stalled_jobs.json new file mode 100644 index 000000000..2d0ea5fcc --- /dev/null +++ b/model/attributes/messaging/messaging__bullmq__worker__stalled_jobs.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.bullmq.worker.stalled_jobs", + "brief": "The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state.", + "type": "string[]", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "examples": [["1", "2"]], + "additional_context": [ + "The Sentry SDK sets this attribute from the `bullmq.worker.stalled.jobs` attribute of BullMQ's telemetry interface." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.bullmq.worker.stalled_jobs attribute" + } + ] +} diff --git a/model/attributes/messaging/messaging__client__id.json b/model/attributes/messaging/messaging__client__id.json new file mode 100644 index 000000000..6a778d893 --- /dev/null +++ b/model/attributes/messaging/messaging__client__id.json @@ -0,0 +1,21 @@ +{ + "key": "messaging.client.id", + "brief": "A unique identifier for the client that consumes or produces a message.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": true, + "visibility": "public", + "examples": ["client-5", "myhost@8742@s8083jm"], + "additional_context": [ + "The Sentry SDK sets this attribute on BullMQ spans from the `bullmq.worker.id` attribute of BullMQ's telemetry interface, which is the ID of the Worker." + ], + "changelog": [ + { + "version": "next", + "prs": [690], + "description": "Added messaging.client.id attribute" + } + ] +} diff --git a/model/metrics/messaging/messaging__bullmq__jobs__completed.json b/model/metrics/messaging/messaging__bullmq__jobs__completed.json new file mode 100644 index 000000000..496854a57 --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__jobs__completed.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.jobs.completed", + "brief": "The number of BullMQ jobs that completed.", + "instrument": "counter", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.job.name", "messaging.bullmq.job.state"] +} diff --git a/model/metrics/messaging/messaging__bullmq__jobs__delayed.json b/model/metrics/messaging/messaging__bullmq__jobs__delayed.json new file mode 100644 index 000000000..1ad9d3ed6 --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__jobs__delayed.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.jobs.delayed", + "brief": "The number of BullMQ jobs that moved to the delayed state, for a retry with a backoff delay or through Job.moveToDelayed().", + "instrument": "counter", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.job.name", "messaging.bullmq.job.state"] +} diff --git a/model/metrics/messaging/messaging__bullmq__jobs__failed.json b/model/metrics/messaging/messaging__bullmq__jobs__failed.json new file mode 100644 index 000000000..ae95d9a60 --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__jobs__failed.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.jobs.failed", + "brief": "The number of BullMQ jobs that failed and are not retried.", + "instrument": "counter", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.job.name", "messaging.bullmq.job.state"] +} diff --git a/model/metrics/messaging/messaging__bullmq__jobs__retried.json b/model/metrics/messaging/messaging__bullmq__jobs__retried.json new file mode 100644 index 000000000..1d6ff43a9 --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__jobs__retried.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.jobs.retried", + "brief": "The number of failed BullMQ jobs that are retried without a delay.", + "instrument": "counter", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.job.name", "messaging.bullmq.job.state"] +} diff --git a/model/metrics/messaging/messaging__bullmq__jobs__waiting.json b/model/metrics/messaging/messaging__bullmq__jobs__waiting.json new file mode 100644 index 000000000..e463fae36 --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__jobs__waiting.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.jobs.waiting", + "brief": "The number of BullMQ jobs that Job.moveToWait() moved back to the wait state.", + "instrument": "counter", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.job.name", "messaging.bullmq.job.state"] +} diff --git a/model/metrics/messaging/messaging__bullmq__jobs__waiting_children.json b/model/metrics/messaging/messaging__bullmq__jobs__waiting_children.json new file mode 100644 index 000000000..eed197eae --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__jobs__waiting_children.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.jobs.waiting_children", + "brief": "The number of BullMQ jobs that moved to the waiting-children state to wait for their child jobs.", + "instrument": "counter", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.job.name", "messaging.bullmq.job.state"] +} diff --git a/model/metrics/messaging/messaging__bullmq__queue__jobs.json b/model/metrics/messaging/messaging__bullmq__queue__jobs.json new file mode 100644 index 000000000..16e22e3fa --- /dev/null +++ b/model/metrics/messaging/messaging__bullmq__queue__jobs.json @@ -0,0 +1,9 @@ +{ + "key": "messaging.bullmq.queue.jobs", + "brief": "The number of BullMQ jobs in a queue in one job state, as counted by Queue.recordJobCountsMetric().", + "instrument": "gauge", + "unit": "none", + "is_in_otel": false, + "requirement_level": "recommended", + "attributes": ["messaging.destination.name", "messaging.bullmq.queue.jobs.state"] +} diff --git a/model/metrics/messaging/messaging__process__duration.json b/model/metrics/messaging/messaging__process__duration.json new file mode 100644 index 000000000..475fe39d9 --- /dev/null +++ b/model/metrics/messaging/messaging__process__duration.json @@ -0,0 +1,15 @@ +{ + "key": "messaging.process.duration", + "brief": "The duration of the operation that processes a message.", + "instrument": "distribution", + "unit": "second", + "is_in_otel": true, + "requirement_level": "recommended", + "attributes": [ + "messaging.system", + "messaging.operation.name", + "messaging.destination.name", + "messaging.bullmq.job.name", + "messaging.bullmq.job.state" + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index e9e6a247e..a82368d9b 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -7408,6 +7408,336 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 10 """ + # Path: model/attributes/messaging/messaging__bullmq__flow__name.json + MESSAGING_BULLMQ_FLOW_NAME: Literal["messaging.bullmq.flow.name"] = ( + "messaging.bullmq.flow.name" + ) + """The name of the root job of the BullMQ flow that FlowProducer.add() adds. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "build-report" + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__attempt_finished_timestamp.json + MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP: Literal[ + "messaging.bullmq.job.attempt_finished_timestamp" + ] = "messaging.bullmq.job.attempt_finished_timestamp" + """The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 1791184722406 + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__bulk__names.json + MESSAGING_BULLMQ_JOB_BULK_NAMES: Literal["messaging.bullmq.job.bulk.names"] = ( + "messaging.bullmq.job.bulk.names" + ) + """The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk(). + + Type: List[str] + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: ["send-welcome-email","generate-report"] + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__deduplication__key.json + MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY: Literal[ + "messaging.bullmq.job.deduplication.key" + ] = "messaging.bullmq.job.deduplication.key" + """The deduplication ID that Queue.removeDeduplicationKey() removes. + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: "user-42-sync" + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__ids.json + MESSAGING_BULLMQ_JOB_IDS: Literal["messaging.bullmq.job.ids"] = ( + "messaging.bullmq.job.ids" + ) + """The IDs of the BullMQ jobs that Queue.clean() removed. + + Type: List[str] + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: ["1","2","3"] + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__key.json + MESSAGING_BULLMQ_JOB_KEY: Literal["messaging.bullmq.job.key"] = ( + "messaging.bullmq.job.key" + ) + """The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey(). + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: "user-42-sync" + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__name.json + MESSAGING_BULLMQ_JOB_NAME: Literal["messaging.bullmq.job.name"] = ( + "messaging.bullmq.job.name" + ) + """The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "send-welcome-email" + Example: "generate-report" + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__processed_timestamp.json + MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP: Literal[ + "messaging.bullmq.job.processed_timestamp" + ] = "messaging.bullmq.job.processed_timestamp" + """The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 1791184722281 + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__scheduler__id.json + MESSAGING_BULLMQ_JOB_SCHEDULER_ID: Literal["messaging.bullmq.job.scheduler.id"] = ( + "messaging.bullmq.job.scheduler.id" + ) + """The ID of the BullMQ job scheduler that adds the job. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "daily-report" + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__state.json + MESSAGING_BULLMQ_JOB_STATE: Literal["messaging.bullmq.job.state"] = ( + "messaging.bullmq.job.state" + ) + """The state of the BullMQ job that a job metric counts. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "completed" + Example: "failed" + Example: "delayed" + """ + + # Path: model/attributes/messaging/messaging__bullmq__job__type.json + MESSAGING_BULLMQ_JOB_TYPE: Literal["messaging.bullmq.job.type"] = ( + "messaging.bullmq.job.type" + ) + """The job state from which Queue.clean() removes BullMQ jobs. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "completed" + Example: "failed" + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__clean__count.json + MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT: Literal[ + "messaging.bullmq.queue.clean.count" + ] = "messaging.bullmq.queue.clean.count" + """The number of BullMQ jobs that Queue.clean() removed. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 25 + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__clean__limit.json + MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT: Literal[ + "messaging.bullmq.queue.clean.limit" + ] = "messaging.bullmq.queue.clean.limit" + """The maximum number of BullMQ jobs that Queue.clean() removes. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 1000 + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__drain__delay.json + MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY: Literal[ + "messaging.bullmq.queue.drain.delay" + ] = "messaging.bullmq.queue.drain.delay" + """Whether Queue.drain() also removes the delayed BullMQ jobs. + + Type: bool + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: true + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__event__max_length.json + MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH: Literal[ + "messaging.bullmq.queue.event.max_length" + ] = "messaging.bullmq.queue.event.max_length" + """The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 10000 + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__grace.json + MESSAGING_BULLMQ_QUEUE_GRACE: Literal["messaging.bullmq.queue.grace"] = ( + "messaging.bullmq.queue.grace" + ) + """The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 60000 + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__jobs__state.json + MESSAGING_BULLMQ_QUEUE_JOBS_STATE: Literal["messaging.bullmq.queue.jobs.state"] = ( + "messaging.bullmq.queue.jobs.state" + ) + """The BullMQ job state that the queue job count metric counts. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "waiting" + Example: "active" + Example: "completed" + """ + + # Path: model/attributes/messaging/messaging__bullmq__queue__rate_limit.json + MESSAGING_BULLMQ_QUEUE_RATE_LIMIT: Literal["messaging.bullmq.queue.rate_limit"] = ( + "messaging.bullmq.queue.rate_limit" + ) + """The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 5000 + """ + + # Path: model/attributes/messaging/messaging__bullmq__worker__do_not_wait_active.json + MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE: Literal[ + "messaging.bullmq.worker.do_not_wait_active" + ] = "messaging.bullmq.worker.do_not_wait_active" + """Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish. + + Type: bool + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: false + """ + + # Path: model/attributes/messaging/messaging__bullmq__worker__force_close.json + MESSAGING_BULLMQ_WORKER_FORCE_CLOSE: Literal[ + "messaging.bullmq.worker.force_close" + ] = "messaging.bullmq.worker.force_close" + """Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish. + + Type: bool + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: false + """ + + # Path: model/attributes/messaging/messaging__bullmq__worker__jobs_to_extend_locks.json + MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS: Literal[ + "messaging.bullmq.worker.jobs_to_extend_locks" + ] = "messaging.bullmq.worker.jobs_to_extend_locks" + """The IDs of the BullMQ jobs whose locks the Worker extends. + + Type: List[str] + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: ["1","2"] + """ + + # Path: model/attributes/messaging/messaging__bullmq__worker__name.json + MESSAGING_BULLMQ_WORKER_NAME: Literal["messaging.bullmq.worker.name"] = ( + "messaging.bullmq.worker.name" + ) + """The name that the user gives to the BullMQ Worker in its options. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "email-worker" + """ + + # Path: model/attributes/messaging/messaging__bullmq__worker__rate_limit.json + MESSAGING_BULLMQ_WORKER_RATE_LIMIT: Literal[ + "messaging.bullmq.worker.rate_limit" + ] = "messaging.bullmq.worker.rate_limit" + """The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 5000 + """ + + # Path: model/attributes/messaging/messaging__bullmq__worker__stalled_jobs.json + MESSAGING_BULLMQ_WORKER_STALLED_JOBS: Literal[ + "messaging.bullmq.worker.stalled_jobs" + ] = "messaging.bullmq.worker.stalled_jobs" + """The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state. + + Type: List[str] + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: ["1","2"] + """ + + # Path: model/attributes/messaging/messaging__client__id.json + MESSAGING_CLIENT_ID: Literal["messaging.client.id"] = "messaging.client.id" + """A unique identifier for the client that consumes or produces a message. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: Yes + Visibility: public + Example: "client-5" + Example: "myhost@8742@s8083jm" + """ + # Path: model/attributes/messaging/messaging__conversation_id.json MESSAGING_CONVERSATION_ID: Literal["messaging.conversation_id"] = ( "messaging.conversation_id" @@ -22189,6 +22519,510 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "messaging.bullmq.flow.name": AttributeMetadata( + brief="The name of the root job of the BullMQ flow that FlowProducer.add() adds.", + type=AttributeType.STRING, + keys=("messaging.bullmq.flow.name",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="build-report", + examples=["build-report"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.flow.name attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.flow.name` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.attempt_finished_timestamp": AttributeMetadata( + brief="The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.job.attempt_finished_timestamp",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=1791184722406, + examples=[1791184722406], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.attempt_finished_timestamp attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.attempt_finished_timestamp` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.bulk.names": AttributeMetadata( + brief="The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk().", + type=AttributeType.STRING_ARRAY, + keys=("messaging.bullmq.job.bulk.names",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=["send-welcome-email", "generate-report"], + examples=[["send-welcome-email", "generate-report"]], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.bulk.names attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.bulk.names` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.deduplication.key": AttributeMetadata( + brief="The deduplication ID that Queue.removeDeduplicationKey() removes.", + type=AttributeType.STRING, + keys=("messaging.bullmq.job.deduplication.key",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="user-42-sync", + examples=["user-42-sync"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.deduplication.key attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.deduplication.key` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.ids": AttributeMetadata( + brief="The IDs of the BullMQ jobs that Queue.clean() removed.", + type=AttributeType.STRING_ARRAY, + keys=("messaging.bullmq.job.ids",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=["1", "2", "3"], + examples=[["1", "2", "3"]], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.ids attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.ids` attribute of BullMQ's telemetry interface.", + "BullMQ 5.79.1 sets this attribute. BullMQ 6.3.11 does not.", + ], + ), + "messaging.bullmq.job.key": AttributeMetadata( + brief="The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey().", + type=AttributeType.STRING, + keys=("messaging.bullmq.job.key",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="user-42-sync", + examples=["user-42-sync"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.key attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.key` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.name": AttributeMetadata( + brief="The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work.", + type=AttributeType.STRING, + keys=("messaging.bullmq.job.name",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="send-welcome-email", + examples=["send-welcome-email", "generate-report"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.name attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.name` attribute of BullMQ's telemetry interface.", + "Also set on the BullMQ job metrics.", + ], + ), + "messaging.bullmq.job.processed_timestamp": AttributeMetadata( + brief="The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.job.processed_timestamp",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=1791184722281, + examples=[1791184722281], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.processed_timestamp attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.processed.timestamp` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.scheduler.id": AttributeMetadata( + brief="The ID of the BullMQ job scheduler that adds the job.", + type=AttributeType.STRING, + keys=("messaging.bullmq.job.scheduler.id",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="daily-report", + examples=["daily-report"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.scheduler.id attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.scheduler.id` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.job.state": AttributeMetadata( + brief="The state of the BullMQ job that a job metric counts.", + type=AttributeType.STRING, + keys=("messaging.bullmq.job.state",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="completed", + examples=["completed", "failed", "delayed"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.state attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.state` attribute of BullMQ's telemetry interface. BullMQ before 5.81.2 sets `bullmq.job.status` instead, and the SDK then uses that value." + ], + ), + "messaging.bullmq.job.type": AttributeMetadata( + brief="The job state from which Queue.clean() removes BullMQ jobs.", + type=AttributeType.STRING, + keys=("messaging.bullmq.job.type",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="completed", + examples=["completed", "failed"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.job.type attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.job.type` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.queue.clean.count": AttributeMetadata( + brief="The number of BullMQ jobs that Queue.clean() removed.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.queue.clean.count",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=25, + examples=[25], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.clean.count attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.clean.count` attribute of BullMQ's telemetry interface.", + "BullMQ 6.3.11 sets this attribute. BullMQ 5.79.1 does not.", + ], + ), + "messaging.bullmq.queue.clean.limit": AttributeMetadata( + brief="The maximum number of BullMQ jobs that Queue.clean() removes.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.queue.clean.limit",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=1000, + examples=[1000], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.clean.limit attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.clean.limit` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.queue.drain.delay": AttributeMetadata( + brief="Whether Queue.drain() also removes the delayed BullMQ jobs.", + type=AttributeType.BOOLEAN, + keys=("messaging.bullmq.queue.drain.delay",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=True, + examples=[True], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.drain.delay attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.drain.delay` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.queue.event.max_length": AttributeMetadata( + brief="The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.queue.event.max_length",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=10000, + examples=[10000], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.event.max_length attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.event.max.length` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.queue.grace": AttributeMetadata( + brief="The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.queue.grace",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=60000, + examples=[60000], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.grace attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.grace` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.queue.jobs.state": AttributeMetadata( + brief="The BullMQ job state that the queue job count metric counts.", + type=AttributeType.STRING, + keys=("messaging.bullmq.queue.jobs.state",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="waiting", + examples=["waiting", "active", "completed"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.jobs.state attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.jobs.state` attribute of BullMQ's telemetry interface.", + "Set on the BullMQ queue job count metric.", + ], + ), + "messaging.bullmq.queue.rate_limit": AttributeMetadata( + brief="The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.queue.rate_limit",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=5000, + examples=[5000], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.queue.rate_limit attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.queue.rate.limit` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.worker.do_not_wait_active": AttributeMetadata( + brief="Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish.", + type=AttributeType.BOOLEAN, + keys=("messaging.bullmq.worker.do_not_wait_active",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=False, + examples=[False], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.worker.do_not_wait_active attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.worker.do.not.wait.active` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.worker.force_close": AttributeMetadata( + brief="Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish.", + type=AttributeType.BOOLEAN, + keys=("messaging.bullmq.worker.force_close",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=False, + examples=[False], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.worker.force_close attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.worker.force.close` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.worker.jobs_to_extend_locks": AttributeMetadata( + brief="The IDs of the BullMQ jobs whose locks the Worker extends.", + type=AttributeType.STRING_ARRAY, + keys=("messaging.bullmq.worker.jobs_to_extend_locks",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=["1", "2"], + examples=[["1", "2"]], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.worker.jobs_to_extend_locks attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.worker.jobs.to.extend.locks` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.worker.name": AttributeMetadata( + brief="The name that the user gives to the BullMQ Worker in its options.", + type=AttributeType.STRING, + keys=("messaging.bullmq.worker.name",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="email-worker", + examples=["email-worker"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.worker.name attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.worker.name` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.worker.rate_limit": AttributeMetadata( + brief="The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker.", + type=AttributeType.INTEGER, + keys=("messaging.bullmq.worker.rate_limit",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=5000, + examples=[5000], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.worker.rate_limit attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.worker.rate.limit` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.bullmq.worker.stalled_jobs": AttributeMetadata( + brief="The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state.", + type=AttributeType.STRING_ARRAY, + keys=("messaging.bullmq.worker.stalled_jobs",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=["1", "2"], + examples=[["1", "2"]], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.bullmq.worker.stalled_jobs attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute from the `bullmq.worker.stalled.jobs` attribute of BullMQ's telemetry interface." + ], + ), + "messaging.client.id": AttributeMetadata( + brief="A unique identifier for the client that consumes or produces a message.", + type=AttributeType.STRING, + keys=("messaging.client.id",), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=True, + visibility=Visibility.PUBLIC, + example="client-5", + examples=["client-5", "myhost@8742@s8083jm"], + changelog=[ + ChangelogEntry( + version="next", + prs=[690], + description="Added messaging.client.id attribute", + ), + ], + additional_context=[ + "The Sentry SDK sets this attribute on BullMQ spans from the `bullmq.worker.id` attribute of BullMQ's telemetry interface, which is the ID of the Worker." + ], + ), "messaging.conversation_id": AttributeMetadata( brief='The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".', type=AttributeType.STRING, @@ -28943,6 +29777,31 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.transport": str, "mdc.": str, "messaging.batch.message_count": int, + "messaging.bullmq.flow.name": str, + "messaging.bullmq.job.attempt_finished_timestamp": int, + "messaging.bullmq.job.bulk.names": List[str], + "messaging.bullmq.job.deduplication.key": str, + "messaging.bullmq.job.ids": List[str], + "messaging.bullmq.job.key": str, + "messaging.bullmq.job.name": str, + "messaging.bullmq.job.processed_timestamp": int, + "messaging.bullmq.job.scheduler.id": str, + "messaging.bullmq.job.state": str, + "messaging.bullmq.job.type": str, + "messaging.bullmq.queue.clean.count": int, + "messaging.bullmq.queue.clean.limit": int, + "messaging.bullmq.queue.drain.delay": bool, + "messaging.bullmq.queue.event.max_length": int, + "messaging.bullmq.queue.grace": int, + "messaging.bullmq.queue.jobs.state": str, + "messaging.bullmq.queue.rate_limit": int, + "messaging.bullmq.worker.do_not_wait_active": bool, + "messaging.bullmq.worker.force_close": bool, + "messaging.bullmq.worker.jobs_to_extend_locks": List[str], + "messaging.bullmq.worker.name": str, + "messaging.bullmq.worker.rate_limit": int, + "messaging.bullmq.worker.stalled_jobs": List[str], + "messaging.client.id": str, "messaging.conversation_id": str, "messaging.destination": str, "messaging.destination.connection": str,