Skip to content

Commit 08eea38

Browse files
committed
Propagate conductorScanId through task pipeline
In LifecycleTask (v1) and LifecycleTaskV2: we're attaching conductorScanId to the logger default fields when processing a bucket entry so every log line in the task carries the scan identifier. this preserves conductorScanId in all re-queued bucket entries (truncated listing continuations). Previously, rebuilding contextInfo would overwrite it with only the reqId, losing the scan correlation. This affects (_getObjectList, _getObjectVersions, _getMPUs) in LifecycleTask and (_handleRemainingListings, _getObjectList, _getObjectVersions) in LifecycleTaskV2. we're adding conductorScanId to every ActionQueueEntry.addContext() call so object action messages (expiration, transition, NCV expiration, EODM, MPU abort) carry the scan identifier downstream to the object processors. Issue: BB-740
1 parent e835792 commit 08eea38

File tree

2 files changed

+49
-4
lines changed

2 files changed

+49
-4
lines changed

extensions/lifecycle/tasks/LifecycleTask.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,10 @@ class LifecycleTask extends BackbeatTask {
236236
}
237237

238238
const entry = Object.assign({}, bucketData, {
239-
contextInfo: { reqId: log.getSerializedUids() },
239+
contextInfo: {
240+
reqId: log.getSerializedUids(),
241+
conductorScanId: bucketData.contextInfo && bucketData.contextInfo.conductorScanId,
242+
},
240243
details: { marker },
241244
});
242245
this._sendBucketEntry(entry, err => {
@@ -411,6 +414,8 @@ class LifecycleTask extends BackbeatTask {
411414
const entry = Object.assign({}, bucketData, {
412415
contextInfo: {
413416
reqId: log.getSerializedUids(),
417+
conductorScanId: bucketData.contextInfo
418+
&& bucketData.contextInfo.conductorScanId,
414419
},
415420
details: {
416421
keyMarker: data.NextKeyMarker,
@@ -497,6 +502,8 @@ class LifecycleTask extends BackbeatTask {
497502
const entry = Object.assign({}, bucketData, {
498503
contextInfo: {
499504
reqId: log.getSerializedUids(),
505+
conductorScanId: bucketData.contextInfo
506+
&& bucketData.contextInfo.conductorScanId,
500507
},
501508
details: {
502509
keyMarker: data.NextKeyMarker,
@@ -1040,6 +1047,8 @@ class LifecycleTask extends BackbeatTask {
10401047
origin: 'lifecycle',
10411048
ruleType: 'expiration',
10421049
reqId: log.getSerializedUids(),
1050+
conductorScanId: bucketData.contextInfo
1051+
&& bucketData.contextInfo.conductorScanId,
10431052
})
10441053
.setAttribute('target.owner', bucketData.target.owner)
10451054
.setAttribute('target.bucket', bucketData.target.bucket)
@@ -1068,6 +1077,8 @@ class LifecycleTask extends BackbeatTask {
10681077
origin: 'lifecycle',
10691078
ruleType: 'expiration',
10701079
reqId: log.getSerializedUids(),
1080+
conductorScanId: bucketData.contextInfo
1081+
&& bucketData.contextInfo.conductorScanId,
10711082
})
10721083
.setAttribute('target.owner', bucketData.target.owner)
10731084
.setAttribute('target.bucket', bucketData.target.bucket)
@@ -1174,6 +1185,7 @@ class LifecycleTask extends BackbeatTask {
11741185
origin: 'lifecycle',
11751186
ruleType: 'transition',
11761187
reqId: log.getSerializedUids(),
1188+
conductorScanId: params.conductorScanId,
11771189
});
11781190
entry.setAttribute('source', {
11791191
bucket: params.bucket,
@@ -1374,6 +1386,8 @@ class LifecycleTask extends BackbeatTask {
13741386
site: rules[ncvt].StorageClass,
13751387
transitionTime: this._lifecycleDateTime.getTransitionTimestamp(
13761388
{ Days: rules[ncvt][ncd] }, staleDate),
1389+
conductorScanId: bucketData.contextInfo
1390+
&& bucketData.contextInfo.conductorScanId,
13771391
}, log, cb);
13781392
return;
13791393
}
@@ -1450,6 +1464,8 @@ class LifecycleTask extends BackbeatTask {
14501464
origin: 'lifecycle',
14511465
ruleType: 'expiration',
14521466
reqId: log.getSerializedUids(),
1467+
conductorScanId: bucketData.contextInfo
1468+
&& bucketData.contextInfo.conductorScanId,
14531469
})
14541470
.setAttribute('target.owner', bucketData.target.owner)
14551471
.setAttribute('target.bucket', bucketData.target.bucket)
@@ -1519,6 +1535,8 @@ class LifecycleTask extends BackbeatTask {
15191535
origin: 'lifecycle',
15201536
ruleType: 'expiration',
15211537
reqId: log.getSerializedUids(),
1538+
conductorScanId: bucketData.contextInfo
1539+
&& bucketData.contextInfo.conductorScanId,
15221540
})
15231541
.setAttribute('target.owner', bucketData.target.owner)
15241542
.setAttribute('target.bucket', bucketData.target.bucket)
@@ -1606,6 +1624,8 @@ class LifecycleTask extends BackbeatTask {
16061624
site: rules.Transition.StorageClass,
16071625
transitionTime: this._lifecycleDateTime.getTransitionTimestamp(
16081626
rules.Transition, object.LastModified),
1627+
conductorScanId: bucketData.contextInfo
1628+
&& bucketData.contextInfo.conductorScanId,
16091629
}, log, done);
16101630
}
16111631
return done();
@@ -1709,6 +1729,8 @@ class LifecycleTask extends BackbeatTask {
17091729
encodedVersionId: undefined,
17101730
transitionTime: this._lifecycleDateTime.getTransitionTimestamp(
17111731
rules.Transition, version.LastModified),
1732+
conductorScanId: bucketData.contextInfo
1733+
&& bucketData.contextInfo.conductorScanId,
17121734
}, log, done);
17131735
}
17141736

@@ -1758,6 +1780,8 @@ class LifecycleTask extends BackbeatTask {
17581780
origin: 'lifecycle',
17591781
ruleType: 'expiration',
17601782
reqId: log.getSerializedUids(),
1783+
conductorScanId: bucketData.contextInfo
1784+
&& bucketData.contextInfo.conductorScanId,
17611785
})
17621786
.setAttribute('target.owner', bucketData.target.owner)
17631787
.setAttribute('target.bucket', bucketData.target.bucket)
@@ -1827,6 +1851,11 @@ class LifecycleTask extends BackbeatTask {
18271851
processBucketEntry(bucketLCRules, bucketData, s3target,
18281852
backbeatMetadataProxy, nbRetries, done) {
18291853
const log = this.log.newRequestLogger();
1854+
const conductorScanId = bucketData.contextInfo
1855+
&& bucketData.contextInfo.conductorScanId;
1856+
if (conductorScanId && typeof log.addDefaultFields === 'function') {
1857+
log.addDefaultFields({ conductorScanId });
1858+
}
18301859
this.s3target = s3target;
18311860
this.backbeatMetadataProxy = backbeatMetadataProxy;
18321861
if (!this.backbeatMetadataProxy) {

extensions/lifecycle/tasks/LifecycleTaskV2.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ class LifecycleTaskV2 extends LifecycleTask {
5252
} = l;
5353

5454
const entry = Object.assign({}, bucketData, {
55-
contextInfo: { requestId: log.getSerializedUids() },
55+
contextInfo: {
56+
requestId: log.getSerializedUids(),
57+
conductorScanId: bucketData.contextInfo
58+
&& bucketData.contextInfo.conductorScanId,
59+
},
5660
details: { beforeDate, prefix, listType, storageClass },
5761
});
5862

@@ -115,7 +119,11 @@ class LifecycleTaskV2 extends LifecycleTask {
115119
// re-queue truncated listing only once.
116120
if (isTruncated && nbRetries === 0) {
117121
const entry = Object.assign({}, bucketData, {
118-
contextInfo: { requestId: log.getSerializedUids() },
122+
contextInfo: {
123+
requestId: log.getSerializedUids(),
124+
conductorScanId: bucketData.contextInfo
125+
&& bucketData.contextInfo.conductorScanId,
126+
},
119127
details: {
120128
beforeDate: params.BeforeDate,
121129
prefix: params.Prefix,
@@ -199,7 +207,11 @@ class LifecycleTaskV2 extends LifecycleTask {
199207
// re-queue truncated listing only once.
200208
if (isTruncated && nbRetries === 0) {
201209
const entry = Object.assign({}, bucketData, {
202-
contextInfo: { requestId: log.getSerializedUids() },
210+
contextInfo: {
211+
requestId: log.getSerializedUids(),
212+
conductorScanId: bucketData.contextInfo
213+
&& bucketData.contextInfo.conductorScanId,
214+
},
203215
details: {
204216
beforeDate: params.BeforeDate,
205217
prefix: params.Prefix,
@@ -350,6 +362,8 @@ class LifecycleTaskV2 extends LifecycleTask {
350362
site: rules.Transition.StorageClass,
351363
transitionTime: this._lifecycleDateTime.getTransitionTimestamp(
352364
rules.Transition, obj.LastModified),
365+
conductorScanId: bucketData.contextInfo
366+
&& bucketData.contextInfo.conductorScanId,
353367
}, log, cb);
354368
}
355369

@@ -426,6 +440,8 @@ class LifecycleTaskV2 extends LifecycleTask {
426440
origin: 'lifecycle',
427441
ruleType: 'expiration',
428442
reqId: log.getSerializedUids(),
443+
conductorScanId: bucketData.contextInfo
444+
&& bucketData.contextInfo.conductorScanId,
429445
})
430446
.setAttribute('target.owner', bucketData.target.owner)
431447
.setAttribute('target.bucket', bucketData.target.bucket)

0 commit comments

Comments
 (0)