diff --git a/src/config/commandOptions.js b/src/config/commandOptions.js index c54f27436..b93c0076e 100644 --- a/src/config/commandOptions.js +++ b/src/config/commandOptions.js @@ -72,4 +72,7 @@ export default { useDocker: { usage: 'Uses docker for node/python/ruby', }, + functionCleanupIdleTimeSeconds: { + usage: 'Number of seconds until an idle function is eligible for cleanup', + }, } diff --git a/src/config/defaultOptions.js b/src/config/defaultOptions.js index 0b0b051ea..20cc05b73 100644 --- a/src/config/defaultOptions.js +++ b/src/config/defaultOptions.js @@ -22,4 +22,5 @@ export default { useWorkerThreads: false, websocketPort: 3001, useDocker: false, + functionCleanupIdleTimeSeconds: 60, } diff --git a/src/lambda/LambdaFunctionPool.js b/src/lambda/LambdaFunctionPool.js index b78675784..b91037ec5 100644 --- a/src/lambda/LambdaFunctionPool.js +++ b/src/lambda/LambdaFunctionPool.js @@ -24,8 +24,11 @@ export default class LambdaFunctionPool { const { idleTimeInMinutes, status } = lambdaFunction // console.log(idleTimeInMinutes, status) - // 45 // TODO config, or maybe option? - if (status === 'IDLE' && idleTimeInMinutes >= 1) { + if ( + status === 'IDLE' && + idleTimeInMinutes >= + this.#options.functionCleanupIdleTimeSeconds / 60 + ) { // console.log(`removed Lambda Function ${lambdaFunction.functionName}`) lambdaFunction.cleanup() lambdaFunctions.delete(lambdaFunction) @@ -35,7 +38,7 @@ export default class LambdaFunctionPool { // schedule new timer this._startCleanTimer() - }, 10000) // TODO: config, or maybe option? + }, (this.#options.functionCleanupIdleTimeSeconds * 1000) / 2) } _cleanupPool() {