[dockerctl] Race condition in check_ready function for container 'nailgun'
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Fuel for OpenStack |
Fix Committed
|
Medium
|
Oleg S. Gelbukh | ||
8.0.x |
Fix Committed
|
Medium
|
Oleg S. Gelbukh | ||
Mitaka |
Won't Fix
|
Medium
|
Registry Administrators |
Bug Description
When container 'nailgun' started with dockerctl, it incorrectly detects that the container is ready, i.e. Puppet successfully applied inside the container.
Steps to reproduce:
1. Install Fuel Admin node using ISO 7.0
2. Install fuel-octane from the source code:
yum install -y git python-pip python-paramiko
git clone https:/
cd fuel-octane && git checkout stable/7.0 && pip install --no-deps -e .
3. Create backup of Fuel Admin node configuration
octane fuel-backup --to /tmp/backup.tar.gz
4. Copy backup.tar.gz file to external location.
5. Install Fuel Admin node using ISO 8.0
6. Install fuel-octane from the source code:
yum install -y git python-pip python-paramiko
git clone https:/
cd fuel-octane && git checkout stable/8.0 && pip install --no-deps -e .
7. Copy backup file to 8.0 Admin node's /tmp dir
8. Restore backup:
octane fuel-restore -v --debug --from /tmp/backup.tar.gz -p <admin_pass>
Expected result:
Restore is successfully finished
Actual result:
Restore failed at openstack fixture upload phase due to ProgrammaticError from SQL server:
2016-02-15 12:37:16 ERROR octane.
2016-02-15 12:37:16 ERROR octane.
2016-02-15 12:37:16 ERROR octane.
2016-02-15 12:37:16 ERROR octane.
Root cause:
Command 'dockerctl start nailgun' starts the 'nailgun' container and immediately reports it's readiness. However, at the moment of check, puppet is not yet started in the container, not finished it's work.
Thus, the database sync is still not done when the request is sent, and SQL server replies with ProgrammaticError, since the column in question is not yet created in the DB schema.
Regression was introduced with the following change that fixed bug in systemd support in dockerctl: https:/
Workaround:
Insert delay in dockerctl when docker-
Solution:
Add check for the nailgun API response in dockerctl functions.
Changed in fuel: | |
milestone: | none → 9.0 |
status: | New → Confirmed |
importance: | Undecided → Medium |
milestone: | 9.0 → 8.0-updates |
assignee: | nobody → Fuel Octane Dev Team (fuel-octane) |
Changed in fuel: | |
milestone: | 8.0-updates → 9.0 |
Changed in fuel: | |
assignee: | Fuel Octane Dev Team (fuel-octane) → Oleg S. Gelbukh (gelbuhos) |
status: | Confirmed → In Progress |
tags: | added: non-release team-upgrades |
Related fix proposed to branch: master /review. openstack. org/280608
Review: https:/