The dmrVersion = 1 | 2 attribute element within the dap response tells client APIs whether the data in the dap response is serialized according to the dap4 spec (dmrVersion=2) or if the data is serialized with Group data being serialized first (dmrVersion=1). The latest versions of the bes serializes data according to dmrVersion=2. See for example: http://test.opendap.org/opendap/dap4/SimpleGroup.nc4.h5.dmr.xml, which corresponds to Hyrax (1.17.1-691)
There is an issue, however, for Hyrax in the Cloud when there is a dmrpp that is "old". For example, this TEMPO example:
https://opendap.earthdata.nasa.gov/collections/C2930764281-LARC_CLOUD/granules/TEMPO_O3TOT_L3_V03_20250831T232841Z_S016.nc.dmr
The server has the version Hyrax (1.17.1-679). I ran that Hyrax version locally for a file with groups and the dmr has the attribute dmrVersion=2 meaning it fully supports it.
The issue is that, as in the TEMPO example above, the dmrVersion=1 in the dap response, BUT the data is serialized according to dmrVersion=2. As a result, data inside groups is deserialized incorrectly. IF I manually ignore this attribute in the dap response, and deserialize the dap response according to dmrVersion=2, the resulting data is correct.
@ndp-opendap mentioned there must be a caching issue, with the older dmrpp "next to the file". I looked at the DMRpp and indeed it has the dmrVersion=1 attribute, even though that version of Hyrax imposes the dmrVersion=2 serialization of the data.
<Dataset dapVersion="4.0"
dmrVersion="1.0"
name="TEMPO_O3TOT_L3_V03_20250831T232841Z_S016.nc"
...
dmrpp:trust="true" dmrpp:version="3.21.1-367>
Note that dmrpp version, corresponding to an "older" bes/hyrax (currently bes-3.21.1-1060).
The
dmrVersion = 1 | 2attribute element within the dap response tells client APIs whether the data in the dap response is serialized according to the dap4 spec (dmrVersion=2) or if the data is serialized with Group data being serialized first (dmrVersion=1). The latest versions of the bes serializes data according todmrVersion=2. See for example: http://test.opendap.org/opendap/dap4/SimpleGroup.nc4.h5.dmr.xml, which corresponds toHyrax (1.17.1-691)There is an issue, however, for Hyrax in the Cloud when there is a dmrpp that is "old". For example, this TEMPO example:
https://opendap.earthdata.nasa.gov/collections/C2930764281-LARC_CLOUD/granules/TEMPO_O3TOT_L3_V03_20250831T232841Z_S016.nc.dmr
The server has the version Hyrax (1.17.1-679). I ran that Hyrax version locally for a file with groups and the dmr has the attribute
dmrVersion=2meaning it fully supports it.The issue is that, as in the TEMPO example above, the
dmrVersion=1in the dap response, BUT the data is serialized according todmrVersion=2. As a result, data inside groups is deserialized incorrectly. IF I manually ignore this attribute in the dap response, and deserialize the dap response according todmrVersion=2, the resulting data is correct.@ndp-opendap mentioned there must be a caching issue, with the older dmrpp "next to the file". I looked at the DMRpp and indeed it has the
dmrVersion=1attribute, even though that version of Hyrax imposes thedmrVersion=2serialization of the data.Note that dmrpp version, corresponding to an "older" bes/hyrax (currently
bes-3.21.1-1060).