@google-cloud/pubsub 4.5.0-otel-beta.2 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +1537 -0
  2. package/README.md +1 -2
  3. package/build/protos/protos.json +3 -0
  4. package/build/src/iam.d.ts +2 -11
  5. package/build/src/iam.js +2 -12
  6. package/build/src/iam.js.map +1 -1
  7. package/build/src/index.d.ts +0 -2
  8. package/build/src/index.js +1 -5
  9. package/build/src/index.js.map +1 -1
  10. package/build/src/lease-manager.d.ts +2 -2
  11. package/build/src/lease-manager.js +3 -19
  12. package/build/src/lease-manager.js.map +1 -1
  13. package/build/src/message-queues.d.ts +3 -8
  14. package/build/src/message-queues.js +8 -17
  15. package/build/src/message-queues.js.map +1 -1
  16. package/build/src/opentelemetry-tracing.d.ts +23 -0
  17. package/build/src/opentelemetry-tracing.js +41 -0
  18. package/build/src/opentelemetry-tracing.js.map +1 -0
  19. package/build/src/publisher/flow-publisher.js +0 -5
  20. package/build/src/publisher/flow-publisher.js.map +1 -1
  21. package/build/src/publisher/index.d.ts +2 -3
  22. package/build/src/publisher/index.js +46 -24
  23. package/build/src/publisher/index.js.map +1 -1
  24. package/build/src/publisher/message-batch.d.ts +1 -7
  25. package/build/src/publisher/message-batch.js +1 -11
  26. package/build/src/publisher/message-batch.js.map +1 -1
  27. package/build/src/publisher/message-queues.js +6 -32
  28. package/build/src/publisher/message-queues.js.map +1 -1
  29. package/build/src/publisher/pubsub-message.d.ts +1 -36
  30. package/build/src/publisher/pubsub-message.js +0 -25
  31. package/build/src/publisher/pubsub-message.js.map +1 -1
  32. package/build/src/pubsub.d.ts +0 -5
  33. package/build/src/pubsub.js +14 -4
  34. package/build/src/pubsub.js.map +1 -1
  35. package/build/src/subscriber.d.ts +6 -72
  36. package/build/src/subscriber.js +51 -179
  37. package/build/src/subscriber.js.map +1 -1
  38. package/build/src/subscription.d.ts +2 -3
  39. package/build/src/subscription.js +4 -7
  40. package/build/src/subscription.js.map +1 -1
  41. package/build/src/topic.d.ts +1 -2
  42. package/build/src/topic.js +4 -8
  43. package/build/src/topic.js.map +1 -1
  44. package/package.json +4 -5
  45. package/build/src/telemetry-tracing.d.ts +0 -231
  46. package/build/src/telemetry-tracing.js +0 -623
  47. package/build/src/telemetry-tracing.js.map +0 -1
