diff options
author | jhendersonHDF <jhenderson@hdfgroup.org> | 2022-01-22 14:40:33 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-22 14:40:33 (GMT) |
commit | 99d3962a831167298ebc087f0b8e8b6209034d95 (patch) | |
tree | 5c879275551180b76d0b14be52cdbf0a1b98ad8c /src/H5Dcontig.c | |
parent | d45124d7085de2771c0157f5d48d71b21a10de1f (diff) | |
download | hdf5-99d3962a831167298ebc087f0b8e8b6209034d95.zip hdf5-99d3962a831167298ebc087f0b8e8b6209034d95.tar.gz hdf5-99d3962a831167298ebc087f0b8e8b6209034d95.tar.bz2 |
Parallel rank0 deadlock fixes (#1183)
* Fix several places where rank 0 can skip past collective MPI operations on failure
* Committing clang-format changes
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'src/H5Dcontig.c')
-rw-r--r-- | src/H5Dcontig.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/H5Dcontig.c b/src/H5Dcontig.c index 2ace14b..3828e8e 100644 --- a/src/H5Dcontig.c +++ b/src/H5Dcontig.c @@ -278,9 +278,16 @@ H5D__contig_fill(const H5D_io_info_t *io_info) if (using_mpi) { /* Write the chunks out from only one process */ /* !! Use the internal "independent" DXPL!! -QAK */ - if (H5_PAR_META_WRITE == mpi_rank) - if (H5D__contig_write_one(&ioinfo, offset, size) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset") + if (H5_PAR_META_WRITE == mpi_rank) { + if (H5D__contig_write_one(&ioinfo, offset, size) < 0) { + /* If writing fails, push an error and stop writing, but + * still participate in following MPI_Barrier. + */ + blocks_written = TRUE; + HDONE_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset") + break; + } + } /* Indicate that blocks are being written */ blocks_written = TRUE; |