DAAC Home > Resources > News

News

THREDDS NetCDF Subsetting Service Bug Fixed

Submitted by ORNL DAAC Staff on
Image Media
Unidata TDS
Image Media
Caption

Unidata's THREDDS Data Server (TDS) is a web server that provides metadata and data access for scientific datasets, using a variety of remote data access protocols.

Summary: A bug in the Unidata THREDDS Data Server (TDS) may, in rare cases, have caused incorrect results to be returned, primarily for TDS users who make multiple, simultaneous requests of TDS via scripting or programming. This bug exists in the netCDF Subsetting Service (NCSS) for all TDS implementations (not just the ORNL DAAC) since version 4.2 (released in November, 2010) and is fixed in TDS 4.6.15.

Details: This issue was discovered by the Land Processes DAAC (LP DAAC) as a result of internal testing within their Application for Extracting and Exploring Analysis Ready Samples (AppEEARS) system. AppEEARS accessed the ORNL DAAC TDS to retrieve subsets of Daymet data, and the LP DAAC staff discovered that the same query of the ORNL DAAC TDS very rarely would return a different result. Together, the LP and ORNL DAAC teams used diagnostic code to identify the source of the error within the TDS NCSS. The issue was reported to Unidata, which promptly issued a new release of TDS (4.6.15).

According to Unidata's announcement of June 18, 2020 entitled "DiskCache2 Issue in the netCDF-Java Library", this bug was in how TDS manages temporary files and is in all versions since 4.2 (released in November 2010). It can be triggered if ALL of the following conditions are met:

  1. Multiple netCDF Subsetting Service requests arrive at the TDS server within the same millisecond
  2. The return type for the request is netCDF
  3. The requests are of the same type (e.g. grid subsets, or grid-as-point subset, or NCSS subsets on point collections)

These conditions are highly unlikely for the vast majority of TDS users, particularly those who use the interactive web interface. Scripts which make sequential calls, waiting for one result before sending the next request, should also be unaffected. Advanced scripts, making multiple calls using asynchronous methods (send all of the requests at once and then wait for all of the results to come back), can trigger this bug if two requests arrive at the TDS server within the same millisecond.

The ORNL DAAC has upgraded its TDS to the latest release of version 4.6.15, and encourages users who used advanced (asynchronous) scripts to retrieve data accessed data from ORNL DAAC TDS in the past to access the same data again through our newly upgraded TDS and verify your results in previous studies.

If you have any questions or concerns, please contact the ORNL DAAC User Services Office at uso@daac.ornl.gov.