Bug 1913582
Summary: | [Migration]SDN to OVN migration stucks on MCO for rhel worker | ||
---|---|---|---|
Product: | OpenShift Container Platform | Reporter: | huirwang |
Component: | Machine Config Operator | Assignee: | Kirsten Garrison <kgarriso> |
Status: | CLOSED ERRATA | QA Contact: | Michael Nguyen <mnguyen> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | 4.7 | CC: | mkrejci, pliu, smilner, zzhao |
Target Milestone: | --- | Keywords: | TestBlocker |
Target Release: | 4.7.0 | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2021-02-24 15:50:56 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
huirwang
2021-01-07 07:50:40 UTC
Flag `--journald` is not supported in RHEL 7, so it looks like an MCO use this flag without checking the running operating system. https://github.com/openshift/machine-config-operator/blob/0e40c961cdb200f886c06e88a7673c8dcd33b5be/pkg/daemon/update.go#L1829 Assign to MCO team. Good catch Peng Liu! There is some sensing code in the package at https://github.com/openshift/machine-config-operator/blob/master/pkg/daemon/daemon.go#L243-L252 which might make sense to be turned into a function and used. This doesn't quite make sense as it _would_ be using storePendingStateLegacyLogger() (see: https://github.com/openshift/machine-config-operator/blob/e70033b04d31f63661d59f92535ae460b6119bbe/pkg/daemon/update.go#L1816) which is for when journald not being present... which is 2 lines before what Peng Liu linked in the if statement: https://github.com/openshift/machine-config-operator/blob/0e40c961cdb200f886c06e88a7673c8dcd33b5be/pkg/daemon/update.go#L1826 To be clear: ``` if !dn.loggerSupportsJournal { return dn.storePendingStateLegacyLogger(pending, isPending) <--- this is what would be used if logger doesn't support journal } logger := exec.Command("logger", "--journald") <- this wouldn't be used if logger doesn't support journal ``` Will look a little further.. So the problem actually lies elsewhere in the VersionId check: https://github.com/openshift/machine-config-operator/blob/4a005cb1e426a4d844fad89bd88fef95e0ce0246/pkg/daemon/osrelease.go#L39 we are checking for "7" but $ rpmdev-extract redhat-release-7.5-0.14.el7.x86_64.rpm redhat-release-7.5-0.14.el7.x86_64/etc/issue redhat-release-7.5-0.14.el7.x86_64/etc/issue.net redhat-release-7.5-0.14.el7.x86_64/etc/pki/product-default <snip> $ egrep "VERSION_ID=" redhat-release-7.5-0.14.el7.x86_64/usr/lib/os-release VERSION_ID="7.5" will fix Just to summarize the BZ: the VERSION_ID was 7.5 but our check IsLikeTraditionalRhel7() did not account for minor versions (only for "7" not for 7.x) and so returned false. This resulted in dn.loggerSupportsJournal being set to true (https://github.com/openshift/machine-config-operator/blob/8c7dab8a8e613e6a3a0533c6607c459d7fa480dd/pkg/daemon/daemon.go#L245) which is the relevant value when selecting which logger to use. So instead of using storePendingStateLegacyLogger() (for cases where journald isn't avail) we used normal logger resulting in the --journald flag erroneously being used for a rhel7 node. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Moderate: OpenShift Container Platform 4.7.0 security, bug fix, and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2020:5633 |