Skip to content

Commit 0dea01e

Browse files
Merge pull request #331 from Waltham-Data-Science/claude/download-timeout-60s
Wait up to 60 s for each bulk document download chunk
2 parents b99e2f3 + 48c2cb0 commit 0dea01e

4 files changed

Lines changed: 19 additions & 6 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
2323

2424
### Fixed
2525

26+
- **Bulk document downloads wait up to 60 s for each chunk** (mirroring
27+
NDI-matlab#1030). `downloadDocumentCollection` polls each chunk's
28+
presigned ZIP URL while the server builds the archive, and gave up after
29+
20 s; a chunk of 2000 large documents can take longer, which surfaced as a
30+
`TimeoutError` (in MATLAB, a 404 from curl) partway through downloading a
31+
dataset. The default `timeout` is now 60 s in both
32+
`downloadDocumentCollection` and `_download_chunk_zip`.
33+
2634
- **`ndi.probe.timeseries.readtimeseries()` names its first argument
2735
`timeref_or_epoch`, matching MATLAB and `ndi.element.timeseries`**
2836
(NDI-python#166). It was called `epoch`, so the two classes could not be

‎src/ndi/calc/stimulus/ndi_matlab_python_bridge.yaml‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ classes:
1818
type: class
1919
status: porting_deferred
2020
matlab_path: "src/ndi/+ndi/+calc/+stimulus/tuningcurve.m"
21-
matlab_last_sync_hash: "63043f393"
21+
matlab_last_sync_hash: "49a875c94"
2222
python_path: "ndi/calc/stimulus/tuningcurve.py"
2323
python_class: "ndi_calc_stimulus_tuningcurve"
2424
inherits: "ndi.calculator"
@@ -50,6 +50,11 @@ classes:
5050
the MATLAB without a populated session to check against is how a
5151
plausible wrong answer gets committed, and this entry has already
5252
carried one claim too many.
53+
RE-EXAMINED AT 49a875c94 (VH-Lab/NDI-matlab#1029): calculate now sets
54+
the deal index to the loop index when one property is dealt (it was
55+
fixed at 1, so every dealt curve used the first value) and accumulates
56+
deal_log_str. Nothing to follow here: the port's calculate is the stub
57+
described above and has no deal loop. Hash bumped only.
5358
5459
methods:
5560
- name: tuningcurve

‎src/ndi/cloud/download.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def _check_zip_ratio(zf: Any) -> None:
114114

115115
def _download_chunk_zip(
116116
url: str,
117-
timeout: float = 20.0,
117+
timeout: float = 60.0,
118118
retry_interval: float = 1.0,
119119
) -> list[dict[str, Any]]:
120120
"""Download and extract a bulk-download ZIP from a presigned S3 URL.
@@ -214,7 +214,7 @@ def downloadDocumentCollection(
214214
dataset_id: str,
215215
doc_ids: list[str] | None = None,
216216
chunk_size: int = 2000,
217-
timeout: float = 20.0,
217+
timeout: float = 60.0,
218218
retry_interval: float = 1.0,
219219
progress: Callable[[str], None] | None = None,
220220
*,
@@ -234,7 +234,7 @@ def downloadDocumentCollection(
234234
chunk_size: Number of documents per bulk-download request.
235235
Default 2000 matches MATLAB.
236236
timeout: Seconds to wait for each chunk's ZIP to become
237-
available. Default 20 matches MATLAB.
237+
available. Default 60 matches MATLAB.
238238
retry_interval: Seconds between polling attempts for each
239239
chunk. Default 1 matches MATLAB.
240240
progress: Optional callback for status messages.

‎src/ndi/cloud/ndi_matlab_python_bridge.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ functions:
617617
# --- download.py functions ---
618618
- name: downloadDocumentCollection
619619
matlab_path: "+ndi/+cloud/+download/downloadDocumentCollection.m"
620-
matlab_last_sync_hash: "e1a641f0b"
620+
matlab_last_sync_hash: "e82a607f0"
621621
python_path: "ndi/cloud/download.py"
622622
input_arguments:
623623
- name: dataset_id
@@ -633,7 +633,7 @@ functions:
633633
- name: timeout
634634
type_matlab: "double"
635635
type_python: "float"
636-
default: "20.0"
636+
default: "60.0"
637637
- name: retry_interval
638638
type_python: "float"
639639
default: "1.0"

0 commit comments

Comments
 (0)