Skip to content

Commit 37c6d83

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

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

src/cloudmanager-helpers.js

Lines changed: 11 additions & 7 deletions
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')
@@ -329,13 +329,16 @@ async function executeWithRetries (fn, maxRetries = 5) {
329329
throw new validationCodes.MAX_RETRY_REACHED()
330330
}
331331

332-
function shouldResetRetires (startTime, resetInterval = 3600000) {
333-
const elapsedTime = Date.now() - startTime
334-
if (elapsedTime >= resetInterval) {
335-
logger.debug(`Resetting retries after ${resetInterval / 1000} seconds.`)
336-
return true
332+
async function executeWithRetry (fn, retries = 3, delay = 1000) {
333+
for (let i = 0; i < retries; i++) {
334+
try {
335+
return await fn()
336+
} catch (error) {
337+
logger.debug(`Retrying due to error: ${error.message || 'Unknown error'} (attempt ${i + 1}/${retries})`)
338+
if (i === retries - 1) throw error
339+
await new Promise(resolve => setTimeout(resolve, delay))
340+
}
337341
}
338-
return false
339342
}
340343

341344
module.exports = {
@@ -361,4 +364,5 @@ module.exports = {
361364
getFullOrgIdentity,
362365
handleError,
363366
executeWithRetries,
367+
executeWithRetry,
364368
}

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)