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/