Skip to content

Commit

Permalink
DO-1560: make the re-caching concurrency configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
krishanthisera committed Nov 1, 2023
1 parent f70088f commit 42da564
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 1 deletion.
2 changes: 2 additions & 0 deletions packages/prerender-fargate/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { PrerenderFargate } from "./lib/prerender-fargate";
import {
PrerenderFargateOptions,
PrerenderFargateReachingOptions,
PrerenderFargateScalingOptions,
} from "./lib/prerender-fargate-options";
import { PrerenderTokenUrlAssociationOptions } from "./lib/recaching/prerender-tokens";
Expand All @@ -9,5 +10,6 @@ export {
PrerenderFargate,
PrerenderFargateOptions,
PrerenderFargateScalingOptions,
PrerenderFargateReachingOptions,
PrerenderTokenUrlAssociationOptions,
};
16 changes: 16 additions & 0 deletions packages/prerender-fargate/lib/prerender-fargate-options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ export interface PrerenderFargateOptions {
* for most of the cases.
*/
prerenderFargateScalingOptions?: PrerenderFargateScalingOptions;
/**
* Prerender Fargate Re-caching options
* This allows to alter the re-caching behavior. The default configuration should be sufficient.
*/
prerenderFargateReachingOptions?: PrerenderFargateReachingOptions;
}

/**
Expand Down Expand Up @@ -137,3 +142,14 @@ export interface PrerenderFargateScalingOptions {
*/
unhealthyThresholdCount?: number;
}

/**
* Prerender Fargate Re-caching options
*/
export interface PrerenderFargateReachingOptions {
/**
* The maximum number of concurrent executions of the Prerender Re-cache API.
* @default - 1
*/
maxConcurrentExecutions: number;
}
3 changes: 3 additions & 0 deletions packages/prerender-fargate/lib/prerender-fargate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ export class PrerenderFargate extends Construct {
prerenderName,
minInstanceCount,
prerenderFargateScalingOptions,
prerenderFargateReachingOptions,
} = props;

// Create bucket for prerender storage
Expand Down Expand Up @@ -252,6 +253,8 @@ export class PrerenderFargate extends Construct {
new PrerenderRecacheApi(this, `${prerenderName}-recache-api`, {
prerenderS3Bucket: this.bucket,
tokenList: Object.keys(tokenUrlAssociation.tokenUrlAssociation),
maxConcurrentExecutions:
prerenderFargateReachingOptions?.maxConcurrentExecutions || 1,
});
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ export interface PrerenderRecacheApiOptions {
* A list of tokens used to authenticate API requests.
*/
tokenList: string[];
/**
* Maximum number of concurrent executions of the Prerender Recache API.
*/
maxConcurrentExecutions: number;
}

/**
Expand Down Expand Up @@ -48,8 +52,8 @@ export class PrerenderRecacheApi extends Construct {
new LambdaToSqsToLambda(this, "prerenderRequestQueue", {
existingProducerLambdaObj: apiHandler,
existingConsumerLambdaObj: new NodejsFunction(this, "consumer", {
reservedConcurrentExecutions: options.maxConcurrentExecutions,
timeout: Duration.seconds(60),
reservedConcurrentExecutions: 1,
}),
deployDeadLetterQueue: false,
queueProps: { visibilityTimeout: Duration.minutes(60) },
Expand Down

0 comments on commit 42da564

Please sign in to comment.