Commit Graph

7352 Commits

Author SHA1 Message Date
Dennis Heimbigner
59e04ae071 This PR adds EXPERIMENTAL support for accessing data in the
cloud using a variant of the Zarr protocol and storage
format. This enhancement is generically referred to as "NCZarr".

The data model supported by NCZarr is netcdf-4 minus the user-defined
types and the String type. In this sense it is similar to the CDF-5
data model.

More detailed information about enabling and using NCZarr is
described in the document NUG/nczarr.md and in a
[Unidata Developer's blog entry](https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in).

WARNING: this code has had limited testing, so do use this version
for production work. Also, performance improvements are ongoing.
Note especially the following platform matrix of successful tests:

Platform | Build System | S3 support
------------------------------------
Linux+gcc      | Automake     | yes
Linux+gcc      | CMake        | yes
Visual Studio  | CMake        | no

Additionally, and as a consequence of the addition of NCZarr,
major changes have been made to the Filter API. NOTE: NCZarr
does not yet support filters, but these changes are enablers for
that support in the future.  Note that it is possible
(probable?) that there will be some accidental reversions if the
changes here did not correctly mimic the existing filter testing.

In any case, previously filter ids and parameters were of type
unsigned int. In order to support the more general zarr filter
model, this was all converted to char*.  The old HDF5-specific,
unsigned int operations are still supported but they are
wrappers around the new, char* based nc_filterx_XXX functions.
This entailed at least the following changes:
1. Added the files libdispatch/dfilterx.c and include/ncfilter.h
2. Some filterx utilities have been moved to libdispatch/daux.c
3. A new entry, "filter_actions" was added to the NCDispatch table
   and the version bumped.
4. An overly complex set of structs was created to support funnelling
   all of the filterx operations thru a single dispatch
   "filter_actions" entry.
5. Move common code to from libhdf5 to libsrc4 so that it is accessible
   to nczarr.

Changes directly related to Zarr:
1. Modified CMakeList.txt and configure.ac to support both C and C++
   -- this is in support of S3 support via the awd-sdk libraries.
2. Define a size64_t type to support nczarr.
3. More reworking of libdispatch/dinfermodel.c to
   support zarr and to regularize the structure of the fragments
   section of a URL.

Changes not directly related to Zarr:
1. Make client-side filter registration be conditional, with default off.
2. Hack include/nc4internal.h to make some flags added by Ed be unique:
   e.g. NC_CREAT, NC_INDEF, etc.
3. cleanup include/nchttp.h and libdispatch/dhttp.c.
4. Misc. changes to support compiling under Visual Studio including:
   * Better testing under windows for dirent.h and opendir and closedir.
5. Misc. changes to the oc2 code to support various libcurl CURLOPT flags
   and to centralize error reporting.
6. By default, suppress the vlen tests that have unfixed memory leaks; add option to enable them.
7. Make part of the nc_test/test_byterange.sh test be contingent on remotetest.unidata.ucar.edu being accessible.

Changes Left TO-DO:
1. fix provenance code, it is too HDF5 specific.
2020-06-28 18:02:47 -06:00
Ward Fisher
ba24e3c08e
Merge pull request #1765 from opoplawski/hdf5_zlib
Fix wrong header include in testing HDF5 for zlib
2020-06-25 16:31:43 -06:00
Ward Fisher
7c4745508a
Merge pull request #1768 from NOAA-GSD/ejh_fix_plugins_makefile
fixed the setting of AM_LDFLAGS
2020-06-25 16:04:34 -06:00
Ward Fisher
e07e24b7a0
Merge pull request #1764 from DennisHeimbigner/dfalt.dmh
Fix nccopy chunking to use default chunking
2020-06-25 15:39:36 -06:00
Dennis Heimbigner
04dbf30a5e Update release notes 2020-06-25 11:24:57 -06:00
Edward Hartnett
1ce19f15b3 fixed the setting of AM_LDFLAGS 2020-06-25 10:22:33 -06:00
Orion Poplawski
b3e42ac54d Fix wrong header include in testing HDF5 for zlib 2020-06-24 20:30:55 -06:00
Dennis Heimbigner
c195e24f2a Fix nccopy chunking to use default chunking
re: https://github.com/Unidata/netcdf-c/issues/1763

The nccopy program incorrectly set default chunking parameters
to use full dimension lengths. Instead, it should use the
values computed by the default chunking values as defined
in nc4_default_chunksizes2 in the netcdf library.

Solution: Revert to the old behavior.
2020-06-24 16:34:32 -06:00
Ward Fisher
ed421f2233
Merge pull request #1754 from LProx2020/README-LINK-PATCH
Updated README.md Links
2020-06-11 13:38:35 -06:00
Ward Fisher
1bf99871bd
Merge pull request #1755 from gsjaardema/patch-43
Avoid potential integer overrun
2020-06-11 12:38:44 -06:00
Greg Sjaardema
edf0ca6c98
Avoid potential integer overrun
It is possible for the values stored to `file_value_size` to overrun the storage capacity of a 32-bit integer.  The value does need to store negative values potentially, so can be `size_t` or `hsize_t`, so use the `hssize_t` which is a signed 64-bit value.  Could also use `ssize_t`, but that is not used in this routine...
2020-06-10 15:42:22 -06:00
LProx2020
e4e0e93402
Updated README.md Links
Reference: Issue #1711
-The proper link was provided for the Language Independent User's Guide.
-The proper link was provided for the NetCDF-Java/Common Data Model Library
2020-06-04 14:16:30 -04:00
Ward Fisher
b36c9c5b3f
Merge pull request #1747 from NOAA-GSD/ejh_fix
fixed LDFLAFS in plugins Makefile.am, also fixed warning in tst_h_vars.c, restore NC_NOTNC3_get|put_varm() functions
2020-06-03 13:47:39 -06:00
Ward Fisher
386e269528
Merge pull request #1752 from sayerhs/master
Fix parallel NetCDF checks in configure.ac for spectrum MPI
2020-06-03 13:25:01 -06:00
Shreyas Ananthan
e11bc3509d Fix parallel NetCDF checks in configure.ac for spectrum MPI
Closes #1751
2020-06-03 13:13:35 -04:00
Edward Hartnett
87226c4879 readded NOTNC3 varm functions to dispatch 2020-06-03 05:55:30 -06:00
Edward Hartnett
9f6fc00f98 changed back to totally dead 2020-06-02 13:59:08 -06:00
Edward Hartnett
97c2335adc changed to only MOSTLY dead 2020-06-02 07:51:59 -06:00
Edward Hartnett
993c8259c2 fixed LDFLAFS in plugins Makefile.am, also fixed warning in tst_h_vars.c 2020-06-02 07:34:46 -06:00
Ward Fisher
bc77f3c199
Merge pull request #1742 from bombipappoo/fix-keyword
Fix incorrect keywords.
2020-06-01 14:05:35 -06:00
Ward Fisher
18f43d646e
Merge pull request #1744 from DennisHeimbigner/dap4memleaks.dmh
Fix some memory leaks in libdap4
2020-06-01 13:16:27 -06:00
Dennis Heimbigner
7ec762ea8d Fix some memleaks in libdap4
Discovered that there were some remaining memory leaks
in the dap4 code as a result of PR https://github.com/Unidata/netcdf-c/pull/1743.
Found and fixed.
2020-06-01 12:35:24 -06:00
Ward Fisher
4cb66b96c5
Merge pull request #1743 from DennisHeimbigner/hyrax4fix.dmh
Fix some protocol differences between netcdf-c and the Hyrax server.
2020-06-01 10:51:22 -06:00
Dennis Heimbigner
0b3f8dddf9 Make CMake tests work for dap4 2020-06-01 09:27:57 -06:00
Dennis Heimbigner
07e1620f53 Add more dap4 tests for CMake 2020-05-31 13:25:53 -06:00
Dennis Heimbigner
6e715135ba Fix windows \r problem 2020-05-30 20:14:45 -06:00
Dennis Heimbigner
65414eeaa4 Fix some protocol differences between netcdf-c and the Hyrax server.
re: Partly addresses issue https://github.com/Unidata/netcdf-c/issues/1712.

1. Turn on Hyrax Hack to accept Hyrax style attribute containers.
2. Support Url type as alias for String.
3. Accept the special attribute, "__DAP4_Checksum_CRC32",
   to control per-variable checksums.
4. Make _DAP4_xxx attributes be reserved and only accessible
   by name (ala _SuperBlock attribute).
5. Fix handling of checksums. There is a hack in the code
   that uses an extra flag in the chunk header to indicate
   that all variables have checksums. This violates the spec
   and will be removed once it is possible to regenerate the
   test cases.

Note that checksumming with the Hyrax test server has not
been tested. This, along with some other probable inconsistencies,
needs fixing when OPeNDAP and Unidata can agree on the proper
specification. Testing will be included.
2020-05-30 17:36:25 -06:00
bombipappoo
e0b37bc31f Fix incorrect keywords. 2020-05-30 14:22:37 +09:00
Ward Fisher
43417c9f7f
Merge pull request #1741 from LProx2020/patch-1
Updating Links in FAQ.md
2020-05-29 12:48:14 -06:00
LProx2020
316dfea205
Update FAQ.md
This edit updates the broken links discussed in Issue #1696
2020-05-29 11:58:38 -04:00
Ward Fisher
39636b3f23
Merge pull request #1738 from DennisHeimbigner/xgetoptfix.dmh
Condition XGetOpt on MSC_VER not WIN32
2020-05-26 16:23:45 -06:00
Dennis Heimbigner
0b65f608cc Condition XGetOpt on MSC_VER not WIN32 2020-05-25 10:45:47 -06:00
Ward Fisher
c2ea69df23
Merge pull request #1732 from DennisHeimbigner/vsfix.dmh
Fix undefined references when using Visual Studio
2020-05-19 16:21:04 -06:00
Ward Fisher
11799a5c24
Merge pull request #1731 from ZedThree/fix-fedora-hdf5
Fix wrong header include in testing HDF5 for zlib
2020-05-19 15:35:17 -06:00
Dennis Heimbigner
c68c4c804d Fix undefined references when using Visual Studio
Fix Issue https://github.com/Unidata/netcdf-c/issues/1725.
Replace PR https://github.com/Unidata/netcdf-c/pull/1726
Also replace PR https://github.com/Unidata/netcdf-c/pull/1694

The general problem is that under Visual Studio, we are seeing
a number of undefined reference and other scoping errors.
The reason is that the code is not properly using Visual Studio
_declspec() declarations.

The basic solution is to ensure that when compiling the code itself
one needs to ensure that _declspec(dllexport) is used. There
are several sets of macros to handle this, but they all rely
on the flag DLL_EXPORT being define when the code is compiled,
but not being defined when the code is used via a .h file.

As a test, I modified XGetOpt.c to build properly. I also
fixed the oc2 library to properly _declspec things like ocdebug.

I also made some misc. changes to get all the tests to run
if cygwin is installed (to get bash, sed, etc).

Misc. Changes:
* Put XGetOpt.c into libsrc and copy at build time
  to the other directories where it is needed.
2020-05-18 19:36:28 -06:00
Dennis Heimbigner
173339759f Merge remote-tracking branch 'Unidata/master' 2020-05-16 15:13:28 -06:00
Peter Hill
e1ef7a958c Fix wrong header include in testing HDF5 for zlib 2020-05-16 12:45:13 +01:00
Ward Fisher
0ab5b1bab0
Merge pull request #1727 from ddirks/nav-tree_fix
Ensure nav-tree is the correct height
2020-05-14 17:19:34 -06:00
Ward Fisher
afd110ba6b
Merge pull request #1728 from lesserwhirls/nctime
Improve ncdump handling of time units
2020-05-14 15:58:55 -06:00
Dennis Heimbigner
2aef2d2e9a restore 2020-05-14 14:55:38 -06:00
Dennis Heimbigner
518d70ef64 ocdebug 2020-05-14 14:44:48 -06:00
Dennis Heimbigner
9e5f08d0e1 Merge remote-tracking branch 'Unidata/master' 2020-05-14 10:36:23 -06:00
Sean Arms
7e2408680c Define strncasecmp as _strnicmp on Windows 2020-05-14 07:27:30 -06:00
Sean Arms
c37cc13dca Treat time units as case-insensitive in ncdump
Enables ncdump -t (-i) to recognize a wider variety of time related units
and calendar names. This brings ncdump closer to what it advertises in its
man page regarding its understanding of udunits compliant time units.
2020-05-14 06:48:03 -06:00
Sean Arms
9c84724d5e Test ncdump time unit name case-insensitivity
As ugly as it is, "DaYs since ..." is a valid UDUNITS unit.
Only symbols are case-sensitive in UDUNITS.
2020-05-14 06:42:12 -06:00
Douglas Dirks
ccdac4bf60 Ensure that the nav-tree extends to the full height of the content area. The footer must be enclosed in a div element with the id="nav-path" for this to work. 2020-05-13 16:45:35 -06:00
Ward Fisher
fc1d75f842
Merge pull request #1721 from gsjaardema/patch-39
Different method of setting Parallel Filters variables
2020-05-13 15:05:34 -06:00
Dennis Heimbigner
7ad0d97bce Merge remote-tracking branch 'Unidata/master' 2020-05-12 19:42:09 -06:00
Ward Fisher
9f6981bc6b
Merge pull request #1719 from DennisHeimbigner/filterrepeat.dmh
Allow redefinition of variable filters
2020-05-12 16:03:51 -06:00
Ward Fisher
3214967163
Merge pull request #1724 from gsjaardema/patch-41
Fix CMake generation of netcdf_meta.h
2020-05-12 16:01:35 -06:00