Help Request regarding Java 3.3.2


#1

Greetings,
We have a Java application, and we were using the old 2.6.1 HDF Java libraries for our day-to-day activity. But recently due to some changing requirements, we have to change it to 3.3.2. We have an ETL process which consists of number of scripts that perform read/write functions (mostly read) to HDF5 files. ETL is running on Linux environment (tens of nodes) and it is working completely fine with 2.6.1 version. But, with 3.3.2 version, it’s throwing out several errors when trying to read HDF5 files. However, the odd thing is that it DOES read the attributes but dumps out errors related to C libraries.

Here are some of the log errors: INFO | jvm 1 || getting the location:/SETTINGS/CHANNEL_01/LOCATION INFO | jvm 1 || HDF5-DIAG: Error detected in HDF5 (1.8.19) thread 0: INFO | jvm 1 || #000: /scr/home/buildbot/buildbot/kituo-slave/hdf518-StdRelease-code-centos7/build/hdfsrc/src/H5A.c line 474 in H5Aopen_by_name(): can't open attribute INFO | jvm 1 || major: Attribute INFO | jvm 1 || minor: Can't open object

INFO | jvm 1 || #001: /scr/home/buildbot/buildbot/kituo-slave/hdf518-StdRelease-code-centos7/build/hdfsrc/src/H5Aint.c li
ne 454 in H5A_open_by_name(): unable to load attribute info from object header
INFO | jvm 1 || major: Attribute
INFO | jvm 1 || minor: Unable to initialize object

INFO | jvm 1 || #002: /scr/home/buildbot/buildbot/kituo-slave/hdf518-StdRelease-code-centos7/build/hdfsrc/src/H5Oattribut
e.c line 535 in H5O_attr_open_by_name(): can’t locate attribute: ‘PALETTE’
INFO | jvm 1 || major: Attribute
INFO | jvm 1 || minor: Object not found
INFO | jvm 1 || getPaletteRefs(): Palette attribute search failed: Expected
INFO | jvm 1 || hdf.hdf5lib.exceptions.HDF5AttributeException: Object not found
INFO | jvm 1 || at hdf.hdf5lib.H5._H5Aopen_by_name(Native Method)
INFO | jvm 1 || at hdf.hdf5lib.H5.H5Aopen_by_name(H5.java:1064)
INFO | jvm 1 || at hdf.object.h5.H5ScalarDS.getPaletteRefs(Unknown Source)
INFO | jvm 1 || at hdf.object.h5.H5ScalarDS.init(Unknown Source)

INFO | jvm 1 | | init(): H5Tget_class: 3 is Array 10
INFO | jvm 1 | | HDF5-DIAG: Error detected in HDF5 (1.8.19) thread 0:
INFO | jvm 1 | | #000: /scr/home/buildbot/buildbot/kituo-slave/hdf518-StdRelease-code-centos7/build/hdfsrc/src/H5F.c line
701 in H5Fflush(): not a file or file object
INFO | jvm 1 | | major: Invalid arguments to routine
INFO | jvm 1 | | minor: Inappropriate type
INFO | jvm 1 | | close(): H5Fflush(did 1186443) failure:
INFO | jvm 1 | | hdf.hdf5lib.exceptions.HDF5FunctionArgumentException: Inappropriate type
INFO | jvm 1 | | at hdf.hdf5lib.H5.H5Fflush(Native Method)

Any help on this matter would be greatly appreciated.


#2

3.x versions fixed the exception handling in the java code. Prior versions (2.6.1) would silently ignore exceptions.
Also added logging, which is the log you are showing. In that log, all those lines start with INFO and shows what 2.6.1 was likely doing without advertising it.

In this particular case, anytime an H5ScalarDS.init call happened it would also attempt to read if the dataset was an image. The image CF; checking for the three attributes that indicate an image. If you look at the stack, you will see the failure to find an Attribute with the name PALETTE and that the Exception was “Expected”.

No unexpected errors, and there should be a way to switch the logging to NOP or just ignore the log.