diff --git a/packages/core/src/classes/manager/scan-manager.ts b/packages/core/src/classes/manager/scan-manager.ts index 2905f64..dd6e6a0 100644 --- a/packages/core/src/classes/manager/scan-manager.ts +++ b/packages/core/src/classes/manager/scan-manager.ts @@ -343,7 +343,7 @@ export class ScanManager { const allPromisesResponse = await Promise.all( parallelScanOptions.map(options => - this.toLimited(this.scan(options, metadataOptions)) + this.toLimited(this._scan(options, metadataOptions)) ) ); @@ -407,6 +407,28 @@ export class ScanManager { items: Entity[] | undefined; unknownItems: DocumentClientTypes.AttributeMap[] | undefined; cursor: DocumentClientTypes.Key | undefined; + }> { + // start with 0 + this.itemsFetchedSoFarTotalParallelCount = 0; + return this._scan(scanOptions, metadataOptions); + } + + /** + * Internal implementation of scan. + * In all external use-cases scan should be used + * This implementation does not reset `itemsFetchedSoFarTotalParallelCount` as it is called from parallelScan + * @param {ScanManagerScanOptions} scanOptions + * @param {MetadataOptions} metadataOptions + * @returns {Promise<{items: Entity[] | undefined, unknownItems: DocumentClientTypes.AttributeMap[] | undefined, cursor: DocumentClientTypes.Key | undefined}>} + * @internal + */ + protected async _scan( + scanOptions?: ScanManagerScanOptions, + metadataOptions?: MetadataOptions + ): Promise<{ + items: Entity[] | undefined; + unknownItems: DocumentClientTypes.AttributeMap[] | undefined; + cursor: DocumentClientTypes.Key | undefined; }> { const requestId = getUniqueRequestId(metadataOptions?.requestId);