Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
0.30, 0.32, qpid-java-6.0
-
None
Description
The Java Broker's BDB HA implementation permits the mastership to be transferred around the group. To initiate this change, a user mutates the model attribute "role" on object BDBHAVHN or BDBHARRN to have the value MASTER through a management interface.
If I make this change once, the change is effective. If later the mastership moves again (as a result of a failure and subsequent election or a transfer master elsewhere in the group), the attempt to move the mastership back to this node is ignored (defect).
The issue is that ACO#changeAttributes blocks the subsequent change because it does not know that attribute's value is anything other than MASTER. This is because BDBHAVHN#setRole (happens asynchronously as the mastership changes) updates only the CO view of the attribute (#_role), leaving ACO#_attributes.get(ROLE) with a stale value MASTER. The Broker containing the node needs to be bounce to correct the state problem.
The main use-case for transfer master is to restore the master to its business as usual position following a device failure. This use-case is not affected by this defect.