I have a program that is a lot more complicated than I like (sadly, there's not a lot I can do about that), that I've recently converted to using HDF as its data store (from flat files). It also uses WebSphere MQ middleware to publish the results from the processing it does, so there's a bit of a loop. Program 1 generates data and publishes it, program 2 gets that published data and writes it to an HDF file, which program 1 in turn will occasionally read.
There's a lot of data involved, so using an internal store isn't really an option, and the HDF structure gives the advantage of being able to quickly find exactly the data that's needed at the time. Other programs also use the data being published by program 1, so removing the publication wouldn't be an option.
Anyway, hopefully that's sufficient background. The problem I'm seeing at the moment is that program 1 eventually will try to read some data from the HDF file that will fail in:
H5Z_filter_deflate(): inflate() failed
major: Data filters
minor: Unable to initialize object
This continues until memory runs out.
The fact that 1) a read is failing when all other programs have not exhibited this problem since I modified program 2 to be very diligent about flushing its data to disc regularly, and 2) memory is consumed on repeated calls to the function in program 1 that's supposed to read the HDF file until it runs out; makes it look like I have the file open and the HDF library is caching the file's superblock, which is causing it to fail to read the data.
I'm definitely closing the HDF5 object handles used in that function and in all the other functions I've checked so far, so my question is this: how can I get the library to give me a list of open hids? I've looked through the library API documentation and found H5Inmembers, which appears to provide the ability to determine *how many* identifiers of a given type are open, and I found H5Fget_obj_ids which appears to give one the ability to find all open object IDs given an open file ID, but I don't see a way to start from nothing and get open file IDs, object, group, link, etc. IDs.
Any help would be appreciated