Upgrade charm fails looking for handler that is in new charms.openstack code
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Gnocchi Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack AODH Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Barbican Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Designate Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Manila Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Masakari Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Nova Cell Controller Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Octavia Charm |
Fix Released
|
Critical
|
David Ames | ||
OpenStack Placement Charm |
Fix Released
|
Critical
|
David Ames | ||
charms.openstack |
Invalid
|
Critical
|
Unassigned |
Bug Description
The fix for related bug LP Bug #1858132 [0] added a default handler for cluster.available.
Field experienced failed charm upgrades for Designate and Octavia in what appears to be a race condition in which the reactive handlers expect a default handler which has not yet been installed via wheelhouse.
In other words, the code in charms.openstack hasn't been unpacked before reactive is looking for that code.
The following Traceback occurs:
2020-04-27 17:15:00 DEBUG upgrade-charm Installing collected packages: PyYAML, pyaml, netaddr, Tempita, six, MarkupSafe, Jinja2, charmhelpers, charms.openstack, psutil, dnspython, netifaces, charms.reactive, wheel
2020-04-27 17:15:01 DEBUG upgrade-charm Successfully installed Jinja2-2.10.3 MarkupSafe-1.1.1 PyYAML-5.2 Tempita-0.5.2 charmhelpers-
2020-04-27 17:15:01 DEBUG worker.uniter.jujuc server.go:182 running hook tool "juju-log"
2020-04-27 17:15:01 INFO juju-log Reactive main running for hook upgrade-charm
2020-04-27 17:15:01 DEBUG worker.uniter.jujuc server.go:182 running hook tool "juju-log"
2020-04-27 17:15:01 ERROR juju-log Hook error:
Traceback (most recent call last):
File "/var/lib/
bus.discover()
File "/var/lib/
_register_
File "/var/lib/
_load_
File "/var/lib/
return importlib.
File "/var/lib/
return _bootstrap.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "/var/lib/
'cluster.
File "/var/lib/
.format(state))
RuntimeError: Default handler for 'cluster.available' doesn't exist
2020-04-27 17:15:01 DEBUG upgrade-charm Traceback (most recent call last):
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm main()
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm bus.discover()
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm _register_
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm _load_module(root, filepath)
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm return importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm return _bootstrap.
2020-04-27 17:15:01 DEBUG upgrade-charm File "<frozen importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "<frozen importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "<frozen importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "<frozen importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "<frozen importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "<frozen importlib.
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm 'cluster.
2020-04-27 17:15:01 DEBUG upgrade-charm File "/var/lib/
2020-04-27 17:15:01 DEBUG upgrade-charm .format(state))
2020-04-27 17:15:01 DEBUG upgrade-charm RuntimeError: Default handler for 'cluster.available' doesn't exist
2020-04-27 17:15:02 ERROR juju.worker.
Changed in charm-aodh: | |
importance: | Undecided → Critical |
Changed in charm-aodh: | |
status: | New → Triaged |
Changed in charm-designate: | |
status: | New → Triaged |
Changed in charm-octavia: | |
status: | New → Triaged |
Changed in charm-aodh: | |
assignee: | nobody → David Ames (thedac) |
Changed in charm-designate: | |
assignee: | nobody → David Ames (thedac) |
Changed in charm-octavia: | |
assignee: | nobody → David Ames (thedac) |
Changed in charm-aodh: | |
milestone: | none → 20.05 |
Changed in charm-designate: | |
milestone: | none → 20.05 |
Changed in charm-octavia: | |
milestone: | none → 20.05 |
Changed in charm-barbican: | |
importance: | Undecided → High |
milestone: | none → 20.05 |
status: | New → Triaged |
importance: | High → Critical |
Changed in charm-gnocchi: | |
assignee: | nobody → David Ames (thedac) |
importance: | Undecided → Critical |
milestone: | none → 20.05 |
status: | New → Triaged |
Changed in charm-barbican: | |
assignee: | nobody → David Ames (thedac) |
Changed in charm-manila: | |
assignee: | nobody → David Ames (thedac) |
importance: | Undecided → Critical |
milestone: | none → 20.05 |
status: | New → Triaged |
Changed in charm-masakari: | |
assignee: | nobody → David Ames (thedac) |
importance: | Undecided → Critical |
milestone: | none → 20.05 |
status: | New → Triaged |
Changed in charm-nova-cell-controller: | |
assignee: | nobody → David Ames (thedac) |
importance: | Undecided → Critical |
milestone: | none → 20.05 |
status: | New → Triaged |
Changed in charm-placement: | |
assignee: | nobody → David Ames (thedac) |
importance: | Undecided → Critical |
milestone: | none → 20.05 |
status: | New → Triaged |
Changed in charm-gnocchi: | |
status: | Fix Committed → Fix Released |
Changed in charm-aodh: | |
status: | Fix Committed → Fix Released |
Changed in charm-barbican: | |
status: | Fix Committed → Fix Released |
Changed in charm-designate: | |
status: | Fix Committed → Fix Released |
Changed in charm-manila: | |
status: | Fix Committed → Fix Released |
Changed in charm-masakari: | |
status: | Fix Committed → Fix Released |
Changed in charm-nova-cell-controller: | |
status: | Fix Committed → Fix Released |
Changed in charm-octavia: | |
status: | Fix Committed → Fix Released |
Changed in charm-placement: | |
status: | Fix Committed → Fix Released |
Field hack workaround:
Remove cluster.available from the following in reactive/ $CHARM_ NAME_handlers. py
charm.use_defaults( available' ,
'cluster.
)
Removing this will stop reactive from looking for the default handler which should allow for the upgrade-charm hook to complete thus unpacking the charms.openstack code it is looking for.