Skip to content

Commit fd92869

Browse files
committed
fix: change hybrid timeout default to unlimited (0)
Large documents with many pages can take significant time for AI processing, especially on CPU-only environments. The previous 30s default caused frequent timeouts. Use 0 (no timeout) as default so users are not blocked unexpectedly. Closes #333
1 parent e051b49 commit fd92869

11 files changed

Lines changed: 20 additions & 21 deletions

File tree

content/docs/_generated/node-convert-options.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ description: Options for the Node.js convert function
3232
| `hybrid` | `string` | `"off"` | Hybrid backend for AI processing. Values: off (default), docling-fast |
3333
| `hybridMode` | `string` | `"auto"` | Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend) |
3434
| `hybridUrl` | `string` | - | Hybrid backend server URL (overrides default) |
35-
| `hybridTimeout` | `string` | `"30000"` | Hybrid backend request timeout in milliseconds. Default: 30000 |
35+
| `hybridTimeout` | `string` | `"0"` | Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0 |
3636
| `hybridFallback` | `boolean` | `false` | Opt in to Java fallback on hybrid backend error (default: disabled) |

content/docs/_generated/python-convert-options.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ description: Options for the Python convert function
3333
| `hybrid` | `str` | `"off"` | Hybrid backend for AI processing. Values: off (default), docling-fast |
3434
| `hybrid_mode` | `str` | `"auto"` | Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend) |
3535
| `hybrid_url` | `str` | - | Hybrid backend server URL (overrides default) |
36-
| `hybrid_timeout` | `str` | `"30000"` | Hybrid backend request timeout in milliseconds. Default: 30000 |
36+
| `hybrid_timeout` | `str` | `"0"` | Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0 |
3737
| `hybrid_fallback` | `bool` | `False` | Opt in to Java fallback on hybrid backend error (default: disabled) |

content/docs/cli-options-reference.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ This page documents all available CLI options for opendataloader-pdf.
3636
| `--hybrid` | - | `string` | `"off"` | Hybrid backend for AI processing. Values: off (default), docling-fast |
3737
| `--hybrid-mode` | - | `string` | `"auto"` | Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend) |
3838
| `--hybrid-url` | - | `string` | - | Hybrid backend server URL (overrides default) |
39-
| `--hybrid-timeout` | - | `string` | `"30000"` | Hybrid backend request timeout in milliseconds. Default: 30000 |
39+
| `--hybrid-timeout` | - | `string` | `"0"` | Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0 |
4040
| `--hybrid-fallback` | - | `boolean` | `false` | Opt in to Java fallback on hybrid backend error (default: disabled) |
4141

4242
## Examples

