Skip to content

Commit d9acf36

Browse files
DawidDawid
authored andcommitted
fix(download-logs): retry download logs fixes #711
1 parent 9d18316 commit d9acf36

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/cloudmanager-helpers.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const Config = require('@adobe/aio-lib-core-config')
1414
const { init } = require('@adobe/aio-lib-cloudmanager')
1515
const { cli } = require('cli-ux')
1616
const { context, getToken, Ims } = require('@adobe/aio-lib-ims')
17-
const logger = require('@adobe/aio-lib-core-logging')('@adobe/aio-lib-cloudmanager', { provider: 'debug' })
17+
const logger = require('@adobe/aio-lib-core-logging')('@adobe/aio-lib-cloudmanager', { level: process.env.LOG_LEVEL })
1818
const moment = require('moment')
1919
const _ = require('lodash')
2020
const { CLI } = require('@adobe/aio-lib-ims/src/context')
@@ -338,6 +338,19 @@ function shouldResetRetires (startTime, resetInterval = 3600000) {
338338
return false
339339
}
340340

341+
async function executeWithRetry (fn, retries = 3, delay = 1000) {
342+
for (let i = 0; i < retries; i++) {
343+
try {
344+
return await fn()
345+
} catch (error) {
346+
logger.debug(`Retrying due to error: ${error.message || 'Unknown error'} (attempt ${i + 1}/${retries})`)
347+
if (i === retries - 1) throw error
348+
await new Promise(resolve => setTimeout(resolve, delay))
349+
}
350+
}
351+
}
352+
353+
341354
module.exports = {
342355
getProgramId,
343356
getOutputFormat,
@@ -361,4 +374,5 @@ module.exports = {
361374
getFullOrgIdentity,
362375
handleError,
363376
executeWithRetries,
377+
executeWithRetry,
364378
}

src/commands/cloudmanager/environment/download-logs.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ governing permissions and limitations under the License.
1111
*/
1212

1313
const { flags } = require('@oclif/command')
14-
const { initSdk, getProgramId, sanitizeEnvironmentId } = require('../../../cloudmanager-helpers')
14+
const { initSdk, getProgramId, sanitizeEnvironmentId, executeWithRetry } = require('../../../cloudmanager-helpers')
1515
const { cli } = require('cli-ux')
1616
const path = require('path')
1717
const commonFlags = require('../../../common-flags')
@@ -50,8 +50,10 @@ class DownloadLogs extends BaseCommand {
5050
}
5151

5252
async downloadLogs (programId, environmentId, service, logName, days, outputDirectory, imsContextName = null) {
53-
const sdk = await initSdk(imsContextName)
54-
return sdk.downloadLogs(programId, environmentId, service, logName, days, outputDirectory)
53+
return executeWithRetry(async () => {
54+
const sdk = await initSdk(imsContextName)
55+
return sdk.downloadLogs(programId, environmentId, service, logName, days, outputDirectory)
56+
})
5557
}
5658
}
5759

0 commit comments

Comments
 (0)