Eric MacDonald fd66519339 Fix Start Host Services race condition
The following update, merged in early June, introduced a change to
the mtcClient to auto-run the Start Host Services command on process
startup like it does for the goenable tests.

https://opendev.org/starlingx/metal/
        commit/1335bc484df331771e995ae822df3af84cc5739d

This change introduced the potential for a race condition that did not
occur during the testing of that update.
Likely due to the low reproduction rate.

With that update in place it is possible for maintenbance to receive
the acknowlegement of a "Start Host Services" request followed
immediately by the "Start Host Services Result" message.

Receiving these messages back to back in a batch does not give
maintenance enough time to update its command handler with the
next expected message. The Command handler is a separate time-sliced
FSM that needs to run at least once following the start request's
message ack. Otherwise, the result message is dropped which leads
to a Start Host Services timeout.

The fix is to accept a "Start Host Services Result" response anytime
it arrives while a "Start Host Services" request is outstanding.

Test Plan:

PASS: Verify issue occurs at a rate greater than 75% and then apply
      this change and verify there are no failures in a lock/unlock
      soak of 100 iterations.

Closes-Bug: 2073802
Change-Id: I657e5fd917073f6c7a37dc13517559a9740a62e9
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
2024-07-23 15:54:42 +00:00
2023-08-29 16:50:22 -04:00
2019-04-19 19:52:33 +00:00
2023-04-28 12:38:51 -04:00
2018-05-31 07:36:43 -07:00
2023-07-19 12:32:13 -03:00
2022-12-26 23:26:54 +00:00

metal

The starlingx/metal repository handles StarlingX Bare Metal Management1.

This repository is not intended to be developed standalone, but rather as part of the StarlingX Source System, which is defined by the StarlingX manifest2.

References


  1. https://docs.starlingx.io/api-ref/metal↩︎

  2. https://opendev.org/starlingx/manifest.git↩︎

Description
StarlingX Bare Metal and Node Management, Hardware Maintenance
Readme 15 MiB
Languages
C++ 83%
Shell 10.2%
Python 3.3%
C 2.5%
Makefile 1%