6.15.0 2023-12-06T12:37:33-0700 Build: * Eliminated all *.hin files (except "registry/registry.hin") and extractDecls(1) in order to make the development and build process more conventional and easier to understand * Corrected creation of runtime link to accomodate non-standard installs; * Makefile.am: Corrected "ensure_ldmhome_links" rule * ensure_hdmhome_links: Added extraction of subdirectory name from installation prefix ldmadmin(1): * "queuecheck" command: Placed the pathname of the product-queue in quotes just in case it contains embedded whitespace * "showsettings" command: Added "pqmon -S" * Modified "vetqueuesize" to cap the factor multiplying the MVRT sizes at the Golden Ratio * Added some diagnostic print statements to when the queue is adjusted * Corrected syntax errors in vetQueueSize(). * Corrected computation of new queue-size parameters. ldmd(1): * Version 6 upstream LDM: Added logging of a warning if sending or notifying about the oldest product in the queue because this indicates that the product-queue might be too small or the system too busy * Upstream: Added diagnostic error logging to up6_run() * up6.c: Corrected use of variable indicating status of product transmission by initializing it notifyme(1): * Added "-O" option to include product origin in output * Modified usage message to use LDM logging module * Replaced use of synchronous LDM-5 protocols with asynchronous LDM-6 protocols in order to greatly increase performance when used for a long time. As a consequence, this utility will no longer work with an upstream LDM-5 server. * Eliminated SIGSEGV if a severe upstream error causes notifyme_6() to returns NULL. It now prints a useful error message. pqinsert(1): * Added ability to read a single data-product from standard input * Added "-h" (help) option * Enhanced man(1) page * Added "-r" option to read the input files instead of memory-mapping them. This might be necessary if the input files are not on local disk. rtstats(1): * Have connectToLdm() call ldmsend_disconnect() if clnt != NULL because the previous assertion failed for some reason (cosmic ray?) keep_running(1): * Added a test for the executable's existance showSettings(1): Corrected bug in setting of default LDMHOME value NOAAPort: * Configured the UDP socket for sharing the packets with other sockets and logging a warning if it couldn't * Added sh(1)-based noaaportBlender(1) to keep blender(1) and noaaportIngester(1) processes running * blender(1): * Frame is now output when the wait-time expires even if no subsequent frames arrive * "Starting product" INFO-level log message now includes source field from frame header blender(1): * Changed Key::operator<() to handle the data server being switched * Corrected comparison of frame keys * Renamed CircFrameBuf to FrameQueue * Improved error messages * Fixed SIGSEGV bug by ensuring that the key of the oldest frame in the queue is used before the frame is destroyed * Enabled logging of diagnostic information for a frame that arrives too late to be included * Added a shell version of the noaaportBlender(1) Python version Documentation: * Feedtype webpage: Changed "FT31" to "FT30" for the "ANY" feedtype DevOps: * Added "workflow_dispatch" to "on" entry * Have NOAAPort makefile print head of ingest log file to aid GitHub Actions debugging 6.14.5 2023-02-16T11:40:06-0700 ldmadmin(1): * Made the determination of local vs. remote LDM ports in the command "ldmadmin printstats" more robust. In particular, it now counts transitory connections due to local rtstats(1)s when they exist. plotMetrics(1): * Improved some plot titles to clarify what they represent rtstats(1): * Commented code about what function logs messages because the code is convoluted * Removed trailing newline in rtstats(1) log message to eliminate extraneous log message * Eliminated sending of NULLPROC before closing connection because it's superfluous * Documented return value of ldmsend_statsbin() * Eliminated possibility of overrun in formatting report * Eliminated unnecessary log message * Replaced abort() due to unsupported remote LDM version with log_error() and ECONNABORTED return value * Restructured code * Decreased the coupling between the statistics gathering module and the LDM reporting module * Renamed several functions to increase clarity * Moved that which could and should be done before sending reports from inside the report-sending code to an initialization step (e.g., MD5 checksum allocation, product class initialization, sequence number, HIYA) * Clarified logic by breaking complex functions into multiple functions * Improved internal documentation * Eliminated small memory-leak due to product class return value from HIYA not being freed * man(1) page: Corrected description of number of bytes, number of products, and peak-latency parameters: they are not for "this hour" but since rtstats(1) was started Documentation: * Removed empty entry from list of general platform requirements * Added requirement that "RemoveIPC" in "/etc/systemd/logind.conf" must be "no" to prevent systemd(8) from deleting the LDM's shared-memory segment that contains the upstream LDM database. * CHANGE_LOG: * Consolidated 6.14.4.* entries into 6.14.4. Should have done that earlier. 6.14.4 2023-01-26T11:03:17-0700 ldmd(1): * Eliminated log messages when an upstream LDM process that was ACCEPTed terminates. This should reduce the number of log messages on the rtstats(1) mothership. * Moved setting of "hiyaCalled" to top of HIYA service functions * Made ECONNRESET error a single INFO-level log message * Replace some ERROR log messages with FATAL ones in the main module. NOAAPort: * Added entries with new PDTNs to GEMPAK tables: * g2varswmo.tbl: 000 002 000 002 Wind Direction Degree true DRCT 0 -9999.00 * g2varsncep.tbl: 001 001 194 009 Prob precip exceeding FFG % PEFG-- 0 -9999.00 rtstats(1): * Made error reporting more robust Documentation: * More hyperlink corrections * Returned Coverity Scan badge to top-level, version-specific index.html Misc: * Removed lint found by Coverity Scan * ErrObj module * Created * Created log_dispose(ErrObj*) * Might get used; might not. DevOps: * Enhanced "pre-commit" hook to vet the version ID in CHANGE_LOG and ensure a timestamp in CHANGE_LOG when committing to the main branch * Enhanced "OnPush.yml": * Vet the version ID in CHANGE_LOG and "configure.ac" * Update the "versions.html" file for LDM documentation on the artifacts server * Deleted "--disable-root-actions" from Coverity Scan target * Added deletion of /tmp/pqact_test.conf before creation due to /tmp having the "restricted deletion" bit set * Deleted use of CodeQL in OnPush.yml in favor of using Coverity Scan because it's better, IMO 6.14.3 2022-12-22T13:34:03-0700 Documentation: * Fixed more links in HTML documentation 6.14.2 2022-12-20T15:32:36-0700 Documentation: * Added missing graphic "product-queue.svg" * Fixed links in HTML documentation 6.14.1 2022-12-19T12:40:42-0700 Installation: * Eliminated the configure(1)-script option "--disable-root-actions". Installation now proceeds as if this option were always specified. The "make install" step now prints a message at the end stating that the superuser (i.e., "root") must now execute the command "make root-actions". This was necessary in order to migrate the continuous-integration workflow to GitHub actions: autoconf(1) 2.71 on the Ubuntu 22.04 platform creates an invalid configure(1) script if the autoconf(1) configuration-file contains this option. Installation from the unpacked distribution now comprises the following steps (details omitted): - Execute the configure(1) script as the LDM user - "make install" as the LDM user - "make root-actions" as root See the HTML documentation for details. * The configure(1) script now requires that a C++ compiler be found if the "--with-noaaport" option is specified ldmd(1): * Demoted the logging level of some common connection losses to reduce the number of ERROR messages in the log file * Improved log message when select() fails * Improved logging and simplified up6_run() * Only close file-descriptors 0, 1, & 2 when daemonizing * Added "-h" (help) option * Moved daemonization to before the creation of the shared upstream LDM database * Ensured that the LDM server is the process group leader. regutil(1): * Added "-l " option to accomodate GitHub actions pqing(1): * Eliminated compilation error in "tty.c" under MacOS by including NOAAPort: * blender(1): * Added frame-header sequence-number to determination of frame ordering. * Corrected determination of frame ordering * GEMPAK Tables: Added missing PDTNs LDM registry: * Ensured that the file-descriptor of the registry is close-on-exec Logging: * In order to accomodate GitHub actions, changed the determination of whether or not to use the standard error stream from whether of not the process was a daemon to whether or not the standard error stream is open on /dev/null rpc(3) library: * Eliminated compilation errors under MacOS by replacing bzero(), bset(), and bcmp() with POSIX equivalents * Demoted the logging level of some common connection losses to reduce the number of ERROR messages in the log file Documentation: * Changed the download site to downloads.unidata.ucar.edu and eliminated the FTP site * Added recommended home directory /home/ldm or /opt/ldm * Changed the installation instructions to "make install" by the LDM user and then "make root-actions" by the superuser * Removed the Coverity Scan badge from the top-level, version-specific "index.html" page because the code is now being scanned by GitHub's CodeQL * Changed the example LDM home-directory from "/opt/ldm" back to "/home/ldm" because that's more appropriate for an LDM *user* DevOps: * A push to the "devel" and "master" branches on GitHub now causes "make distclean" to be executed on 2 Ubuntu systems and the latest MacOS system and the code to be scanned by CodeQL. * Modified Git hook "pre-commit" to ensure that the version ID in "configure.ac" is the same as the first word in "CHANGE_LOG" * Removed target "consistent" and its dependencies from "dev-makefile" * Corrected code faults found by GitHub's CodeQL (mostly in GEMPAK library) * Modified "make check" in regutil/ to accomodate GitHub actions * Modified include of "ldm.h" in "fix_clnt.pl" to accomodate GitHub actions * Enabled everything in OnPush.yml for LDM release 6.13.17 2022-10-24T15:01:17-0600 (should have been 6.14.0 due to the addition of blender(1)) Installation: * Restored setting of LDM_PORT in distribution's registry * Added support for use of chronyd(8) instead of ntpdate(8) ldmadmin(1): * Improved: * Waiting for the LDM to start * Determining if the LDM is running * "ldmadmin start" verifies that * The product-queue exists * ldmd(1) owned by root and setuid * Added support for use of chronyd(8) instead of ntpdate(8) * Added "-o