@@ -1,623 +0,0 @@
1
- "use strict";
2
- /*!
3
- * Copyright 2020-2024 Google LLC
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.legacyExports = exports.PubsubEvents = exports.PubsubSpans = exports.legacyAttributeName = exports.modernAttributeName = exports.pubsubSetter = exports.pubsubGetter = exports.PubsubMessageSet = exports.PubsubMessageGet = exports.PubsubMessageGetSet = exports.OpenTelemetryLevel = void 0;
18
- exports.setGloballyEnabled = setGloballyEnabled;
19
- exports.isEnabled = isEnabled;
20
- exports.spanContextToContext = spanContextToContext;
21
- exports.getSubscriptionInfo = getSubscriptionInfo;
22
- exports.getTopicInfo = getTopicInfo;
23
- exports.injectSpan = injectSpan;
24
- exports.containsSpanContext = containsSpanContext;
25
- exports.extractSpan = extractSpan;
26
- const api_1 = require("@opentelemetry/api");
27
- // We need this to get the library version.
28
- // eslint-disable-next-line @typescript-eslint/no-var-requires
29
- const packageJson = require('../../package.json');
30
- /**
31
- * Instantiates a Opentelemetry tracer for the library
32
- *
33
- * @private
34
- */
35
- let cachedTracer;
36
- function getTracer() {
37
- const tracer = cachedTracer !== null && cachedTracer !== void 0 ? cachedTracer : api_1.trace.getTracer('@google-cloud/pubsub', packageJson.version);
38
- cachedTracer = tracer;
39
- return cachedTracer;
40
- }
41
- /**
42
- * Determination of the level of OTel support we're providing.
43
- *
44
- * @private
45
- */
46
- var OpenTelemetryLevel;
47
- (function (OpenTelemetryLevel) {
48
- /**
49
- * None: OTel support is not enabled because we found no trace provider, or
50
- * the user has not enabled it.
51
- */
52
- OpenTelemetryLevel[OpenTelemetryLevel["None"] = 0] = "None";
53
- /**
54
- * Legacy: We found a trace provider, but the user also specified the old
55
- * manual enable flag; this will trigger the legacy attribute being included.
56
- * The modern propagation attribute will _also_ be included.
57
- */
58
- OpenTelemetryLevel[OpenTelemetryLevel["Legacy"] = 1] = "Legacy";
59
- /**
60
- * Modern: We will only inject/extract the modern propagation attribute.
61
- */
62
- OpenTelemetryLevel[OpenTelemetryLevel["Modern"] = 2] = "Modern";
63
- })(OpenTelemetryLevel || (exports.OpenTelemetryLevel = OpenTelemetryLevel = {}));
64
- // True if user code elsewhere wants to enable OpenTelemetry support.
65
- let globallyEnabled = false;
66
- /**
67
- * Manually set the OpenTelemetry enabledness.
68
- *
69
- * @param enabled The enabled flag to use, to override any automated methods.
70
- * @private
71
- * @internal
72
- */
73
- function setGloballyEnabled(enabled) {
74
- globallyEnabled = enabled;
75
- }
76
- /**
77
- * Tries to divine what sort of OpenTelemetry we're supporting. See the enum
78
- * for the meaning of the values, and other notes.
79
- *
80
- * Legacy OTel is no longer officially supported, but we don't want to
81
- * break anyone at a non-major.
82
- *
83
- * @private
84
- */
85
- function isEnabled(publishSettings) {
86
- // If we're not enabled, skip everything.
87
- if (!globallyEnabled) {
88
- return OpenTelemetryLevel.None;
89
- }
90
- if (publishSettings === null || publishSettings === void 0 ? void 0 : publishSettings.enableOpenTelemetryTracing) {
91
- return OpenTelemetryLevel.Legacy;
92
- }
93
- // Enable modern support.
94
- return OpenTelemetryLevel.Modern;
95
- }
96
- /**
97
- * Implements common members for the TextMap getter and setter interfaces for Pub/Sub messages.
98
- *
99
- * @private
100
- */
101
- class PubsubMessageGetSet {
102
- keys(carrier) {
103
- return Object.getOwnPropertyNames(carrier.attributes)
104
- .filter(n => n.startsWith(PubsubMessageGetSet.keyPrefix))
105
- .map(n => n.substring(PubsubMessageGetSet.keyPrefix.length));
106
- }
107
- attributeName(key) {
108
- return `${PubsubMessageGetSet.keyPrefix}${key}`;
109
- }
110
- }
111
- exports.PubsubMessageGetSet = PubsubMessageGetSet;
112
- PubsubMessageGetSet.keyPrefix = 'googclient_';
113
- /**
114
- * Implements the TextMap getter interface for Pub/Sub messages.
115
- *
116
- * @private
117
- */
118
- class PubsubMessageGet extends PubsubMessageGetSet {
119
- get(carrier, key) {
120
- var _a;
121
- return (_a = carrier === null || carrier === void 0 ? void 0 : carrier.attributes) === null || _a === void 0 ? void 0 : _a[this.attributeName(key)];
122
- }
123
- }
124
- exports.PubsubMessageGet = PubsubMessageGet;
125
- /**
126
- * Implements the TextMap setter interface for Pub/Sub messages.
127
- *
128
- * @private
129
- */
130
- class PubsubMessageSet extends PubsubMessageGetSet {
131
- set(carrier, key, value) {
132
- if (!carrier.attributes) {
133
- carrier.attributes = {};
134
- }
135
- carrier.attributes[this.attributeName(key)] = value;
136
- }
137
- }
138
- exports.PubsubMessageSet = PubsubMessageSet;
139
- /**
140
- * The getter to use when calling extract() on a Pub/Sub message.
141
- *
142
- * @private
143
- */
144
- exports.pubsubGetter = new PubsubMessageGet();
145
- /**
146
- * The setter to use when calling inject() on a Pub/Sub message.
147
- *
148
- * @private
149
- */
150
- exports.pubsubSetter = new PubsubMessageSet();
151
- /**
152
- * Converts a SpanContext to a full Context, as needed.
153
- *
154
- * @private
155
- */
156
- function spanContextToContext(parent) {
157
- return parent ? api_1.trace.setSpanContext(api_1.context.active(), parent) : undefined;
158
- }
159
- /**
160
- * The modern propagation attribute name.
161
- *
162
- * Technically this is determined by the OpenTelemetry library, but
163
- * in practice, it follows the W3C spec, so this should be the right
164
- * one. The only thing we're using it for, anyway, is emptying user
165
- * supplied attributes.
166
- *
167
- * @private
168
- */
169
- exports.modernAttributeName = 'googclient_traceparent';
170
- /**
171
- * The old legacy attribute name.
172
- *
173
- * @private
174
- */
175
- exports.legacyAttributeName = 'googclient_OpenTelemetrySpanContext';
176
- /**
177
- * Break down the subscription's full name into its project and ID.
178
- *
179
- * @private
180
- */
181
- function getSubscriptionInfo(fullName) {
182
- const results = fullName.match(/projects\/([^/]+)\/subscriptions\/(.+)/);
183
- if (!(results === null || results === void 0 ? void 0 : results[0])) {
184
- return {
185
- subName: fullName,
186
- };
187
- }
188
- return {
189
- subName: fullName,
190
- projectId: results[1],
191
- subId: results[2],
192
- };
193
- }
194
- /**
195
- * Break down the subscription's full name into its project and ID.
196
- *
197
- * @private
198
- */
199
- function getTopicInfo(fullName) {
200
- const results = fullName.match(/projects\/([^/]+)\/topics\/(.+)/);
201
- if (!(results === null || results === void 0 ? void 0 : results[0])) {
202
- return {
203
- topicName: fullName,
204
- };
205
- }
206
- return {
207
- topicName: fullName,
208
- projectId: results[1],
209
- topicId: results[2],
210
- };
211
- }
212
- // Determines if a trace is to be sampled. There doesn't appear to be a sanctioned
213
- // way to do this currently (isRecording does something different).
214
- //
215
- // Based on this: https://github.com/open-telemetry/opentelemetry-js/issues/4193
216
- function isSampled(span) {
217
- const FLAG_MASK_SAMPLED = 0x1;
218
- const spanContext = span.spanContext();
219
- const traceFlags = spanContext === null || spanContext === void 0 ? void 0 : spanContext.traceFlags;
220
- const sampled = !!(traceFlags && (traceFlags & FLAG_MASK_SAMPLED) === FLAG_MASK_SAMPLED);
221
- return sampled;
222
- }
223
- class PubsubSpans {
224
- static createAttributes(params, message, caller) {
225
- var _a, _b, _c, _d;
226
- const destinationName = (_a = params.topicName) !== null && _a !== void 0 ? _a : params.subName;
227
- const destinationId = (_b = params.topicId) !== null && _b !== void 0 ? _b : params.subId;
228
- const projectId = params.projectId;
229
- // Purposefully leaving this debug check here as a comment - this should
230
- // always be true, but we don't want to fail in prod if it's not.
231
- /*if (
232
- (params.topicName && params.subName) ||
233
- (!destinationName && !projectId && !destinationId)
234
- ) {
235
- throw new Error(
236
- 'One of topicName or subName must be specified, and must be fully qualified'
237
- );
238
- }*/
239
- const spanAttributes = {
240
- // Add Opentelemetry semantic convention attributes to the span, based on:
241
- // https://github.com/open-telemetry/opentelemetry-specification/blob/v1.1.0/specification/trace/semantic_conventions/messaging.md
242
- ['messaging.system']: 'gcp_pubsub',
243
- ['messaging.destination.name']: destinationId !== null && destinationId !== void 0 ? destinationId : destinationName,
244
- ['gcp.project_id']: projectId,
245
- ['code.function']: caller !== null && caller !== void 0 ? caller : 'unknown',
246
- };
247
- if (message) {
248
- if (message.calculatedSize) {
249
- spanAttributes['messaging.message.envelope.size'] =
250
- message.calculatedSize;
251
- }
252
- else {
253
- if ((_c = message.data) === null || _c === void 0 ? void 0 : _c.length) {
254
- spanAttributes['messaging.message.envelope.size'] =
255
- (_d = message.data) === null || _d === void 0 ? void 0 : _d.length;
256
- }
257
- }
258
- if (message.orderingKey) {
259
- spanAttributes['messaging.gcp_pubsub.message.ordering_key'] =
260
- message.orderingKey;
261
- }
262
- if (message.isExactlyOnceDelivery) {
263
- spanAttributes['messaging.gcp_pubsub.message.exactly_once_delivery'] =
264
- message.isExactlyOnceDelivery;
265
- }
266
- if (message.ackId) {
267
- spanAttributes['messaging.gcp_pubsub.message.ack_id'] = message.ackId;
268
- }
269
- }
270
- return spanAttributes;
271
- }
272
- static createPublisherSpan(message, topicName, caller) {
273
- if (!globallyEnabled) {
274
- return undefined;
275
- }
276
- const topicInfo = getTopicInfo(topicName);
277
- const span = getTracer().startSpan(`${topicName} create`, {
278
- kind: api_1.SpanKind.PRODUCER,
279
- attributes: PubsubSpans.createAttributes(topicInfo, message, caller),
280
- });
281
- if (topicInfo.topicId) {
282
- span.updateName(`${topicInfo.topicId} create`);
283
- span.setAttribute('messaging.destination.name', topicInfo.topicId);
284
- }
285
- return span;
286
- }
287
- static updatePublisherTopicName(span, topicName) {
288
- const topicInfo = getTopicInfo(topicName);
289
- if (topicInfo.topicId) {
290
- span.updateName(`${topicInfo.topicId} create`);
291
- span.setAttribute('messaging.destination.name', topicInfo.topicId);
292
- }
293
- else {
294
- span.updateName(`${topicName} create`);
295
- }
296
- if (topicInfo.projectId) {
297
- span.setAttribute('gcp.project_id', topicInfo.projectId);
298
- }
299
- }
300
- static createReceiveSpan(message, subName, parent, caller) {
301
- var _a;
302
- if (!globallyEnabled) {
303
- return undefined;
304
- }
305
- const subInfo = getSubscriptionInfo(subName);
306
- const name = `${(_a = subInfo.subId) !== null && _a !== void 0 ? _a : subName} subscribe`;
307
- const attributes = this.createAttributes(subInfo, message, caller);
308
- if (subInfo.subId) {
309
- attributes['messaging.destination.name'] = subInfo.subId;
310
- }
311
- if (api_1.context) {
312
- return getTracer().startSpan(name, {
313
- kind: api_1.SpanKind.CONSUMER,
314
- attributes,
315
- }, parent);
316
- }
317
- else {
318
- return getTracer().startSpan(name, {
319
- kind: api_1.SpanKind.CONSUMER,
320
- attributes,
321
- });
322
- }
323
- }
324
- static createChildSpan(name, message, parentSpan, attributes) {
325
- var _a;
326
- if (!globallyEnabled) {
327
- return undefined;
328
- }
329
- const parent = (_a = message === null || message === void 0 ? void 0 : message.parentSpan) !== null && _a !== void 0 ? _a : parentSpan;
330
- if (parent) {
331
- return getTracer().startSpan(name, {
332
- kind: api_1.SpanKind.INTERNAL,
333
- attributes: attributes !== null && attributes !== void 0 ? attributes : {},
334
- }, spanContextToContext(parent.spanContext()));
335
- }
336
- else {
337
- return undefined;
338
- }
339
- }
340
- static createPublishFlowSpan(message) {
341
- return PubsubSpans.createChildSpan('publisher flow control', message);
342
- }
343
- static createPublishSchedulerSpan(message) {
344
- return PubsubSpans.createChildSpan('publisher batching', message);
345
- }
346
- static createPublishRpcSpan(messages, topicName, caller) {
347
- if (!globallyEnabled) {
348
- return undefined;
349
- }
350
- const spanAttributes = PubsubSpans.createAttributes(getTopicInfo(topicName), undefined, caller);
351
- const links = messages
352
- .filter(m => m.parentSpan && isSampled(m.parentSpan))
353
- .map(m => ({ context: m.parentSpan.spanContext() }))
354
- .filter(l => l.context);
355
- const span = getTracer().startSpan(`${topicName} send`, {
356
- kind: api_1.SpanKind.PRODUCER,
357
- attributes: spanAttributes,
358
- links,
359
- }, api_1.ROOT_CONTEXT);
360
- span === null || span === void 0 ? void 0 : span.setAttribute('messaging.batch.message_count', messages.length);
361
- if (span) {
362
- // Also attempt to link from message spans back to the publish RPC span.
363
- messages.forEach(m => {
364
- if (m.parentSpan && isSampled(m.parentSpan)) {
365
- m.parentSpan.addLink({ context: span.spanContext() });
366
- }
367
- });
368
- }
369
- return span;
370
- }
371
- static createAckRpcSpan(messageSpans, subName, caller) {
372
- var _a;
373
- if (!globallyEnabled) {
374
- return undefined;
375
- }
376
- const subInfo = getSubscriptionInfo(subName);
377
- const spanAttributes = PubsubSpans.createAttributes(subInfo, undefined, caller);
378
- const links = messageSpans
379
- .filter(m => m && isSampled(m))
380
- .map(m => ({ context: m.spanContext() }))
381
- .filter(l => l.context);
382
- const span = getTracer().startSpan(`${(_a = subInfo.subId) !== null && _a !== void 0 ? _a : subInfo.subName} ack`, {
383
- kind: api_1.SpanKind.CONSUMER,
384
- attributes: spanAttributes,
385
- links,
386
- }, api_1.ROOT_CONTEXT);
387
- span === null || span === void 0 ? void 0 : span.setAttribute('messaging.batch.message_count', messageSpans.length);
388
- if (span) {
389
- // Also attempt to link from the subscribe span(s) back to the publish RPC span.
390
- messageSpans.forEach(m => {
391
- if (m && isSampled(m)) {
392
- m.addLink({ context: span.spanContext() });
393
- }
394
- });
395
- }
396
- return span;
397
- }
398
- static createModackRpcSpan(messageSpans, subName, type, caller, deadline, isInitial) {
399
- var _a;
400
- if (!globallyEnabled) {
401
- return undefined;
402
- }
403
- const subInfo = getSubscriptionInfo(subName);
404
- const spanAttributes = PubsubSpans.createAttributes(subInfo, undefined, caller);
405
- const links = messageSpans
406
- .filter(m => m && isSampled(m))
407
- .map(m => ({ context: m.spanContext() }))
408
- .filter(l => l.context);
409
- const span = getTracer().startSpan(`${(_a = subInfo.subId) !== null && _a !== void 0 ? _a : subInfo.subName} ${type}`, {
410
- kind: api_1.SpanKind.CONSUMER,
411
- attributes: spanAttributes,
412
- links,
413
- }, api_1.ROOT_CONTEXT);
414
- span === null || span === void 0 ? void 0 : span.setAttribute('messaging.batch.message_count', messageSpans.length);
415
- if (span) {
416
- // Also attempt to link from the subscribe span(s) back to the publish RPC span.
417
- messageSpans.forEach(m => {
418
- if (m && isSampled(m)) {
419
- m.addLink({ context: span.spanContext() });
420
- }
421
- });
422
- }
423
- if (deadline) {
424
- span === null || span === void 0 ? void 0 : span.setAttribute('messaging.gcp_pubsub.message.ack_deadline_seconds', deadline.totalOf('second'));
425
- }
426
- if (isInitial !== undefined) {
427
- span === null || span === void 0 ? void 0 : span.setAttribute('messaging.gcp_pubsub.is_receipt_modack', isInitial);
428
- }
429
- return span;
430
- }
431
- static createReceiveFlowSpan(message) {
432
- return PubsubSpans.createChildSpan('subscriber concurrency control', message);
433
- }
434
- static createReceiveSchedulerSpan(message) {
435
- return PubsubSpans.createChildSpan('subscriber scheduler', message);
436
- }
437
- static createReceiveProcessSpan(message, subName) {
438
- var _a;
439
- const subInfo = getSubscriptionInfo(subName);
440
- return PubsubSpans.createChildSpan(`${(_a = subInfo.subId) !== null && _a !== void 0 ? _a : subName} process`, message);
441
- }
442
- static setReceiveProcessResult(span, isAck) {
443
- span.setAttribute('messaging.gcp_pubsub.result', isAck ? 'ack' : 'nack');
444
- }
445
- }
446
- exports.PubsubSpans = PubsubSpans;
447
- /**
448
- * Creates and manipulates Pub/Sub-related events on spans.
449
- */
450
- class PubsubEvents {
451
- static addEvent(text, message, attributes) {
452
- const parent = message.parentSpan;
453
- if (!parent) {
454
- return;
455
- }
456
- parent.addEvent(text, attributes);
457
- }
458
- static publishStart(message) {
459
- PubsubEvents.addEvent('publish start', message);
460
- }
461
- static publishEnd(message) {
462
- PubsubEvents.addEvent('publish end', message);
463
- }
464
- static ackStart(message) {
465
- PubsubEvents.addEvent('ack start', message);
466
- }
467
- static ackEnd(message) {
468
- PubsubEvents.addEvent('ack end', message);
469
- }
470
- static modackStart(message) {
471
- PubsubEvents.addEvent('modack start', message);
472
- }
473
- static modackEnd(message) {
474
- PubsubEvents.addEvent('modack end', message);
475
- }
476
- static nackStart(message) {
477
- PubsubEvents.addEvent('nack start', message);
478
- }
479
- static nackEnd(message) {
480
- PubsubEvents.addEvent('nack end', message);
481
- }
482
- static ackCalled(span) {
483
- span.addEvent('ack called');
484
- }
485
- static nackCalled(span) {
486
- span.addEvent('nack called');
487
- }
488
- static modAckCalled(span, deadline) {
489
- // User-called modAcks are never initial ones.
490
- span.addEvent('modack called', {
491
- 'messaging.gcp_pubsub.modack_deadline_seconds': `${deadline.totalOf('second')}`,
492
- 'messaging.gcp_pubsub.is_receipt_modack': 'false',
493
- });
494
- }
495
- static modAckStart(message, deadline, isInitial) {
496
- PubsubEvents.addEvent('modack start', message, {
497
- 'messaging.gcp_pubsub.modack_deadline_seconds': `${deadline.totalOf('second')}`,
498
- 'messaging.gcp_pubsub.is_receipt_modack': isInitial ? 'true' : 'false',
499
- });
500
- }
501
- static modAckEnd(message) {
502
- PubsubEvents.addEvent('modack end', message);
503
- }
504
- // Add this event any time the process is shut down before processing
505
- // of the message can complete.
506
- static shutdown(message) {
507
- PubsubEvents.addEvent('shutdown', message);
508
- }
509
- }
510
- exports.PubsubEvents = PubsubEvents;
511
- /**
512
- * Injects the trace context into a Pub/Sub message (or other object with
513
- * an 'attributes' object) for propagation.
514
- *
515
- * This is for the publish side.
516
- *
517
- * @private
518
- */
519
- function injectSpan(span, message, enabled) {
520
- if (!globallyEnabled) {
521
- return;
522
- }
523
- if (!message.attributes) {
524
- message.attributes = {};
525
- }
526
- if (message.attributes[exports.modernAttributeName]) {
527
- console.warn(`${exports.modernAttributeName} key set as message attribute, but will be overridden.`);
528
- delete message.attributes[exports.modernAttributeName];
529
- }
530
- // If we're in legacy mode, add that header as well.
531
- if (enabled === OpenTelemetryLevel.Legacy) {
532
- if (message.attributes[exports.legacyAttributeName]) {
533
- console.warn(`${exports.legacyAttributeName} key set as message attribute, but will be overridden.`);
534
- }
535
- message.attributes[exports.legacyAttributeName] = JSON.stringify(span.spanContext());
536
- }
537
- // Always do propagation injection with the trace context.
538
- const context = api_1.trace.setSpanContext(api_1.ROOT_CONTEXT, span.spanContext());
539
- api_1.propagation.inject(context, message, exports.pubsubSetter);
540
- // Also put the direct reference to the Span object for while we're
541
- // passing it around in the client library.
542
- message.parentSpan = span;
543
- }
544
- /**
545
- * Returns true if this message potentially contains a span context.
546
- *
547
- * @private
548
- */
549
- function containsSpanContext(message) {
550
- if (message.parentSpan) {
551
- return true;
552
- }
553
- if (!message.attributes) {
554
- return false;
555
- }
556
- const keys = Object.getOwnPropertyNames(message.attributes);
557
- return !!keys.find(n => n === exports.legacyAttributeName || n === exports.modernAttributeName);
558
- }
559
- /**
560
- * Extracts the trace context from a Pub/Sub message (or other object with
561
- * an 'attributes' object) from a propagation, for receive processing. If no
562
- * context was present, create a new parent span.
563
- *
564
- * This is for the receive side.
565
- *
566
- * @private
567
- */
568
- function extractSpan(message, subName, enabled) {
569
- var _a, _b;
570
- if (!globallyEnabled) {
571
- return undefined;
572
- }
573
- if (message.parentSpan) {
574
- return message.parentSpan;
575
- }
576
- const keys = Object.getOwnPropertyNames((_a = message.attributes) !== null && _a !== void 0 ? _a : {});
577
- let context;
578
- if (enabled === OpenTelemetryLevel.Legacy) {
579
- // Only prefer the legacy attributes to no trace context attribute.
580
- if (keys.includes(exports.legacyAttributeName) &&
581
- !keys.includes(exports.modernAttributeName)) {
582
- const legacyValue = (_b = message.attributes) === null || _b === void 0 ? void 0 : _b[exports.legacyAttributeName];
583
- if (legacyValue) {
584
- const parentSpanContext = legacyValue
585
- ? JSON.parse(legacyValue)
586
- : undefined;
587
- if (parentSpanContext) {
588
- context = spanContextToContext(parentSpanContext);
589
- }
590
- }
591
- }
592
- }
593
- else {
594
- if (keys.includes(exports.modernAttributeName)) {
595
- context = api_1.propagation.extract(api_1.ROOT_CONTEXT, message, exports.pubsubGetter);
596
- }
597
- }
598
- const span = PubsubSpans.createReceiveSpan(message, subName, context, 'extractSpan');
599
- message.parentSpan = span;
600
- return span;
601
- }
602
- // Since these were exported on the main Pub/Sub index in the previous
603
- // version, we have to export them until the next major.
604
- exports.legacyExports = {
605
- /**
606
- * @deprecated
607
- * Use the new telemetry functionality instead; see the updated OpenTelemetry
608
- * sample for an example.
609
- */
610
- createSpan: function (spanName, kind, attributes, parent) {
611
- if (!globallyEnabled) {
612
- // This isn't great, but it's the fact of the situation.
613
- return undefined;
614
- }
615
- else {
616
- return getTracer().startSpan(spanName, {
617
- kind,
618
- attributes,
619
- }, parent ? api_1.trace.setSpanContext(api_1.context.active(), parent) : undefined);
620
- }
621
- },
622
- };
623
- //# sourceMappingURL=telemetry-tracing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry-tracing.js","sourceRoot":"","sources":["../../src/telemetry-tracing.ts"],"names":[],"mappings":"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"}