From 14eb8f87f4bb4de52a633dec6427a0b75118c33b Mon Sep 17 00:00:00 2001 From: jhendersonHDF Date: Tue, 8 Aug 2023 13:02:19 -0500 Subject: Work around a testphdf5 failure on Cray MPICH machines (#3361) --- release_docs/RELEASE.txt | 11 +++++++++++ testpar/t_file.c | 17 ++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 320d3b1..8b27f9c 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -689,6 +689,17 @@ Bug Fixes since HDF5-1.14.0 release Testing ------- + - Fixed a testing failure in testphdf5 on Cray machines + + On some Cray machines, what appears to be a bug in Cray MPICH was causing + calls to H5Fis_accessible to create a 0-byte file with strange Unix + permissions. This was causing an H5Fdelete file deletion test in the + testphdf5 program to fail due to a just-deleted HDF5 file appearing to + still be accessible on the file system. The issue in Cray MPICH has been + worked around for the time being by resetting the MPI_Info object on the + File Access Property List used to MPI_INFO_NULL before passing it to the + H5Fis_accessible call. + - A bug was fixed in the HDF5 API test random datatype generation code A bug in the random datatype generation code could cause test failures diff --git a/testpar/t_file.c b/testpar/t_file.c index 3264ad5..314a60c 100644 --- a/testpar/t_file.c +++ b/testpar/t_file.c @@ -986,6 +986,15 @@ test_delete(void) ret = H5Fdelete(filename, fapl_id); VRFY((SUCCEED == ret), "H5Fdelete"); + /* + * Work around a Cray MPICH bug that causes + * H5Fis_accessible to re-create the just-deleted + * file as a 0-byte file with strange Unix + * permissions, causing the routine to return + * false here instead of FAIL. + */ + H5Pset_fapl_mpio(fapl_id, comm, info); + /* Verify that the file is NO LONGER an HDF5 file */ /* This should fail since there is no file */ H5E_BEGIN_TRY @@ -993,13 +1002,7 @@ test_delete(void) is_accessible = H5Fis_accessible(filename, fapl_id); } H5E_END_TRY - - if (FALSE == is_accessible) { - VRFY((FALSE == is_accessible), "H5Fis_accessible returned FALSE"); - } - if (FAIL == is_accessible) { - VRFY((FAIL == is_accessible), "H5Fis_accessible failed"); - } + VRFY((FAIL == is_accessible), "H5Fis_accessible failed as expected"); /* Release file-access plist */ ret = H5Pclose(fapl_id); -- cgit v0.12