Release Notes ============= Restraint 0.4.4 --------------- Bug Fixes ~~~~~~~~~ * | Fix: Stabilize selinux behavior in RHEL-9 | Added a static selinux policy for RHEL-9. The policy is manually built from a RHEL-9.0.0 host so it will work on all RHEL-9 versions. If built on a later version of RHEL-9, it will not be backward compatible with older versions and fail to install. Restraint 0.4.3 --------------- Bug Fixes ~~~~~~~~~ * | Fix: Revert fix to fetch either branch 'main' or 'master' | When performing a `fetch` operation, restraint will continue to look for `master` branch only. * | Fix: Revert Fetch URL fix | Backing out fix to provide precise directory matching for `repoRequires` and `fetch` operation. The problem is not all user selection data is precise. Some user testing will be hindered with this change. Due to these unknown cases, requesting users chose to instead make their directory definitions more precise. Refer to comment in Issue 272 on 3/13 for more details. If folks decide to reintroduce this change, they should also apply pull 289 which provides more flexibility. Restraint 0.4.2 --------------- Bug Fixes ~~~~~~~~~ * | Fix: Fetch either branch 'main' or 'master' | When performing a `fetch` operation, restraint will look for either `main` or `master` branch. * | Fix: rstrnt-reboot not reliable for UEFI systems | When `efibootmgr` is present, the `BootNext` variable is set to reboot to `Current`. When `rstrnt-prepare-reboot` was written, a timer was set to remove `BootNext` setting after 180 seconds. `rstrnt-reboot` uses the `prepare` script and the timer wasn't long enough and not needed for `rstrnt-reboot`. This changeset allows `NEXTBOOT_VALID_TIME` to be set to 0. When 0, the timer is not set and as a result `BootNext` will not be removed. `rstrnt-reboot` now uses a 0 timer. * | Fix: Fetch URL extract too many matched directories | When `fetch` url is used, restraint is copying anything that matches the pattern in `https://#pattern` regardless of the location in the received path. If pattern is `include`, both `general/include, include` directories will match when it should only be `include`. Restraint will now only select if it matches starting from beginning of received path NOT throughout directory path. But first, the first `string/` must be ignored from the received path since it is superfluous for the match since it includes the repo and branch name added by curl. Jobs that include this repo-branch prefix in the fetch pattern will now fail with this changeset. So fetching `https://#repo-branch/pattern` will fail. * | Fix: Use of FALSE/FAILURESTRINGS results in 'too many arguments' | Seeing the following errors in restraint.log files. `restraintd[2330]: ./01_dmesg_check: line 53: [: too many arguments` Added Quote around the value to prevent this. Restraint 0.4.1 --------------- Other ~~~~~ * | Tag `0.4.1` was intentionally skipped. Restraint 0.4.0 --------------- Bug Fixes ~~~~~~~~~ * | Set OOMPolicy=continue to prevent killing restraintd (Fedora/RHEL9+) | Upon memory depletion, prevent the kernel from killing restraintd service. Keep restraintd running, but log the service event. This OOMPolicy setting is only available for RHEL9+ and Fedora distros. Other distros will remain unchanged. * | Prevent restraint client from being interrupted by SIGPIPE signal | Code change is to ignore SIGPIPE then client code will naturally attempt to retry once determined that the path is broken. * | rstrnt-reboot to ignore SIGTERM | When this scripts performs a reboot, it does a loop forever to prevent from returning to the calling process. This changeset ignores SIGTERMs to keep it from interrupting the loop. We must keep the SIGKILL in place however so there is still a small window of opportunity of returning to caller but the window has been narrowed with this change. Other Notable Changes ~~~~~~~~~~~~~~~~~~~~~ * | RHEL 5 and 6 builds are no longer created from this version onward. | This is partly due to upgrades of libraries used by restraint which are not compatible with the older RHEL releases. Older restraint releases for RHEL 5 and 6 prior to this 0.4.0 release will still exist in the download repositories. Restraint 0.3.3 --------------- Bug Fixes ~~~~~~~~~ * | Restraint client honors job_id defined in tag. * | Improve error handling on recipe and task state management | Some errors that could indicate a bad saved state are now handled and reported. * | Fix distro version check in 20_unconfined | Make it better at detecting Fedora 34 as Fedora and distinguish RHEL from Fedora in version comparison. The main difference is that it now picks the right SELinux context for test jobs on Fedora 34 (Rawhide at the time of writing). Restraint 0.3.2 --------------- What’s New ~~~~~~~~~~ * Enable log manager for log caching Bug Fixes ~~~~~~~~~ * | Upload cached logs in time intervals | The log manager uploads the cached contents of taskout.log and harness.log every 15 seconds. This allows to follow task progress and avoids missing logs when the external watchdog aborts the recipe. Restraint 0.3.1 --------------- Bug Fixes ~~~~~~~~~ * | Disable log manager | The log manager is disabled and the behavior for taskout.log and harness.log is the same as before it was introduced. Restraint 0.3.0 --------------- What’s New ~~~~~~~~~~ * | Wait on Beaker's health status | When Restraint runs under Beaker, Beaker's health status is checked before performing steps that require communication with Beaker. Recipe execution is held until Beaker is available. * | Log manager for log caching | When Restraint runs under Beaker, harness and task logs are cached in the system. Logs are uploaded to Beaker after the task completes. | Contributed by Ernestas Kulik Bug Fixes ~~~~~~~~~ * | Recognize results reported for non-rhts tasks | When the task reports just `SKIP` for results, the final task result should be `SKIP`. An extra task result is occurring when a non-rhts task is executed. An non-rhts task is one that uses the `metadata` file instead of `testinfo` file. Bugzilla 1334893 made a change to always report results `PASS` for task exiting with zero or `FAIL` when exit non-zero for non-rhts tasks. As a result, `PASS` was being reported which has a high priority then `SKIP` so the final task result was `PASS`. | Code changes monitor whether user reports results by way of `rstrnt-report-result`. If so, give those results priority; otherwise, hardcode `PASS` task result for user. | When process exits with non-zero, `FAIL` for non-rhts will remain as this provides the user the option to continue with the job. If they want legacy behavior, they should make a call to `rstrnt-abort` in their task. * | Stop logging `LWD is disabled` every minute | When LWD (Local Watchdog) is disabled, there is a message in the harness log that reports this every minute. The message looks like: `Localwatchdog at: Disabled! `. This changeset makes sure it is no longer reported repeatedly when `no_localwatchdog=true` is configured in the task `metadata` file. To ensure there is some type of keepalive mechanism, the client now performs ssh keepalive towards the server. This timeout value is configurable by use of the restraint client option `--timeout` which only affects default behavior. The timeout value has no effect when the `rsh` argument is used. * | Use new task install default for non-RHTS package | For restraint-rhts package, tasks are installed and executed beneath `/mnt/tests`. For non-rhts `restraint` installations, this path has changed to a more appropriate location. | The `20_sysinfo` plugin processes journalctl log in a temporary location instead of `/mnt` as it is just an interim event. Restraint 0.2.3 --------------- Bug Fixes ~~~~~~~~~ - Fix noisy Restraint client output The Restraint client was not honoring the verbosity levels and it was printing all output available even when the verbosity level was the lowest. The Restraint client output now behaves similarly to release 0.1.45. - Increase retries for recipe fetching Retries for recipe fetching are increased from 3 attempts in 10 seconds intervals to 12 attempts in 10 seconds intervals. Restraint 0.2.2 --------------- Bug Fixes ~~~~~~~~~ - restraint client now honors recipe params as well as task params. - Correct commands exit status when argument parsing fails due to bad syntax. Commands always return non-zero in case of failure. - Resolve loop in local watchdog plugin When the local watchdog (LWD) expires a task, the LWD plugin `20_sysinfo` goes into an infinite loop since the directory `/mnt/testarea` is not created for the non-rhts restraint package. An error returned by `diff` utility within an infinite loop was not anticipated. The fix terminates the infinite loop when diff returns error. Restraint 0.2.1 --------------- What's New ~~~~~~~~~~ * | Add ability to select `restraintd` instance by port to `restraint` commands | When running commands outside of jobs on the local host, some `restraint` commands require manually setting up environment variables or constructing long URLs before running. This can be issue if you are trying to extend the watchdog in a timely fashion. A new option was added which requires the argument `--port `. Commands affected are `rstrnt-report-log`, `rstrnt-report-result`, `rstrnt-abort`, and `rstrnt-watchdog`. * | Restore ability to specify `restraintd` port | Add the `-p, --port` option back to restraint daemon and client to specify the port where `restraintd` will be listening to. :bug:`1821342` * | Document how to remove RHTS from Jobs | Added new section :ref:`rm_rhts_guide` detailing substitutes for `RHTS` scripts, environment variables, and testinfo.desc file and associated variables. :bug:`1802610` Bug Fixes ~~~~~~~~~ * | Redirect task STDIN back to /dev/null | In release 0.2.0, the task STDIN was redirected to a pipe shared with the server. This breaks `ausearch` command when the input is not explicitly specified, as by default, if STDIN is a pipe, it will read from it, instead of system logs. As the pipe is closed when the task is running, tests expecting matches failed, and tests expecting no matches were unreliable. Restoring redirect of task STDIN back to /dev/null ensures that `ausearch` reads from system logs by default. * | Restore default port for restraind system service | In release 0.2.0 the port for `restraintd` system service is chosen dynamically, breaking workflows where the port was expected to persist between reboots. When `restraintd` runs as a system service, the port defaults to `8081`. :bug:`1823545` * | Restraintd killed by SIGTRAP | It was discovered that an error logging function (g_error) introduced in 0.2.0 also performed aborts. The function was replaced with one which logs without undesirable side effects. :bug:`1823840`, :bug:`1831824` * | `restraintd` fails to start if both, IPv4 and IPv6, are not available on the loopback interface | In this release, restraintd will not fail if it's able to listen on at least one protocol, IPv4 or IPv6, although it will still try to listen on both. * | Fix use of uninitialized FD for STDIN when PTY is requested | When PTY was requested, the FD for the task STDIN was left uninitialized. The value, set to 0, was still used in a close call, closing the parent STDIN FD and causing unexpected behavior in task execution. In this release, the FD for STDIN is not used when PTY is requested. Restraint 0.2.0 --------------- Upgrades ~~~~~~~~ * | :bug:`1667510`: Remove libssh from restraint client. | The port used by restraint server is no longer static. If using the restraint client, refer to restraint documentation for changes to arguments passed since the port is no longer included in `--host` argument. The client spawns restraintd for you so the extra step of starting up a restraintd instance is no longer needed. Because of these interface changes, the restraint client and server must be the same version. | (Contributed by Bill Peck and Carol Bouchard) * | :bug:`1770230`: Replace rhts-sync- with rstrnt-sync- cmds. | This changeset creates rstrnt-sync- commands and links rhts-sync- commands to it. The multihost plugin now uses rstrnt-sync- commands. | (Contributed by Carol Bouchard) * | :bug:`1802261`: Upgrade libxml2 to version 2.9.10 | (Contributed by Daniel Rodriguez Gonzalez) Bug Fixes ~~~~~~~~~ * | :bug:`1795915`: Remove execute permission from systemd service file. There is a warning message in the systemd logs about the file being executable. | (Contributed by John Villalovos) Restraint 0.1.45 ---------------- * | FIXED: :bug:`1795781`: Multihost sync hangs on remote reboot. Users multihost synchronization task hangs on block operation when remote host reboots. This is a corner case difficult to reproduce. | (Contributed by Carol Bouchard) * | FIXED: :bug:`1792466`: Restraint segfault during labcontroller timeout. On error when gathering peer roles from the lab controller, a double free of the error structure causes bad behavior in glib memory management. Eventually this causes restraint server to crash on a segfault. | (Contributed by Carol Bouchard) * | FIXED: :bug:`1691485`: Rstrnt Client not provide task vers in job.xml. This change affects rpm tasks only. Restraint server gets the version number from the rpm and returns it in 'Completed/Aborted' status message sent to restraint client. The restraint client writes it out in the job.xml. | (Contributed by Carol Bouchard) * | FIXED: :bug:`1793114`: Wrong file permission on 30_dmesg_clear plugin. The new 30_dmesg_clear plugin does not have execute file permission. However, other scripts add execution permission so it is correct in the rpm. This is being fixed in repo to prevent chasing it as an issue. | (Contributed by Carol Bouchard) Restraint 0.1.44 ---------------- * | FIXED: :bug:`1788252`: restraintd crash in timeout_callback functions. Ran into timing issues when process_timeout_callback occurs after process_pid_callback. The task data is NULL so process_timeout_callback should not attempt to process task data when pid is 0 indicating process is complete. | (Contributed by Carol Bouchard) * | FIXED: :bug:`1781722`: Not executing task when multihost utilized. Observed that restraint reported the task started but output from the task itself not making it to taskout.log file. With debug enabled, found it stopped in 30_restore_events plugin. Performed more detail unit testing on rstrnt-sync and resolved a number of issues found. | (Contributed by Carol Bouchard) * | FIXED: :bug:`1782422`: Fetch https operation noisy harness.log. When using