Distributed Cloud: Processes can hang due to missing REST API timeouts

Bug #1886037 reported by Bart Wensley
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
StarlingX
Fix Released
Medium
Yuxing

Bug Description

Brief Description
-----------------
There have been two bugs where the dcmanager subcloud audit process hung (bug 1884560 and bug 1870413). The root cause was determined to be that the REST API calls made by the audit did not use timeouts, so a lost message could result in the process hanging forever. Timeouts for the REST API calls used by the audit were added as a fix for bug 1870413.

This LP is being opened to fix the remainder of the REST API calls in the distributed cloud code. Some notes:
- The DC orchestration code is also vulnerable to this issue as it uses the sysinv/patching/vim clients with no request timeouts.
- We need to protect all rest API requests we send with a timeout.
- This will also require changes to the nfv_client itself (in the VIM) because it currently doesn’t provide any way for users to specify a timeout.

Severity
--------
Major: processes can hang with the only recourse being to restart them

Steps to Reproduce
------------------
This is a race condition - it can be difficult to reproduce. It is usually triggered when a subcloud is powered down.

Expected Behavior
------------------
All REST API calls from the distributed cloud processes should time out - even in the case of message loss.

Actual Behavior
----------------
See above

Reproducibility
---------------
Intermittent

System Configuration
--------------------
Distributed Cloud

Branch/Pull Time/Commit
-----------------------
See bug 1870413

Last Pass
---------
N/A

Timestamp/Logs
--------------
See bug 1870413

Test Activity
-------------
See bug 1870413

Workaround
----------
A controller swact will restart the affected processes

tags: added: stx.distcloud
description: updated
Changed in starlingx:
assignee: nobody → John Kung (john-kung)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nfv (master)

Reviewed: https://review.opendev.org/740779
Committed: https://git.openstack.org/cgit/starlingx/nfv/commit/?id=b39bc8c0349e68373d30360c1d99ad02c7b262aa
Submitter: Zuul
Branch: master

commit b39bc8c0349e68373d30360c1d99ad02c7b262aa
Author: Bart Wensley <email address hidden>
Date: Mon Jul 13 14:01:27 2020 -0500

    Add REST API timeouts to nfv-client

    The VIM's nfv-client sends REST API messages to the VIM, but it
    currently does not set a timeout for these calls. In the case
    where a message is lost, the nfv-client would block forever,
    causing the calling process to hang.

    Fixing this by adding timeouts to the nfv-client to ensure that
    all REST API messages it sends will timeout even in the case of
    lost messages.

    Change-Id: Iba06924fb7bd14a1ee3362b4fd19aa4114dc34cd
    Partial-Bug: 1886037
    Signed-off-by: Bart Wensley <email address hidden>

Revision history for this message
Ghada Khalil (gkhalil) wrote :

stx.5.0 / medium priority - issue related to a race condition which is hard to reproduce

Changed in starlingx:
importance: Undecided → Medium
tags: added: stx.5.0
Changed in starlingx:
assignee: John Kung (john-kung) → Yuxing (yuxing)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to distcloud (master)

Fix proposed to branch: master
Review: https://review.opendev.org/742929

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to distcloud (master)

Reviewed: https://review.opendev.org/742929
Committed: https://git.openstack.org/cgit/starlingx/distcloud/commit/?id=749f7dc3d96f2842cd80b59d8022ae433e376494
Submitter: Zuul
Branch: master

commit 749f7dc3d96f2842cd80b59d8022ae433e376494
Author: Yuxing Jiang <email address hidden>
Date: Fri Jul 24 10:52:23 2020 -0400

    Add REST API timeout to patching and sysinv clients

    The REST API calls from the distributed cloud should timeout to
    prevent process to hang forever.

    Change-Id: Iea7f05018c348a817758f6bc920489127242ed11
    Closes-Bug: 1886037
    Signed-off-by: Yuxing Jiang <email address hidden>

Changed in starlingx:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to distcloud (f/centos8)

Fix proposed to branch: f/centos8
Review: https://review.opendev.org/c/starlingx/distcloud/+/792298

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on distcloud (f/centos8)

