-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue with WMS loading >2GB variables #43
Comments
It looks like there is an issue somewhere deep down in the ncWMS code when it constructs a lookup table for quick mapping lat/lon values to array indexes. This particular version of ncWMS isn't maintained any more. However, in the next version of the TDS (v5.0.0), we are using the latest version from |
Thanks for your quick reply! Yes, upgrading TDS (v5.0.0) was the idea that @rsignell-usgs had offered in a side chat. I was wary about using beta software but will be happy to give it a try and report back. Thanks again! |
I can totally understand being wary. For WMS, there are a few things that are not working at this point. First, customization of the WMS via |
@jbzambon, note you can also test on ncwms2 by running a standalone docker container if you prefer: |
I was able to get a bare THREDDS v.5.0.0 beta installed on a fresh AWS instance. Unfortunately, I'm getting an error loading WMS, although not the same error. The page that loads makes no reference to 2^31...
Interestingly, threddsServlet.log doesn't show anything. Apache's log (localhost_access_log.2019-07-30.txt ) shows OPeNDAP seems to work, again. Endpoint: http://54.81.33.213:8080/thredds/dodsC/nwa/v1/NWA_v1_best.ncd.html WMS Endpoint: http://54.81.33.213:8080/thredds/wms/nwa/v1/NWA_v1_best.ncd?service=WMS&version=1.3.0&request=GetCapabilities (This is the same exact data file that was loaded on the v.4 THREDDS instance.) Any more ideas? Thanks again! |
So I think the failing WMS response is correct and very close to the one in 4.6, although not super helpful on its own. If I look at the OPeNDAP output for lat and lon (with a stride of 20 for the sake of response size): both have zero for all of their values. In this case, WMS is wigging out because there are effectively no latitudes and longitudes, so it cannot create a lookup table between index space and lat/lon space. Because this collection is setup as an FMRC and only exposing the best dataset, it's hard to figure out where things are going wrong from this end (I'd really need to see the FMRC config xml and some of the dataset granules). |
Here's some things that might help (?) Please let me know if there is anything else I can send. Thanks again! fmrc.log...
catalog.xml...
|
What do each of the individual netCDF files look like? How are they laid out on disk? If you update the |
Replaced "Best" with "Files" in
Currently, there is only one file in the directory that's being sampled. Here's the ncdump of that file...
Thanks again! |
I wonder whether @jonblower has ideas here... |
Looks like a good old fashion bug, which appears to have been introduced while getting rid of a one line if statement. Specifically here: netcdf-java/cdm/src/main/java/ucar/nc2/ft/fmrc/FmrcDataset.java Lines 283 to 287 in b935573
A one line if statement to control a log message turned into a full if / else statement by accident. The net effect is that the data from the lat/lon variables, because they contain more than 10 million points, are not being cached (thus all values were zero in the virtual FMRC dataset). That's an easy fix, and I can backport it to v4.6 as well. |
Transferring issue to https://github.com/Unidata/netcdf-java |
Seems to be working great, thanks! |
I am attempting to load a large dataset (4200x4100) with 21 timesteps into WMS using THREDDS. When I do so, it fails and the page returns...
and threddsServlet.log returns...
2019-07-30T01:56:09.069 +0000 [ 30415][ 5] ERROR - thredds.server.wms.ThreddsWmsController - dispatchWmsRequest(): Exception: java.lang.IllegalStateException: nLon (=0) and nLat (=2147483647) must be positive and > 0
I notice that 2147483647 is 2^31 (signed 32-bit number). Does WMS handle arrays as 32-bit in some locations that's causing us to run into this limit? Note that OPeNDAP handles this dataset without issue and if I subset the dataset with a stride of 4 (1050x1025), WMS is also able to run without issue.
I have put the datasets on AWS for inspection.
OPeNDAP endpoint... http://54.158.195.139:8080/thredds/dodsC/nwa/v1/NWA_v1_best.ncd.html
WMS endpoint...
http://54.158.195.139:8080/thredds/wms/nwa/v1/NWA_v1_best.ncd?service=WMS&version=1.3.0&request=GetCapabilities
Thanks!
-Joe
The text was updated successfully, but these errors were encountered: