@shushed/helpers 0.0.256 → 0.0.258
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.
|
@@ -360,11 +360,9 @@ class PubSubHelper extends runtime_1.default {
|
|
|
360
360
|
nextMetadata.enableExactlyOnceDelivery = null;
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
|
-
if (!isSubscriptionBigQuery(opts)) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
nextMetadata.filter = opts.subscriptionFilter || null;
|
|
367
|
-
}
|
|
363
|
+
if (!isSubscriptionBigQuery(opts) && !subscription && opts.subscriptionFilter) {
|
|
364
|
+
nextMetadata = nextMetadata || {};
|
|
365
|
+
nextMetadata.filter = opts.subscriptionFilter;
|
|
368
366
|
}
|
|
369
367
|
if (opts.retryMinDelay != subscriptionMetaData?.retryPolicy?.minimumBackoff?.seconds
|
|
370
368
|
|| opts.retryMaxDelay != subscriptionMetaData?.retryPolicy?.maximumBackoff?.seconds) {
|
|
@@ -438,6 +436,21 @@ class PubSubHelper extends runtime_1.default {
|
|
|
438
436
|
async ensureSubscribtionExists(subscriptionName, opts) {
|
|
439
437
|
let [subscriptions] = await opts.topic.getSubscriptions();
|
|
440
438
|
let subscription = subscriptions.find((subscription) => this.getNameFromFullyQualifiedName(subscription.name) === subscriptionName) || null;
|
|
439
|
+
if (!subscription) {
|
|
440
|
+
const existingSub = this.pubSub.subscription(subscriptionName);
|
|
441
|
+
try {
|
|
442
|
+
const [existingMetadata] = await existingSub.getMetadata();
|
|
443
|
+
if (existingMetadata && existingMetadata.topic !== opts.topic.name) {
|
|
444
|
+
this.logging.log(`ensureSubscribtionExists: subscription ${subscriptionName} exists on different topic (${existingMetadata.topic}), deleting to recreate on ${opts.topic.name}`);
|
|
445
|
+
await existingSub.delete();
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
catch (err) {
|
|
449
|
+
if (err.code !== 5) {
|
|
450
|
+
throw err;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
441
454
|
let subscriptionMetaData;
|
|
442
455
|
try {
|
|
443
456
|
[subscriptionMetaData] = (await subscription?.getMetadata()) || [null];
|
|
@@ -445,6 +458,16 @@ class PubSubHelper extends runtime_1.default {
|
|
|
445
458
|
catch (err) {
|
|
446
459
|
throw new Error('Invariant: While getting subscription metadata - ' + err.message);
|
|
447
460
|
}
|
|
461
|
+
if (subscription && !isSubscriptionBigQuery(opts)) {
|
|
462
|
+
const currentFilter = subscriptionMetaData?.filter || null;
|
|
463
|
+
const desiredFilter = opts.subscriptionFilter || null;
|
|
464
|
+
if (currentFilter !== desiredFilter) {
|
|
465
|
+
this.logging.log(`ensureSubscribtionExists: subscription filter changed for ${subscriptionName}, recreating subscription (current: ${JSON.stringify(currentFilter)}, desired: ${JSON.stringify(desiredFilter)})`);
|
|
466
|
+
await subscription.delete();
|
|
467
|
+
subscription = null;
|
|
468
|
+
subscriptionMetaData = null;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
448
471
|
const createPayload = await this.updateSubscription(subscriptionName, subscription, subscriptionMetaData, opts);
|
|
449
472
|
if (createPayload && !subscription) {
|
|
450
473
|
this.logging.log('ensureSubscribtionExists creating subscription ' + subscriptionName, createPayload);
|