Change abandoned by "Chuck Short <email address hidden>" on branch: f/centos8
Review: https://review.opendev.org/c/starlingx/distcloud/+/792298
Reason: Updated merge soon

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to distcloud (f/centos8)

Fix proposed to branch: f/centos8
Review: https://review.opendev.org/c/starlingx/distcloud/+/793405

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on distcloud (f/centos8)

Change abandoned by "Chuck Short <email address hidden>" on branch: f/centos8
Review: https://review.opendev.org/c/starlingx/distcloud/+/793405

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to distcloud (f/centos8)

Fix proposed to branch: f/centos8
Review: https://review.opendev.org/c/starlingx/distcloud/+/796528

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to distcloud (f/centos8)
Download full text (105.0 KiB)

Reviewed: https://review.opendev.org/c/starlingx/distcloud/+/796528
Committed: https://opendev.org/starlingx/distcloud/commit/4c5344f8765b372cb84d2b1181589c16db2ae6e4
Submitter: "Zuul (22348)"
Branch: f/centos8

commit cb979811017bd193fc1f06e53bb7830fd3184859
Author: Yuxing Jiang <email address hidden>
Date: Wed Jun 9 11:11:27 2021 -0400

    Format the IP addresses in payload before adding a subcloud

    The IPv6 addresses can be represented in multiple formats. As IP
    addresses are stored as text in database, ansible inventory and
    overrides, this commit converts the IP addresses in payload to
    standard text format of IPv6 address during adding a new subcloud.

    Tested with installing and bootstrapping a new subcloud(RVMC
    configured) with the correct IPv6 address values, but with
    unrecommended upper case letters and '0'. The addresses are
    converted to standard format in database, ansible inventory and
    overrides files.

    Partial-Bug: 1931459
    Signed-off-by: Yuxing Jiang <email address hidden>
    Change-Id: I6c26e749941f1ea2597f91886ad8f7da64521f0d

commit 2cf5d6d5cef0808c354f7575336aec34253993b3
Author: albailey <email address hidden>
Date: Thu May 20 14:19:24 2021 -0500

    Delete existing vim strategy from subcloud during patch orch

    When dcmanager creates a patch strategy, if a subcloud has an
    existing vim patch strategy, it will attempt to re-use
    that strategy during its patching phase, which may result in an
    error.

    This commit deletes the existing vim patch strategy in
    a subcloud, if it exists, so it can be re-created.
    If the strategy cannot be deleted, orchestration fails.

    Change-Id: Id35ef26ed3ddae6d71874fc6bac11df147f72323
    Closes-Bug: 1929221
    Signed-off-by: albailey <email address hidden>

commit 9e14c83f0162549a2a94cb8bc1e73dbc4f4d4887
Author: albailey <email address hidden>
Date: Tue Jun 1 14:37:14 2021 -0500

    Adding activation retry to upgrade orchestration

    When performing an activation, the keystone endpoints may not
    be accessible in the subcloud due to the asyncronous way that
    cert-mon can trigger a restart of keystone.

    This would have occasionally resulted in the upgrade activation
    failing to be initiated, and orchestration needing to be invoked
    again to resume.

    This 'hack' adds retries and sleeps to the initial
    activation action.

    Change-Id: Ic757521dec7bdc248a51a70b5463caafe7927360
    Partial-Bug: 1927550
    Signed-off-by: albailey <email address hidden>

commit bb604c0a9b872efd65fa45f1e2269995818c6262
Author: Tee Ngo <email address hidden>
Date: Thu May 27 22:17:16 2021 -0400

    Fix subcloud show --detail command related issues

    If the subcloud is offline, the command stalls and eventually returns
    the "ERROR (app)" output. If the subcloud is online, the oam_floating_ip
    info is excluded from the output when the subcloud id instead of subcloud
    name is specified.

    This commit fixes both of the above issues.

    Closes-Bug: 1929893
    Change-Id: I995591368564539b0e6af185b1adba2db73e0e46
    Sign...

tags: added: in-f-centos8
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.