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