_process_episode_worker writes every episode to data/chunk-000/file-000.parquet, so with
--workers > 1 all but one episode's data is overwritten and finalize() reports length=0
for them.
In forge/convert/converter.py, the worker calls writer.write_episode(...), which flushes and
clears the current chunk before the worker sets writer._current_chunk_index = episode_index.
The later _flush_chunk() is therefore a no-op and the chunk index never reaches the file name.
This predates the image-mode change and affects video mode equally; image mode inherits it
because camera frames now travel inside the data parquet.
Repro: convert a multi-episode source with --workers 2 and inspect data/.
Deferred from the LeRobot v3 image-mode PR; targeted at a patch release.
_process_episode_workerwrites every episode todata/chunk-000/file-000.parquet, so with--workers > 1all but one episode's data is overwritten andfinalize()reportslength=0for them.
In
forge/convert/converter.py, the worker callswriter.write_episode(...), which flushes andclears the current chunk before the worker sets
writer._current_chunk_index = episode_index.The later
_flush_chunk()is therefore a no-op and the chunk index never reaches the file name.This predates the image-mode change and affects video mode equally; image mode inherits it
because camera frames now travel inside the data parquet.
Repro: convert a multi-episode source with
--workers 2and inspectdata/.Deferred from the LeRobot v3 image-mode PR; targeted at a patch release.