[ 
https://issues.apache.org/jira/browse/QPID-6996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15096253#comment-15096253
 ] 

Keith Wall commented on QPID-6996:
----------------------------------

The underlying issue is that BDBHAVHN and BDBHARRN have {{role}} defined as a 
ManagedAttribute and the field itself {{ManagedAttributeField}} and then cause 
{{_role}} to be updated (asynchronously) without the knowledge ACO.   This 
allows the inconsistency to form. This usage is an abuse of the ACO framework.  
Really the attribute {{role}} should be a {{DerivedAttribute}} which reflects 
the node's current role in the group.  Updates to the role should be made as an 
operation rather than as an update, perhaps BDBHAVNH#requestMakeMaster. This is 
an API change and will need to await a major release to do both parts.

In the short term (v6.0.x/v6.1.x), there doesn't appear to be an easy 
workaround.  The least unattractive hack seems to be to have 
ACO#changeAtrributes() call #getActualAttribute and increate the visibility of 
#getActualAttribute to protected so that BDBHAVH/BDBHARRN can override to 
return the correct value in the case of ROLE.



> Can't change make a node master twice 
> --------------------------------------
>
>                 Key: QPID-6996
>                 URL: https://issues.apache.org/jira/browse/QPID-6996
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: 0.30, 0.32, qpid-java-6.0
>            Reporter: Keith Wall
>            Priority: Minor
>
> 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 
> affected by this defect.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to