java/opendataloader-pdf-cli/src/main/java/org/opendataloader/pdf/cli/CLIOptions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public class CLIOptions {
129129
private static final String HYBRID_URL_DESC = "Hybrid backend server URL (overrides default)";
130130

131131
private static final String HYBRID_TIMEOUT_LONG_OPTION = "hybrid-timeout";
132-
private static final String HYBRID_TIMEOUT_DESC = "Hybrid backend request timeout in milliseconds. Default: 30000";
132+
private static final String HYBRID_TIMEOUT_DESC = "Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0";
133133

134134
private static final String HYBRID_FALLBACK_LONG_OPTION = "hybrid-fallback";
135135
private static final String HYBRID_FALLBACK_DESC = "Opt in to Java fallback on hybrid backend error (default: disabled)";
@@ -179,7 +179,7 @@ public class CLIOptions {
179179
new OptionDefinition(HYBRID_LONG_OPTION, null, "string", "off", HYBRID_DESC, true),
180180
new OptionDefinition(HYBRID_MODE_LONG_OPTION, null, "string", "auto", HYBRID_MODE_DESC, true),
181181
new OptionDefinition(HYBRID_URL_LONG_OPTION, null, "string", null, HYBRID_URL_DESC, true),
182-
new OptionDefinition(HYBRID_TIMEOUT_LONG_OPTION, null, "string", "30000", HYBRID_TIMEOUT_DESC, true),
182+
new OptionDefinition(HYBRID_TIMEOUT_LONG_OPTION, null, "string", "0", HYBRID_TIMEOUT_DESC, true),
183183
new OptionDefinition(HYBRID_FALLBACK_LONG_OPTION, null, "boolean", false, HYBRID_FALLBACK_DESC, true),
184184
new OptionDefinition(EXPORT_OPTIONS_LONG_OPTION, null, "boolean", null, null, false),
185185

java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/HybridConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
public class HybridConfig {
2525

2626
/** Default timeout for backend requests in milliseconds. */
27-
public static final int DEFAULT_TIMEOUT_MS = 30000;
27+
public static final int DEFAULT_TIMEOUT_MS = 0;
2828

2929
/** Default maximum concurrent requests to the backend. */
3030
public static final int DEFAULT_MAX_CONCURRENT_REQUESTS = 4;
@@ -83,14 +83,14 @@ public int getTimeoutMs() {
8383
}
8484

8585
/**
86-
* Sets the request timeout in milliseconds.
86+
* Sets the request timeout in milliseconds. Use 0 for no timeout.
8787
*
88-
* @param timeoutMs The timeout in milliseconds.
89-
* @throws IllegalArgumentException if timeout is not positive.
88+
* @param timeoutMs The timeout in milliseconds (0 = no timeout).
89+
* @throws IllegalArgumentException if timeout is negative.
9090
*/
9191
public void setTimeoutMs(int timeoutMs) {
92-
if (timeoutMs <= 0) {
93-
throw new IllegalArgumentException("Timeout must be positive: " + timeoutMs);
92+
if (timeoutMs < 0) {
93+
throw new IllegalArgumentException("Timeout must be non-negative: " + timeoutMs);
9494
}
9595
this.timeoutMs = timeoutMs;
9696
}

java/opendataloader-pdf-core/src/test/java/org/opendataloader/pdf/processors/HybridDocumentProcessorTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,8 @@ public void testHybridConfigTimeout() {
178178
config.setTimeoutMs(60000);
179179
Assertions.assertEquals(60000, config.getTimeoutMs());
180180

181-
Assertions.assertThrows(IllegalArgumentException.class, () -> {
182-
config.setTimeoutMs(0);
183-
});
181+
config.setTimeoutMs(0);
182+
Assertions.assertEquals(0, config.getTimeoutMs());
184183

185184
Assertions.assertThrows(IllegalArgumentException.class, () -> {
186185
config.setTimeoutMs(-1000);

node/opendataloader-pdf/src/cli-options.generated.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ export function registerCliOptions(program: Command): void {
3030
program.option('--hybrid <value>', 'Hybrid backend for AI processing. Values: off (default), docling-fast');
3131
program.option('--hybrid-mode <value>', 'Hybrid triage mode. Values: auto (default, dynamic triage), full (skip triage, all pages to backend)');
3232
program.option('--hybrid-url <value>', 'Hybrid backend server URL (overrides default)');
33-
program.option('--hybrid-timeout <value>', 'Hybrid backend request timeout in milliseconds. Default: 30000');
33+
program.option('--hybrid-timeout <value>', 'Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0');
3434
program.option('--hybrid-fallback', 'Opt in to Java fallback on hybrid backend error (default: disabled)');
3535
}

node/opendataloader-pdf/src/convert-options.generated.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export interface ConvertOptions {
5151
hybridMode?: string;
5252
/** Hybrid backend server URL (overrides default) */
5353
hybridUrl?: string;
54-
/** Hybrid backend request timeout in milliseconds. Default: 30000 */
54+
/** Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0 */
5555
hybridTimeout?: string;
5656
/** Opt in to Java fallback on hybrid backend error (default: disabled) */
5757
hybridFallback?: boolean;

options.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@
189189
"shortName": null,
190190
"type": "string",
191191
"required": false,
192-
"default": "30000",
193-
"description": "Hybrid backend request timeout in milliseconds. Default: 30000"
192+
"default": "0",
193+
"description": "Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0"
194194
},
195195
{
196196
"name": "hybrid-fallback",

python/opendataloader-pdf/src/opendataloader_pdf/cli_options_generated.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@
222222
"short_name": None,
223223
"type": "string",
224224
"required": False,
225-
"default": "30000",
226-
"description": "Hybrid backend request timeout in milliseconds. Default: 30000",
225+
"default": "0",
226+
"description": "Hybrid backend request timeout in milliseconds (0 = no timeout). Default: 0",
227227
},
228228
{
229229
"name": "hybrid-fallback",

0 commit comments

Comments
 (0)