There are currently two types of files produced by BLISS:
- the HDF5 files produced by LIMA, containing images
- the HDF5 files produced by the Nexus writer, containing all other data
The HDF5 file and parent directories are created by the Nexus writer and are therefore owned by the user under which it is running. Subdirectories are created by the BLISS session (e.g. directories for lima data) and are therefore owned by the user under which the BLISS session is running. Files in those subdirectories are created by the device servers (e.g. LIMA) and are therefore owned by their associated users.
Nexus file writer¶
The Nexus writer holds the HDF5 file open in append mode for the duration of the scan. The HDF5 file is locked which means that
The HDF5 file cannot be accessed during the scan unless you bypass the file lock.
If the HDF5 file is opened and locked by another process, new data cannot be written to this file, which will prevent scans from starting; you will get a “file locked” exception in BLISS.
Flushing is done regularly so readers can see the latest changes. Data from scans running in parallel and multi-top-master scans will write concurrently.
LIMA file writer¶
A full description on how to access HDF5 files, while they are being modified by a writer, can be found elsewhere.
In summary, to read the HDF5 files during a scan, they need to be opened in read-only mode while bypassing the file lock.
A reader should never open the HDF5 file in append mode (which is the default in
h5py). Even when only performing read operations, this will result in a corrupted file!
A reader which locks the HDF5 file (this happens by default, even in read-only mode) will prevent the Nexus writer from accessing the file and scans in BLISS will be prevented from starting!