summaryrefslogtreecommitdiffstats
path: root/src/H5Tprivate.h
diff options
context:
space:
mode:
authorjhendersonHDF <jhenderson@hdfgroup.org>2024-01-23 16:21:59 (GMT)
committerLarry Knox <lrknox@hdfgroup.org>2024-02-14 21:25:44 (GMT)
commitbafe24b6c3f19e47bdcca0e7995bdb989e57b4d1 (patch)
tree86c52f0be8a08f4fc6c24b8e426260dc92e7e2b1 /src/H5Tprivate.h
parent4298d0333b6148149a7ae28671b616676cdfe81c (diff)
downloadhdf5-bafe24b6c3f19e47bdcca0e7995bdb989e57b4d1.zip
hdf5-bafe24b6c3f19e47bdcca0e7995bdb989e57b4d1.tar.gz
hdf5-bafe24b6c3f19e47bdcca0e7995bdb989e57b4d1.tar.bz2
Remove cached datatype conversion path table entries on file close (#3942)
Remove cached datatype conversion path table entries on file close When performing datatype conversions during I/O, the library checks to see whether it can re-use a cached datatype conversion pathway by performing comparisons between the source and destination datatypes of the current operation and the source and destination datatypes associated with each cached datatype conversion pathway. For variable-length and reference datatypes, a comparison is made between the VOL object for the file associated with these datatypes, which may change as a file is closed and reopened. In workflows involving a loop that opens a file, performs I/O on an object with a variable-length or reference datatype and then closes the file, this can lead to constant memory usage growth as the library compares the file VOL objects between the datatypes as different and adds a new cached conversion pathway entry on each iteration during I/O. This is now fixed by clearing out any cached conversion pathway entries for variable-length or reference datatypes associated with a particular file when that file is closed.
Diffstat (limited to 'src/H5Tprivate.h')
-rw-r--r--src/H5Tprivate.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h
index 0332679..3120053 100644
--- a/src/H5Tprivate.h
+++ b/src/H5Tprivate.h
@@ -133,6 +133,8 @@ H5_DLL H5T_path_t *H5T_path_find(const H5T_t *src, const H5T_t *dst);
H5_DLL bool H5T_path_noop(const H5T_path_t *p);
H5_DLL H5T_bkg_t H5T_path_bkg(const H5T_path_t *p);
H5_DLL H5T_subset_info_t *H5T_path_compound_subset(const H5T_path_t *p);
+H5_DLL herr_t H5T_unregister(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst,
+ H5VL_object_t *owned_vol_obj, H5T_conv_t func);
H5_DLL herr_t H5T_convert(H5T_path_t *tpath, hid_t src_id, hid_t dst_id, size_t nelmts, size_t buf_stride,
size_t bkg_stride, void *buf, void *bkg);
H5_DLL herr_t H5T_reclaim(hid_t type_id, struct H5S_t *space, void *buf);