Re: [netcdf-java] Multi-threading and gridsets - help

Hi Christian,

Thanks for clarifying that, seems I can get away without cacheing. From the 
tutorial it seemed it was required for multi-threading. I’ve found the error of 
my ways also, not related to netcdf, as I was using am utable index to access 
the GeoGrid. Once I made this immutable (I’m coding my app in Scala), it seems 
to have become thread safe.

I’m a big fan of these GridDataset libraries, makes accessing oceanography 
netcdf files a breeze!
STEVE HAWES | PhD Candidate
Coastal & Marine Ecosystems Group (CMEG) | School of Life & Environmental 
Sciences (SOLES) | Faculty of Science
THE UNIVERSITY OF SYDNEY
Rm 114, Edgeworth-David Bldg A11 | The University of Sydney | NSW | 2006
M +61 439 881 324
E steven.hawes@xxxxxxxxxxxxx<mailto:firstname.surname@xxxxxxxxxxxxx>  | W 
sydney.edu.au<http://sydney.edu.au>
Tweets @stevehawes
INSPIRED – the Campaign to support the University of Sydney

sydney.edu.au/inspired<http://inspired.sydney.edu.au/>
CRICOS 00026A
This email plus any attachments to it are confidential. Any unauthorised use is 
strictly prohibited. If you receive this email in error, please delete it and 
any attachments.

Please think of our environment and only print this e-mail if necessary.

On 29 Jul 2017, at 4:20 AM, Christian Ward-Garrison 
<cwardgar@xxxxxxxx<mailto:cwardgar@xxxxxxxx>> wrote:

Hi Steven,

Are you sure you need NetcdfDataset.initNetcdfFileCache() ? It is generally 
used when you expect to access the same file multiple times and you don't want 
to re-read it and re-construct its metadata each time. Is that your use case?

As for the threading issue, can you provide a complete example that 
demonstrates it, including code and resources?

Thanks,
Christian

On Fri, Jul 28, 2017 at 12:49 AM, Steven Hawes 
<steven.hawes@xxxxxxxxxxxxx<mailto:steven.hawes@xxxxxxxxxxxxx>> wrote:
Hello,

I’m having trouble with threading and using GridDataSets. I was wondering what 
I am doing wrong.

Using the tutorial I initially create the file cache as such

NetcdfDataset.initNetcdfFileCache(...)

Then I’m opening the grid data set using the open command, which uses the 
NetcdfDataset.aquire… to use the file cache

GridDataset gds = ucar.nc2.dt.grid.GridDataset.open(location);

Then when I want to read the data from a grid I use:

Array data  = grid.readDataSlice(0, 0, xy[1], xy[0])

However, when running this code with threads, it throws out this exception 
(works fine with one thread). It appears to access 
ucar.unidata.io<http://ucar.unidata.io/>.RandomAccessFile.read, which I thought 
the cache prevented it from using?

java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 131006
at ucar.nc2.dt.grid.GeoGrid.readDataSlice(GeoGrid.java:609)
at ucar.nc2.dt.grid.GeoGrid.readDataSlice(GeoGrid.java:517)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 131006
at 
ucar.unidata.io<http://ucar.unidata.io/>.RandomAccessFile.read(RandomAccessFile.java:643)
at 
ucar.unidata.io<http://ucar.unidata.io/>.RandomAccessFile.readShort(RandomAccessFile.java:1115)
at 
ucar.unidata.io<http://ucar.unidata.io/>.RandomAccessFile.readShort(RandomAccessFile.java:1137)
at ucar.nc2.iosp.IospHelper.readData(IospHelper.java:123)
at ucar.nc2.iosp.IospHelper.readDataFill(IospHelper.java:79)
at ucar.nc2.iosp.netcdf3.N3raf.readData(N3raf.java:63)
at ucar.nc2.iosp.netcdf3.N3iosp.readData(N3iosp.java:484)
at ucar.nc2.NetcdfFile.readData(NetcdfFile.java:2020)
at ucar.nc2.Variable.reallyRead(Variable.java:913)
at ucar.nc2.Variable._read(Variable.java:898)
at ucar.nc2.Variable.read(Variable.java:709)
at ucar.nc2.dataset.VariableDS.reallyRead(VariableDS.java:557)
at ucar.nc2.dataset.VariableDS._read(VariableDS.java:537)
at ucar.nc2.SectionReader.reallyRead(SectionReader.java:75)
at ucar.nc2.dataset.VariableDS._read(VariableDS.java:537)
at ucar.nc2.Variable.read(Variable.java:709)
at ucar.nc2.Variable.read(Variable.java:655)
at ucar.nc2.dt.grid.GeoGrid.readDataSlice(GeoGrid.java:606)
at ucar.nc2.dt.grid.GeoGrid.readDataSlice(GeoGrid.java:517)

Is there something I am missing?
STEVE HAWES | PhD Candidate
Coastal & Marine Ecosystems Group (CMEG) | School of Life & Environmental 
Sciences (SOLES) | Faculty of Science
THE UNIVERSITY OF SYDNEY
Rm 114, Edgeworth-David Bldg A11 | The University of Sydney | NSW | 2006
M +61 439 881 324<tel:+61%20439%20881%20324>
E steven.hawes@xxxxxxxxxxxxx<mailto:firstname.surname@xxxxxxxxxxxxx>  | W 
sydney.edu.au<http://sydney.edu.au/>
Tweets @stevehawes
INSPIRED – the Campaign to support the University of Sydney

sydney.edu.au/inspired<http://inspired.sydney.edu.au/>
CRICOS 00026A
This email plus any attachments to it are confidential. Any unauthorised use is 
strictly prohibited. If you receive this email in error, please delete it and 
any attachments.

Please think of our environment and only print this e-mail if necessary.


_______________________________________________
NOTE: All exchanges posted to Unidata maintained email lists are
recorded in the Unidata inquiry tracking system and made publicly
available through the web.  Users who post to any of the lists we
maintain are reminded to remove any personal information that they
do not want to be made public.


netcdf-java mailing list
netcdf-java@xxxxxxxxxxxxxxxx<mailto:netcdf-java@xxxxxxxxxxxxxxxx>
For list information or to unsubscribe, visit: 
http://www.unidata.ucar.edu/mailing_lists/


  • 2017 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: