Skip to content

fix(record): remove the empty dataset dir a failed recording leaves behind - #113

Open
ravediamond wants to merge 1 commit into
huggingface:mainfrom
ravediamond:cleanup-empty-dataset-on-failure
Open

ravediamond wants to merge 1 commit into
huggingface:mainfrom
ravediamond:cleanup-empty-dataset-on-failure

Conversation

@ravediamond

Copy link
Copy Markdown
Contributor

Closes #112.

When a recording fails before any episode is saved, the dataset directory it already created gets left on disk and shows up in the dataset list as if something was recorded.

Added _cleanup_failed_recording(), called from the recording worker's error handler: if the session wasn't resuming an existing dataset and saved 0 episodes, it removes the dataset directory. Best-effort — logs and swallows any cleanup failure rather than masking the original recording error.

Also pulled the path-traversal guard out of handle_delete_dataset into _resolve_dataset_dir so the new cleanup path reuses it instead of a third copy, and switched it to read the cache root from the environment at call time (same as episode_media.lerobot_cache_root()) instead of importing lerobot's HF_LEROBOT_HOME, which is frozen at import time — the old version would have silently used the wrong root if the env var changed after the module first loaded. Writing a test for it is what surfaced this.

Tested: pytest (277 passed, 9 new tests covering the traversal guard, delete-dataset, and the four cleanup branches), ruff check/format clean. No frontend changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: failed recording leaves an empty dataset directory behind

1 participant