diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 94073f8df09..4630626605d 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -23,6 +23,7 @@ For notes on migrating to 2.x / 0.200.x see [the upgrade guide](doc/upgrade-to-2 ### :house: Internal * fix(build): update @types/node to 18.19.130, remove DOM types from base tsconfig [#6280](https://github.com/open-telemetry/opentelemetry-js/pull/6280) @overbalance +* refactor(sdk-logs): simplify \_export() [#6318](https://github.com/open-telemetry/opentelemetry-js/pull/6318) @cjihrig ## 0.210.0 diff --git a/experimental/packages/sdk-logs/src/export/BatchLogRecordProcessorBase.ts b/experimental/packages/sdk-logs/src/export/BatchLogRecordProcessorBase.ts index 413ea13df04..a93c8b65141 100644 --- a/experimental/packages/sdk-logs/src/export/BatchLogRecordProcessorBase.ts +++ b/experimental/packages/sdk-logs/src/export/BatchLogRecordProcessorBase.ts @@ -193,17 +193,23 @@ export abstract class BatchLogRecordProcessorBase }) .catch(globalErrorHandler); - const pendingResources = logRecords - .map(logRecord => logRecord.resource) - .filter(resource => resource.asyncAttributesPending); + const pendingResources = []; + + for (let i = 0; i < logRecords.length; i++) { + const resource = logRecords[i].resource; + if ( + resource.asyncAttributesPending && + typeof resource.waitForAsyncAttributes === 'function' + ) { + pendingResources.push(resource.waitForAsyncAttributes()); + } + } // Avoid scheduling a promise to make the behavior more predictable and easier to test if (pendingResources.length === 0) { return doExport(); } else { - return Promise.all( - pendingResources.map(resource => resource.waitForAsyncAttributes?.()) - ).then(doExport, globalErrorHandler); + return Promise.all(pendingResources).then(doExport, globalErrorHandler); } }