private-address not refreshed in relation-data after binding change
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical Juju |
Incomplete
|
High
|
Joseph Phillips | ||
OpenStack HA Cluster Charm |
Fix Released
|
Undecided
|
Rodrigo Barbieri |
Bug Description
Juju version used: 2.9.12
On a fully functional deployment where hacluster has the correct binding for the hanode endpoint (therefore matching the IP assigned to the unit), changing the binding to an incorrect one (by running juju bind hacluster <wrong_binding> --force) expectedly causes network-get to fail and hanode-
Now, setting the binding back to the correct one (through juju bind hacluster <correct_binding>) restores the network-get functionality, but it does not restore the missing private-address property from the relation-data. Therefore the hanode-
How to force refresh the relation-data to re-read parameters from network-get ?
As I understand, the properties private-address, ingress-address and egress-subnets are "essential" properties that are present in every endpoint, as long as network-get command is successful.
Is something blocking the relation-data to being refreshed or re-querying network-get ? like a hook error or blocked state?
Things I have tried:
1) First I tried smoothing out the errors from the wrong binding change until status was clear and back to active/idle, before invoking "juju bind hacluster <correct_binding>", such as:
a) juju resolved --no-retry
b) writing ring0_addr values in corosync.conf manually
Still, changing the binding to the correct one resulted in errors due to the lack of private-address property.
2) With the correct binding now set, I then tried to refresh the property and overcome the errors in several ways:
a) juju resolved --no-retry
b) writing ring0_addr values in corosync.conf manually
c) setting the private-address properties manually through relation-set
d) restarting jujud
e) restarting the lxd container
None of those would work, and despite having set the property manually, the code at [0] still re-read "None" from the private-address properties in the relation-data as if they weren't set.
description: | updated |
Changed in juju: | |
status: | New → Triaged |
importance: | Undecided → High |
assignee: | nobody → Joseph Phillips (manadart) |
milestone: | none → 2.9.26 |
Changed in juju: | |
status: | Triaged → Fix Committed |
Changed in juju: | |
status: | Fix Committed → Triaged |
Changed in juju: | |
milestone: | 2.9.26 → 2.9.27 |
Changed in juju: | |
milestone: | 2.9.27 → 2.9.28 |
tags: | added: sts |
Changed in juju: | |
status: | Triaged → Incomplete |
Changed in juju: | |
milestone: | 2.9.28 → 2.9.29 |
description: | updated |
Changed in charm-hacluster: | |
assignee: | nobody → Rodrigo Barbieri (rodrigo-barbieri2010) |
milestone: | none → 22.04 |
Changed in charm-hacluster: | |
status: | Fix Committed → Fix Released |
quick update, I repeated my tests now doing relation-set of the ingress-address and egress-subnets properties as well, logs still showed "None" being read from the relation, I further insisted on "juju resolved --no-retry" and saw the properties now being read successfully. A juju config command flipping debug value later broke it again, but it healed itself afterwards.
So right now it seems the most consistent workaround is to apply the properties manually through relation-set and insist on "juju resolved --no-retry" until it finally works. Still, a bugfix is needed to force the network-get to be invoked and update the properties.