From c9b19949adba23ef71371e599e4922a535c779f5 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 21 Apr 2026 17:11:16 -0400 Subject: [PATCH] timeout chunk improvements --- src/ria_toolkit_oss/agent/legacy_executor.py | 6 ++++-- src/ria_toolkit_oss/orchestration/campaign.py | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ria_toolkit_oss/agent/legacy_executor.py b/src/ria_toolkit_oss/agent/legacy_executor.py index 76b55c5..d4a302a 100644 --- a/src/ria_toolkit_oss/agent/legacy_executor.py +++ b/src/ria_toolkit_oss/agent/legacy_executor.py @@ -659,7 +659,9 @@ class NodeAgent: base_url = f"{self.hub_url}/datasets/upload" steps = (result.get("steps") if isinstance(result, dict) else getattr(result, "steps", None)) or [] - campaign_name: str = getattr(config, "name", None) or "" + output_obj = getattr(config, "output", None) + folder = getattr(output_obj, "folder", None) + campaign_name: str = folder if folder is not None else (getattr(config, "name", None) or "") for step in steps: output_path: str | None = getattr(step, "output_path", None) if not output_path: @@ -754,7 +756,7 @@ class NodeAgent: headers=headers, files={"file": (filename, chunk, "application/octet-stream")}, data={**metadata, "upload_id": upload_id, "chunk_index": i, "total_chunks": total_chunks}, - timeout=300, + timeout=(30, None), # 30s connect, no read timeout — server may take minutes on final chunk verify=verify, ) if not resp.ok: diff --git a/src/ria_toolkit_oss/orchestration/campaign.py b/src/ria_toolkit_oss/orchestration/campaign.py index 6f9be35..105cc40 100644 --- a/src/ria_toolkit_oss/orchestration/campaign.py +++ b/src/ria_toolkit_oss/orchestration/campaign.py @@ -276,6 +276,7 @@ class OutputConfig: path: str = "recordings" device_id: Optional[str] = None # for device-profile campaigns repo: Optional[str] = None + folder: Optional[str] = None # repo subfolder: None = use campaign name, "" = no subfolder, str = custom @classmethod def from_dict(cls, d: dict) -> "OutputConfig": @@ -284,6 +285,7 @@ class OutputConfig: path=str(d.get("path", "recordings")), device_id=d.get("device_id"), repo=d.get("repo"), + folder=d.get("folder"), )