Skip to content

Commit 754b22c

Browse files
authored
Configuration: add timeout setting for clustered mode (#303)
* Configuration: add timeout setting for clustered mode * clean up * formatting * convert seconds to milliseconds
1 parent 9e3140b commit 754b22c

File tree

9 files changed

+28
-5
lines changed

9 files changed

+28
-5
lines changed

default.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
"mode": "default",
3535
"clustering": {
3636
"mode": "browser",
37-
"maxConcurrency": 5
37+
"maxConcurrency": 5,
38+
"timeout": 30
3839
},
3940

4041
"verboseLogging": false,

dev.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
"mode": "default",
3535
"clustering": {
3636
"mode": "browser",
37-
"maxConcurrency": 5
37+
"maxConcurrency": 5,
38+
"timeout": 30
3839
},
3940

4041
"verboseLogging": true,

devenv/docker/custom-config/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
"mode": "clustered",
3737
"clustering": {
3838
"mode": "context",
39-
"maxConcurrency": 5
39+
"maxConcurrency": 5,
40+
"timeout": 30
4041
},
4142

4243
"verboseLogging": false,

devenv/docker/ha/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"mode": "default",
1616
"clustering": {
1717
"mode": "browser",
18-
"maxConcurrency": 5
18+
"maxConcurrency": 5,
19+
"timeout": 30
1920
},
2021
"timingMetrics": true
2122
}

src/app.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ function populateServiceConfigFromEnv(config: ServiceConfig, env: NodeJS.Process
124124
config.rendering.clustering.maxConcurrency = parseInt(env['RENDERING_CLUSTERING_MAX_CONCURRENCY'] as string, 10);
125125
}
126126

127+
if (env['RENDERING_CLUSTERING_TIMEOUT']) {
128+
config.rendering.clustering.timeout = parseInt(env['RENDERING_CLUSTERING_TIMEOUT'] as string, 10);
129+
}
130+
127131
if (env['RENDERING_VERBOSE_LOGGING']) {
128132
config.rendering.verboseLogging = env['RENDERING_VERBOSE_LOGGING'] === 'true';
129133
}

src/browser/clustered.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export class ClusteredBrowser extends Browser {
3636
this.cluster = await Cluster.launch({
3737
concurrency: this.concurrency,
3838
maxConcurrency: this.clusteringConfig.maxConcurrency,
39+
timeout: this.clusteringConfig.timeout * 1000,
3940
puppeteerOptions: launcherOptions,
4041
});
4142
await this.cluster.task(async ({ page, data }) => {

src/browser/index.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,15 @@ import { ReusableBrowser } from './reusable';
66

77
export function createBrowser(config: RenderingConfig, log: Logger, metrics: Metrics): Browser {
88
if (config.mode === 'clustered') {
9-
log.info('using clustered browser', 'mode', config.clustering.mode, 'maxConcurrency', config.clustering.maxConcurrency);
9+
log.info(
10+
'using clustered browser',
11+
'mode',
12+
config.clustering.mode,
13+
'maxConcurrency',
14+
config.clustering.maxConcurrency,
15+
'timeout',
16+
config.clustering.timeout
17+
);
1018
return new ClusteredBrowser(config, log, metrics);
1119
}
1220

src/config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as fs from 'fs';
33
export interface ClusteringConfig {
44
mode: string;
55
maxConcurrency: number;
6+
timeout: number;
67
}
78

89
export interface RenderingConfig {
@@ -77,6 +78,7 @@ const defaultRenderingConfig: RenderingConfig = {
7778
clustering: {
7879
mode: 'browser',
7980
maxConcurrency: 5,
81+
timeout: 30,
8082
},
8183
verboseLogging: false,
8284
dumpio: false,

src/plugin/v2/grpc_plugin.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,10 @@ const populateConfigFromEnv = (config: PluginConfig) => {
247247
config.rendering.clustering.maxConcurrency = parseInt(env['GF_PLUGIN_RENDERING_CLUSTERING_MAX_CONCURRENCY'] as string, 10);
248248
}
249249

250+
if (env['GF_PLUGIN_RENDERING_CLUSTERING_TIMEOUT']) {
251+
config.rendering.clustering.timeout = parseInt(env['GF_PLUGIN_RENDERING_CLUSTERING_TIMEOUT'] as string, 10);
252+
}
253+
250254
if (env['GF_PLUGIN_RENDERING_VERBOSE_LOGGING']) {
251255
config.rendering.verboseLogging = env['GF_PLUGIN_RENDERING_VERBOSE_LOGGING'] === 'true';
252256
}

0 commit comments

Comments
 (0)