This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi, Version 6.2.0 of the LDM package is now available. Installation instructions can be found at http://my.unidata.ucar.edu/content/software/ldm/ldm-6.2.0 under the heading "Download, Installation, and Configuration". The release-notes and change-log are attached to this message. They can also be seen by going to the GForge webpages of the LDM Project at http://gforge.unidata.ucar.edu/projects/ldm/ and clicking on the appropriate book icon in the "Latest File Releases" section. The files CHANGE_LOG and RELEASE_NOTES also exist in the top-level source-directory of the source-code distribution. NOTE TO THE NWS: You don't have to replace your LDM-s unless you want to. Your old LDM-s should continue to work just fine. Regards, Steve Emmerson
Changes from LDM Version 6.1.0 to LDM Version 6.2.0 Added "rpc" subpackage -- replacing use of the native RPC library -- to work-around a bug in the AIX 5.1 ONC RPC 4.0 implementation, which fails when receiving large (~10 MB) RPC messages (i.e., most NIMAGE data wasn't being received). Modified product-queue (pq) module: Corrected bug in pq(3) module when inserting a data-product that has the same insertion-time as an already existing data-product. The insertion-time in now incremented by one microsecond to ensure unique keys in the time-map rather than using the byte-offset of the data-product. Hopefully, this will eliminate the rare occurrence in which a data-product is missed by a product-queue reader because it has the same insertion-time as the previous data-product in the product-queue but has a smaller byte-offset. Corrected fClr() and fMask() macros in file "pq/fbits.h" so that they correctly handle the case where the "flag" variable is smaller than the variable in question. This removes a problem creating product-queues with data-sections larger than (2^32)-1 bytes on systems where sizeof(size_t) == 8 and sizeof(unsigned) == 4. Made all programs that use regular-expressions convert all externally-specified pathological regular-expressions into non-pathological ones. Modified top-level LDM server: Removed latent bug that caused file-descriptor table to fill-up -- preventing additional connections -- if fork(2)s failed for a while. Corrected bug in LDM configuration-file parser. The LDM will now log an error-message and terminate if it encounters an invalid feedtype expression. Modified downstream (i.e., receiving) LDM: Changed the way the "last" data-product creation-time is saved. Before, the creation-time of the most recently received data-product was used. Now, that time is used only if it is more recent than the saved time. This should reduce problems caused by the sequential arrival of data-products with creation-times that are non-monotonic. Modified down6_get_last_arrival() to accomodate SunOS 5.8's c89(1). Improved error-messages when the LDM can't connect to an upstream LDM. Modified programs to reduce artificially-induced latencies: Modified the toClients() function in the "pqing" module so that the "arrival" argument is ignored and the creation-time of the data-product is set within the function itself. This should reduce the (apparent) latency on systems doing data-product ingestion. Modified the pqinsert(1) utility so that the data-product creation- time is set just prior to inserting the data-product into the product-queue. This should reduce any (apparent) latency. Modified pqact(1). A configuration-file with no entries is now logged as such rather than as having a syntax error. Modified rtstats(1): A warning-level error-message is logged if it can't connect to the remote LDM. The latency field in the data-product it creates is now formatted "%g" from a floating-point value. Modified pqcheck(1). Added support for logging debug-level messages (-x option). Modified scour(1) utility to work-around bug in OSF1's find(1) utility. Ensured that all utilities log messages of level LOG_WARNING. Modified ldmadmin(1) script: Moved the configuration section of ldmadmin(1) into a separate file (etc/ldmadmin-pl.conf). A consequence of this is that if the environment variable LDMHOME is not set, then $HOME is used. Removed setting of UDUNITS_PATH because it doesn't have anything to do with running the LDM. User's who need this environment variable set in order for the gribtonc(1) decoder to work properly should set it in the profile-file of the LDM user's user-shell. Corrected default value of $surf_size variable. Previous value of "2M" caused command "ldmadmin mksurfqueue" to hang. Fixed bug in ldmadmin(1) so that "ldmadmin watch -f 'IDS|DDPLUS'" now works. Made "ldmadmin clean" abort if the LDM system is running. Corrected use of "$?". Corrected some error-messages. Added scouring of ~ldm/logs/*.stats files to example scour(1) configuration-file. Ported package to Darwin (alias Mac OS X) SunOS 5.10 (alias Solaris 10) The package has poor performance under SunOS 5.10. Sun is investigating. Modified configure(1) script: Made the script try to create an LDM system that supports product-queue sizes up to (2^32)-1 bytes. Added "--disable-max-size" option so that the user can ensure that the resulting LDM only supports smaller product-queue sizes (to use a previously-existing product-queue, for example). Corrected test for non-socket /dev/log. Now augments, rather than replaces, a user-specified CPPFLAGS. Modified makefiles: Modified top-level makefile to get libldm.a(ldm_version.o) updated when VERSION is modified. "make clean" no longer removes *.log files; "make distclean" does. Removed files INSTALL and INSTALL.bin from distribution after moving their information to file README. Renamed this file (HISTORY) to CHANGE_LOG.
Release Notes for LDM version 6.2.0 WHAT'S MAJORLY NEW: Self-Contained RPC This version of the LDM has its own RPC (Remote Procedure Call) implementation. This was done because the native RPC implementations on some systems (notably AIX 5.1) are buggy (they fail to transmit data-products larger than 16 MB, for example). Large Product-Queue by Default By default, this version of the LDM will be built with support for large product-queues (up to (2^32)-1 bytes in size) -- if that's possible on the system in question. If you want to reuse a pre-existing queue that was created with a previous version of the LDM that didn't support large product-queues, then you'll have to specify the option "--disable-max-size" to the configure(1) script when you execute it. The installation instructions have more information. Because of this change, THE INSTALLATION INSTRUCTIONS HAVE CHANGED. Please read and follow them. Separate ldmadmin(1) Configuration-File The configuration section of the ldmadmin(1) script has been broken-out into its own file (etc/ldmadmin-pl.conf) to eliminate the need to modify the ldmadmin(1) script every time the LDM is updated. RELINK INGESTERS: If your previous LDM didn't support large product-queues (see above) and this updated one will, then you must re-link all programs that access the product-queue that are not part of this distribution. Failure to do so will result in INCORRECT BEHAVIOR OF THE LDM SYSTEM. KNOWN PROBLEMS: Because problems can be reported after a release is made, you should check the "Known Problems" webpage at http://my.unidata.ucar.edu/conte nt/software/ldm/ldm- 6.2.0/release-notes.html#bugs