Build: #7 was successful

Job: Default Job was successful

Stages & jobs

  1. Default Stage

Code commits

casa6 - no submodules

  • Rui Xue <rx.astro@gmail.com>

    Rui Xue <rx.astro@gmail.com> 63a325ea22ef235dbdf4cc525f9b6cdf1e3203c3

    CAS-14756: Fix AutoLocking and `FilebufIO::readBlock` race condition in MPI parallel I/O
    This commit addresses potential I/O serialization and metadata corruption
    issues encountered when multiple MPI workers concurrently write to shared
    image cubes during the major cycle.

    Two primary fixes are introduced:
    1. Replaced `AutoNoReadLocking` with `AutoLocking`: When `inspectInterval=1.0`
       was used with `AutoNoReadLocking`, workers were permitted to read `table.f0`
       metadata without an explicitly synchronized read lock. This caused race
       conditions where one worker's metadata rewrite over `table.f0` (a non-atomic
       write >4KB) would crash another worker attempting to open the table,
       triggering a `FilebufIO::readBlock` exception. `AutoLocking` ensures the
       opening phase explicitly acquires the read lock, guaranteeing a coherent state.

    2. Release file locks during exception sleeps: When a `FilebufIO::readBlock`
       exception *is* caught natively (requiring the 50ms re-attempt sleep cycle),
       `im=nullptr` is now instantly called. This manually destructs the `PagedImage`
       pointer and surrenders the process's write lock *before* triggering the sleep.
       Previously, the write lock was retained during the 50ms delay, which
       needlessly serialized all other parallel workers awaiting their flush cycle.

    This commit further reduces the risk of random filesystem collisions on
    table re-open while enabling maximal tile streaming parallelism across workers.