Export large dataset

Hello,
I have been running an experiment for two weeks and would like to export the data now. I tried to export the “Pioreactor unit activity data” however I always get a “mqtt to db streaming disk I/O error”. However, exporting the OD readings and logs separately worked. I have restarted and rebooted the leader which was also running the experiment. When the error occurred the first time a restart is required to even attempt exporting any data. I have a second experiment with even more data, how can I get access to it?

The full error messages are:
mqtt to db streaming disk I/O error Traceback (most recent call last): File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/utils/timing.py”, line 156, in _execute_function self.function(*self.args, **self.kwargs) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/background_jobs/leader/mqtt_to_db_streaming.py”, line 95, in write_stats with local_intermittent_storage(self.job_name) as c: ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File “/usr/lib/python3.13/contextlib.py”, line 141, in enter return next(self.gen) File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/utils/init.py”, line 440, in local_intermittent_storage with cache(cache_name, db_path=config.get(“storage”, “temporary_cache”)) as c: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/utils/init.py”, line 345, in enter self.cursor.executescript( ~~~~~~~~~~~~~~~~~~~~~~~~~^ “”" ^^^ …<3 lines>… “”" ^^^ ) ^ sqlite3.OperationalError: disk I/O error

and

Exception on /api/experiment_profiles/running/experiments/Test growth M9 [GET] Traceback (most recent call last): File “/opt/pioreactor/venv/lib/python3.13/site-packages/flask/app.py”, line 1511, in wsgi_app response = self.full_dispatch_request() File “/opt/pioreactor/venv/lib/python3.13/site-packages/flask/app.py”, line 919, in full_dispatch_request rv = self.handle_user_exception(e) File “/opt/pioreactor/venv/lib/python3.13/site-packages/flask/app.py”, line 917, in full_dispatch_request rv = self.dispatch_request() File “/opt/pioreactor/venv/lib/python3.13/site-packages/flask/app.py”, line 902, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/web/api.py”, line 2258, in get_running_profiles jobs = query_temp_local_metadata_db( “”" …<19 lines>… one=True, ) File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/web/app.py”, line 248, in query_temp_local_metadata_db cur = _get_temp_local_metadata_db_connection().execute(query, args) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/web/app.py”, line 214, in _get_temp_local_metadata_db_connection db.executescript( ~~~~~~~~~~~~~~~~^ “”" ^^^ …<4 lines>… “”" ^^^ ) ^ sqlite3.OperationalError: disk I/O error

I am running the newest software versions on all reactors 25.12.10

Hi @pauljnb,

I’m not 100% sure what’s occurring. However, here is a work around:

(Maybe helpful to restart the leader first, if possible)

  1. SSH into your leader, and run:

    pio run export_experiment_data --output /run/pioreactor/exports/activity_data.zip --dataset-name pioreactor_unit_activity_data --experiment '<YOUR EXPERIMENT NAME>' --partition-by-unit --partition-by-experiment
    

    (be sure to replace your experiment name in there)

  2. That should run fine, but if not, let me know what error is produced. It might take a few minutes to complete.

  3. Now that the data is exported, you can download it from your browser by visiting:

    http://<your leaders address>/exports/activity_data.zip

    For example, for my local cluster:

    http://lw1209.local/exports/activity_data.zip


Let me know if this works or not!

Hey,

so the export did unfortunately not work. The error seems to indicate there is no space, however it is one of the first experiments I am running on these, I only got them in December. Do I need to upgrade the SD card or is there a software workaround to this. I have attached the logs.
Thank you very much for the help!
Best,
Paul

pioreactor@pioreactor01:~ $ pio run export_experiment_data --output /run/pioreactor/exports/activity_data.zip --dataset-name pioreactor_unit_activity_data --experiment ‘Test growth M9’ --partition-by-unit --partition-by-experiment
2026-01-09T09:53:25+0100 INFO [export_experiment_data] Starting export of dataset: pioreactor_unit_activity_data to /run/pioreactor/exports/activity_data.zip.
2026-01-09T09:53:25+0100 DEBUG [export_experiment_data] SELECT 1 FROM sqlite_master WHERE (type=‘table’ or type=‘view’) and name = ‘pioreactor_unit_activity_data’
2026-01-09T09:53:25+0100 DEBUG [export_experiment_data] SELECT T., strftime(‘%Y-%m-%d %H:%M:%f’, T.timestamp, ‘localtime’) as timestamp_localtime, (unixepoch(T.timestamp) - unixepoch(E.created_at))/3600.0 as hours_since_experiment_created FROM (pioreactor_unit_activity_data) T JOIN experiments E ON E.experiment = T.experiment WHERE T.experiment IN (‘Test growth M9’) ORDER BY T.timestamp
2026-01-09T09:54:04+0100 DEBUG [export_experiment_data] Exported 10000 rows…
2026-01-09T09:54:04+0100 DEBUG [export_experiment_data] Exported 20000 rows…
2026-01-09T09:54:05+0100 DEBUG [export_experiment_data] Exported 30000 rows…
2026-01-09T09:54:05+0100 DEBUG [export_experiment_data] Exported 40000 rows…
2026-01-09T09:54:06+0100 DEBUG [export_experiment_data] Exported 50000 rows…
2026-01-09T09:54:06+0100 DEBUG [export_experiment_data] Exported 60000 rows…
2026-01-09T09:54:06+0100 DEBUG [export_experiment_data] Exported 70000 rows…
2026-01-09T09:54:07+0100 DEBUG [export_experiment_data] Exported 80000 rows…
2026-01-09T09:54:07+0100 DEBUG [export_experiment_data] Exported 90000 rows…
2026-01-09T09:54:08+0100 DEBUG [export_experiment_data] Exported 100000 rows…
2026-01-09T09:54:08+0100 DEBUG [export_experiment_data] Exported 110000 rows…
2026-01-09T09:54:08+0100 DEBUG [export_experiment_data] Exported 120000 rows…
2026-01-09T09:54:09+0100 DEBUG [export_experiment_data] Exported 130000 rows…
2026-01-09T09:54:09+0100 DEBUG [export_experiment_data] Exported 140000 rows…
2026-01-09T09:54:10+0100 DEBUG [export_experiment_data] Exported 150000 rows…
2026-01-09T09:54:10+0100 DEBUG [export_experiment_data] Exported 160000 rows…
2026-01-09T09:54:10+0100 DEBUG [export_experiment_data] Exported 170000 rows…
2026-01-09T09:54:11+0100 DEBUG [export_experiment_data] Exported 180000 rows…
2026-01-09T09:54:11+0100 DEBUG [export_experiment_data] Exported 190000 rows…
2026-01-09T09:54:12+0100 DEBUG [export_experiment_data] Exported 200000 rows…
2026-01-09T09:54:12+0100 DEBUG [export_experiment_data] Exported 210000 rows…
2026-01-09T09:54:12+0100 DEBUG [export_experiment_data] Exported 220000 rows…
2026-01-09T09:54:13+0100 DEBUG [export_experiment_data] Exported 230000 rows…
2026-01-09T09:54:13+0100 DEBUG [export_experiment_data] Exported 240000 rows…
2026-01-09T09:54:14+0100 DEBUG [export_experiment_data] Exported 250000 rows…
2026-01-09T09:54:14+0100 DEBUG [export_experiment_data] Exported 260000 rows…
2026-01-09T09:54:14+0100 DEBUG [export_experiment_data] Exported 270000 rows…
2026-01-09T09:54:15+0100 DEBUG [export_experiment_data] Exported 280000 rows…
2026-01-09T09:54:15+0100 DEBUG [export_experiment_data] Exported 290000 rows…
2026-01-09T09:54:16+0100 DEBUG [export_experiment_data] Exported 300000 rows…
2026-01-09T09:54:16+0100 DEBUG [export_experiment_data] Exported 310000 rows…
2026-01-09T09:54:17+0100 DEBUG [export_experiment_data] Exported 320000 rows…
2026-01-09T09:54:17+0100 DEBUG [export_experiment_data] Exported 330000 rows…
2026-01-09T09:54:17+0100 DEBUG [export_experiment_data] Exported 340000 rows…
2026-01-09T09:54:18+0100 DEBUG [export_experiment_data] Exported 350000 rows…
2026-01-09T09:54:18+0100 DEBUG [export_experiment_data] Exported 360000 rows…
2026-01-09T09:54:18+0100 DEBUG [export_experiment_data] Exported 370000 rows…
2026-01-09T09:54:19+0100 DEBUG [export_experiment_data] Exported 380000 rows…
2026-01-09T09:54:19+0100 DEBUG [export_experiment_data] Exported 390000 rows…
2026-01-09T09:54:19+0100 DEBUG [export_experiment_data] Exported 400000 rows…
2026-01-09T09:54:20+0100 DEBUG [export_experiment_data] Exported 410000 rows…
2026-01-09T09:54:20+0100 DEBUG [export_experiment_data] Exported 420000 rows…
2026-01-09T09:54:21+0100 DEBUG [export_experiment_data] Exported 430000 rows…
2026-01-09T09:54:21+0100 DEBUG [export_experiment_data] Exported 440000 rows…
2026-01-09T09:54:21+0100 DEBUG [export_experiment_data] Exported 450000 rows…
2026-01-09T09:54:22+0100 DEBUG [export_experiment_data] Exported 460000 rows…
2026-01-09T09:54:22+0100 DEBUG [export_experiment_data] Exported 470000 rows…
2026-01-09T09:54:22+0100 DEBUG [export_experiment_data] Exported 480000 rows…
2026-01-09T09:54:23+0100 DEBUG [export_experiment_data] Exported 490000 rows…
2026-01-09T09:54:23+0100 DEBUG [export_experiment_data] Exported 500000 rows…
2026-01-09T09:54:23+0100 DEBUG [export_experiment_data] Exported 510000 rows…
2026-01-09T09:54:24+0100 DEBUG [export_experiment_data] Exported 520000 rows…
2026-01-09T09:54:24+0100 DEBUG [export_experiment_data] Exported 530000 rows…
2026-01-09T09:54:25+0100 DEBUG [export_experiment_data] Exported 540000 rows…
2026-01-09T09:54:25+0100 DEBUG [export_experiment_data] Exported 550000 rows…
2026-01-09T09:54:25+0100 DEBUG [export_experiment_data] Exported 560000 rows…
2026-01-09T09:54:26+0100 DEBUG [export_experiment_data] Exported 570000 rows…
2026-01-09T09:54:26+0100 DEBUG [export_experiment_data] Exported 580000 rows…
2026-01-09T09:54:26+0100 DEBUG [export_experiment_data] Exported 590000 rows…
2026-01-09T09:54:27+0100 DEBUG [export_experiment_data] Exported 600000 rows…
2026-01-09T09:54:27+0100 DEBUG [export_experiment_data] Exported 610000 rows…
2026-01-09T09:54:27+0100 DEBUG [export_experiment_data] Exported 620000 rows…
2026-01-09T09:54:28+0100 DEBUG [export_experiment_data] Exported 630000 rows…
2026-01-09T09:54:28+0100 DEBUG [export_experiment_data] Exported 640000 rows…
2026-01-09T09:54:28+0100 DEBUG [export_experiment_data] Exported 650000 rows…
2026-01-09T09:54:29+0100 DEBUG [export_experiment_data] Exported 660000 rows…
2026-01-09T09:54:29+0100 DEBUG [export_experiment_data] Exported 670000 rows…
2026-01-09T09:54:30+0100 DEBUG [export_experiment_data] Exported 680000 rows…
2026-01-09T09:54:30+0100 DEBUG [export_experiment_data] Exported 690000 rows…
2026-01-09T09:54:30+0100 DEBUG [export_experiment_data] Exported 700000 rows…
2026-01-09T09:54:31+0100 DEBUG [export_experiment_data] Exported 710000 rows…
2026-01-09T09:54:31+0100 DEBUG [export_experiment_data] Exported 720000 rows…
2026-01-09T09:54:31+0100 DEBUG [export_experiment_data] Exported 730000 rows…
2026-01-09T09:54:32+0100 DEBUG [export_experiment_data] Exported 740000 rows…
2026-01-09T09:54:32+0100 DEBUG [export_experiment_data] Exported 750000 rows…
2026-01-09T09:54:32+0100 DEBUG [export_experiment_data] Exported 760000 rows…
2026-01-09T09:54:33+0100 DEBUG [export_experiment_data] Exported 770000 rows…
2026-01-09T09:54:33+0100 DEBUG [export_experiment_data] Exported 780000 rows…
2026-01-09T09:54:33+0100 DEBUG [export_experiment_data] Exported 790000 rows…
2026-01-09T09:54:34+0100 DEBUG [export_experiment_data] Exported 800000 rows…
2026-01-09T09:54:34+0100 DEBUG [export_experiment_data] Exported 810000 rows…
2026-01-09T09:54:35+0100 DEBUG [export_experiment_data] Exported 820000 rows…
2026-01-09T09:54:35+0100 DEBUG [export_experiment_data] Exported 830000 rows…
2026-01-09T09:54:35+0100 DEBUG [export_experiment_data] Exported 840000 rows…
2026-01-09T09:54:36+0100 DEBUG [export_experiment_data] Exported 850000 rows…
2026-01-09T09:54:36+0100 DEBUG [export_experiment_data] Exported 860000 rows…
2026-01-09T09:54:36+0100 DEBUG [export_experiment_data] Exported 870000 rows…
2026-01-09T09:54:37+0100 DEBUG [export_experiment_data] Exported 880000 rows…
2026-01-09T09:54:37+0100 DEBUG [export_experiment_data] Exported 890000 rows…
2026-01-09T09:54:37+0100 DEBUG [export_experiment_data] Exported 900000 rows…
2026-01-09T09:54:38+0100 DEBUG [export_experiment_data] Exported 910000 rows…
2026-01-09T09:54:38+0100 DEBUG [export_experiment_data] Exported 920000 rows…
2026-01-09T09:54:39+0100 DEBUG [export_experiment_data] Exported 930000 rows…
2026-01-09T09:54:39+0100 DEBUG [export_experiment_data] Exported 940000 rows…
2026-01-09T09:54:39+0100 DEBUG [export_experiment_data] Exported 950000 rows…
2026-01-09T09:54:40+0100 DEBUG [export_experiment_data] Exported 960000 rows…
2026-01-09T09:54:40+0100 DEBUG [export_experiment_data] Exported 970000 rows…
2026-01-09T09:54:40+0100 DEBUG [export_experiment_data] Exported 980000 rows…
2026-01-09T09:54:41+0100 DEBUG [export_experiment_data] Exported 990000 rows…
2026-01-09T09:54:41+0100 DEBUG [export_experiment_data] Exported 1000000 rows…
2026-01-09T09:54:41+0100 DEBUG [export_experiment_data] Exported 1010000 rows…
2026-01-09T09:54:42+0100 DEBUG [export_experiment_data] Exported 1020000 rows…
2026-01-09T09:54:42+0100 DEBUG [export_experiment_data] Exported 1030000 rows…
2026-01-09T09:54:42+0100 DEBUG [export_experiment_data] Exported 1040000 rows…
2026-01-09T09:54:43+0100 DEBUG [export_experiment_data] Exported 1050000 rows…
2026-01-09T09:54:43+0100 DEBUG [export_experiment_data] Exported 1060000 rows…
2026-01-09T09:54:44+0100 DEBUG [export_experiment_data] Exported 1070000 rows…
2026-01-09T09:54:44+0100 DEBUG [export_experiment_data] Exported 1080000 rows…
2026-01-09T09:54:44+0100 DEBUG [export_experiment_data] Exported 1090000 rows…
2026-01-09T09:54:45+0100 DEBUG [export_experiment_data] Exported 1100000 rows…
2026-01-09T09:54:45+0100 DEBUG [export_experiment_data] Exported 1110000 rows…
2026-01-09T09:54:45+0100 DEBUG [export_experiment_data] Exported 1120000 rows…
2026-01-09T09:54:46+0100 DEBUG [export_experiment_data] Exported 1130000 rows…
2026-01-09T09:54:46+0100 DEBUG [export_experiment_data] Exported 1140000 rows…
2026-01-09T09:54:46+0100 DEBUG [export_experiment_data] Exported 1150000 rows…
2026-01-09T09:54:47+0100 DEBUG [export_experiment_data] Exported 1160000 rows…
2026-01-09T09:54:47+0100 DEBUG [export_experiment_data] Exported 1170000 rows…
2026-01-09T09:54:48+0100 DEBUG [export_experiment_data] Exported 1180000 rows…
2026-01-09T09:54:48+0100 DEBUG [export_experiment_data] Exported 1190000 rows…
2026-01-09T09:54:48+0100 DEBUG [export_experiment_data] Exported 1200000 rows…
2026-01-09T09:54:49+0100 DEBUG [export_experiment_data] Exported 1210000 rows…
2026-01-09T09:54:49+0100 DEBUG [export_experiment_data] Exported 1220000 rows…
2026-01-09T09:54:49+0100 DEBUG [export_experiment_data] Exported 1230000 rows…
2026-01-09T09:54:50+0100 DEBUG [export_experiment_data] Exported 1240000 rows…
2026-01-09T09:54:50+0100 DEBUG [export_experiment_data] Exported 1250000 rows…
2026-01-09T09:54:50+0100 DEBUG [export_experiment_data] Exported 1260000 rows…
2026-01-09T09:54:51+0100 DEBUG [export_experiment_data] Exported 1270000 rows…
2026-01-09T09:54:51+0100 DEBUG [export_experiment_data] Exported 1280000 rows…
2026-01-09T09:54:51+0100 DEBUG [export_experiment_data] Exported 1290000 rows…
2026-01-09T09:54:52+0100 DEBUG [export_experiment_data] Exported 1300000 rows…
2026-01-09T09:54:52+0100 DEBUG [export_experiment_data] Exported 1310000 rows…
2026-01-09T09:54:53+0100 DEBUG [export_experiment_data] Exported 1320000 rows…
2026-01-09T09:54:53+0100 DEBUG [export_experiment_data] Exported 1330000 rows…
2026-01-09T09:54:53+0100 DEBUG [export_experiment_data] Exported 1340000 rows…
2026-01-09T09:54:54+0100 DEBUG [export_experiment_data] Exported 1350000 rows…
2026-01-09T09:54:54+0100 DEBUG [export_experiment_data] Exported 1360000 rows…
2026-01-09T09:54:54+0100 DEBUG [export_experiment_data] Exported 1370000 rows…
2026-01-09T09:54:55+0100 DEBUG [export_experiment_data] Exported 1380000 rows…
2026-01-09T09:54:55+0100 DEBUG [export_experiment_data] Exported 1390000 rows…
2026-01-09T09:54:55+0100 DEBUG [export_experiment_data] Exported 1400000 rows…
2026-01-09T09:54:56+0100 DEBUG [export_experiment_data] Exported 1410000 rows…
2026-01-09T09:54:56+0100 DEBUG [export_experiment_data] Exported 1420000 rows…
2026-01-09T09:54:56+0100 DEBUG [export_experiment_data] Exported 1430000 rows…
2026-01-09T09:54:57+0100 DEBUG [export_experiment_data] Exported 1440000 rows…
2026-01-09T09:54:57+0100 DEBUG [export_experiment_data] Exported 1450000 rows…
2026-01-09T09:54:58+0100 DEBUG [export_experiment_data] Exported 1460000 rows…
2026-01-09T09:54:58+0100 DEBUG [export_experiment_data] Exported 1470000 rows…
2026-01-09T09:54:58+0100 DEBUG [export_experiment_data] Exported 1480000 rows…
2026-01-09T09:54:59+0100 DEBUG [export_experiment_data] Exported 1490000 rows…
2026-01-09T09:54:59+0100 DEBUG [export_experiment_data] Exported 1500000 rows…
2026-01-09T09:54:59+0100 DEBUG [export_experiment_data] Exported 1500199 rows from pioreactor_unit_activity_data.
Traceback (most recent call last):
File “/usr/lib/python3.13/zipfile/init.py”, line 1908, in write
shutil.copyfileobj(src, dest, 1024
8)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.13/shutil.py”, line 204, in copyfileobj
fdst_write(buf)
~~~~~~~~~~^^^^^
File “/usr/lib/python3.13/zipfile/init.py”, line 1252, in write
self._fileobj.write(data)
~~~~~~~~~~~~~~~~~~~^^^^^^
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/actions/leader/export_experiment_data.py”, line 340, in export_experiment_data
zf.write(path_to_file, arcname=f"{dataset_name}/{path_to_file.name}")
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.13/zipfile/init.py”, line 1907, in write
with open(filename, “rb”) as src, self.open(zinfo, ‘w’) as dest:
~~~~~~~~~^^^^^^^^^^^^
File “/usr/lib/python3.13/zipfile/init.py”, line 1290, in close
self._fileobj.seek(self._zinfo.header_offset)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3.13/zipfile/init.py”, line 2005, in close
self.fp.seek(self.start_dir)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/opt/pioreactor/venv/bin/pio”, line 7, in
sys.exit(pio())
~~~^^
File “/opt/pioreactor/venv/lib/python3.13/site-packages/click/core.py”, line 1157, in call
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File “/opt/pioreactor/venv/lib/python3.13/site-packages/click/core.py”, line 1078, in main
rv = self.invoke(ctx)
File “/opt/pioreactor/venv/lib/python3.13/site-packages/click/core.py”, line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File “/opt/pioreactor/venv/lib/python3.13/site-packages/click/core.py”, line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File “/opt/pioreactor/venv/lib/python3.13/site-packages/click/core.py”, line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/pioreactor/venv/lib/python3.13/site-packages/click/core.py”, line 783, in invoke
return __callback(*args, **kwargs)
File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/actions/leader/export_experiment_data.py”, line 361, in click_export_experiment_data
export_experiment_data(
~~~~~~~~~~~~~~~~~~~~~~^
experiment, dataset_name, output, start_time, end_time, partition_by_unit, partition_by_experiment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File “/opt/pioreactor/venv/lib/python3.13/site-packages/pioreactor/actions/leader/export_experiment_data.py”, line 222, in export_experiment_data
with zipfile.ZipFile(output, mode=“w”, compression=zipfile.ZIP_DEFLATED) as zf, closing(
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.13/zipfile/init.py”, line 1428, in exit
self.close()
~~~~~~~~~~^^
File “/usr/lib/python3.13/zipfile/init.py”, line 2010, in close
self._fpclose(fp)
~~~~~~~~~~~~~^^^^
File “/usr/lib/python3.13/zipfile/init.py”, line 2110, in _fpclose
fp.close()
~~~~~~~~^^
OSError: [Errno 28] No space left on device

The problem is very likely that the directory we are exporting to, /run/..., lives in memory, and the memory on an RPi is limited. Let me get back to you with a solution.

On your leader, copy and paste the following:

sudo systemctl stop pioreactor-web.target
sudo mkdir -p /var/lib/pioreactor/exports
sudo chown pioreactor:www-data /var/lib/pioreactor/exports
sudo chmod 2775 /var/lib/pioreactor/exports
sudo sh -c 'if [ -d /run/pioreactor/exports ]; then mv /run/pioreactor/exports/* /var/lib/pioreactor/exports/ 2>/dev/null || true; fi'
sudo rm -rf /run/pioreactor/exports
sudo ln -s /var/lib/pioreactor/exports /run/pioreactor/exports
sudo systemctl start pioreactor-web.target

This will move the “in-memory” export directory to the SD card (until the next power-cycle, btw). Then try the above solution again.


In the next release, we’ll add better support for large exports!