From 56451503c55ef6e5f67fc3bb710f9e5b649b1af2 Mon Sep 17 00:00:00 2001 From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com> Date: Tue, 1 Aug 2023 23:16:11 -0500 Subject: Fix loading plugin fails with missing directory GH issue #3248 (#3315) --- release_docs/RELEASE.txt | 9 ++++++++- src/H5PLpath.c | 3 +-- test/filter_plugin.c | 6 ++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index a959fa9..c382af0 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -169,9 +169,16 @@ New Features Library: -------- + - Change the error handling for a not found path in the find plugin process. + + While attempting to load a plugin the HDF5 library will fail if one of the + directories in the plugin paths does not exist, even if there are more paths + to check. Instead of exiting the function with an error, just logged the error + and continue processing the list of paths to check. + - Implemented support for temporary security credentials for the Read-Only S3 (ROS3) file driver. - + When using temporary security credentials, one also needs to specify a session/security token next to the access key id and secret access key. This token can be specified by the new API function H5Pset_fapl_ros3_token(). diff --git a/src/H5PLpath.c b/src/H5PLpath.c index c47c6fa..5681c1f 100644 --- a/src/H5PLpath.c +++ b/src/H5PLpath.c @@ -801,8 +801,7 @@ H5PL__find_plugin_in_path_table(const H5PL_search_params_t *search_params, hbool /* Search for the plugin in this path */ if (H5PL__find_plugin_in_path(search_params, found, H5PL_paths_g[u], plugin_info) < 0) - HGOTO_ERROR(H5E_PLUGIN, H5E_CANTGET, FAIL, "search in path %s encountered an error", - H5PL_paths_g[u]) + HERROR(H5E_PLUGIN, H5E_CANTGET, "search in path %s encountered an error", H5PL_paths_g[u]); /* Break out if found */ if (*found) { diff --git a/test/filter_plugin.c b/test/filter_plugin.c index 64230e5..6bd63d5 100644 --- a/test/filter_plugin.c +++ b/test/filter_plugin.c @@ -1524,6 +1524,12 @@ main(void) else my_fapl_id = old_ff_fapl_id; + /* Add extra path to check for correct error process */ + if (H5PLprepend("bogus") < 0) { + fprintf(stderr, "Could not prepend path:bogus\n"); + TEST_ERROR; + } + /* Reopen the file for testing data reading */ if ((fid = H5Fopen(filename, H5F_ACC_RDONLY, my_fapl_id)) < 0) TEST_ERROR; -- cgit v0.12