Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-4721

Race condition in Payload thread makes Source spoke inacessible

    • anaconda-34.25.5.7-1.el9
    • None
    • None
    • rhel-sst-installer
    • ssg_front_door
    • 20
    • 0
    • False
    • Hide

      None

      Show
      None
    • No
    • None
    • If docs needed, set a value
    • None

      Description of problem:
      When the Anaconda Payload thread encounters an error, it triggers a callback that Anaconda spokes can react to. The problem is that the thread does not terminate right away after triggering the callback.

      except (OSError, DBusError, PayloadError, DNFManagerError) as e:
      log.error("PayloadError: %s", e)
      self._error = self.ERROR_SETUP
      self._set_state(PayloadState.ERROR)
      payload.unsetup()
      return

      Unfortunately Source spoke decides if it is ready (and this thus accessible) based on no payload related threads running:

      @property
      def ready(self):
      return (self._ready and
      not threadMgr.get(constants.THREAD_PAYLOAD) and
      not threadMgr.get(constants.THREAD_SOFTWARE_WATCHER) and
      not threadMgr.get(constants.THREAD_CHECK_SOFTWARE))

      So error callback is triggered -> Source spoke status updated -> thread still running -> ready == False -> Source spoke not accessible

      Version-Release number of selected component (if applicable):

      How reproducible:
      Almost always with Satellite.

      Steps to Reproduce:
      1. register to a Satellite instance in the Connect to Red Hat spoke
      2. press the unregister button
      3. press the Done button to return to hub

      Actual results:
      status of the Source spoke is grey and the spoke is no accessible

      Expected results:
      status of the Source spoke is is not and the spoke is accessible

      Additional info:
      There is an easy workaround - just enter and then exit another accessible spoke. This will fix the issue and Source spoke will be again accessible.

      There are also also most likely other ways how to reproduce the bug than just the Satellite usecase & it might even exist in RHEL 8, though it will be harder to reproduce without Satellite support there.

              mkolman@redhat.com Martin Kolman
              mkolman@redhat.com Martin Kolman
              Martin Kolman Martin Kolman
              Release Test Team Release Test Team
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: