Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 495718

Summary: Python client needs to have failover for clustering
Product: Red Hat Enterprise MRG Reporter: William Henry <whenry>
Component: python-qpidAssignee: Rafael H. Schloming <rafaels>
Status: CLOSED ERRATA QA Contact: Frantisek Reznicek <freznice>
Severity: high Docs Contact:
Priority: high    
Version: 1.1.1CC: esammons, freznice, gsim, iboverma, lans.carstensen, tao, tross
Target Milestone: 1.3Keywords: FutureFeature
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
The Messaging Client Python API now provides a failover mechanism for clustered brokers.
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-10-14 16:09:52 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description William Henry 2009-04-14 14:09:01 UTC
Description of problem:

Python client needs to provide failover mechanism for clustered brokers similar to C++.



Version-Release number of selected component (if applicable):
1.2

How reproducible:


Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:
If clustered broker fails with python client sessions, then the python clients should automatically failover to the failover broker. 


Additional info:

Comment 3 Frantisek Reznicek 2010-03-18 09:34:41 UTC
BZ is MODIFIED, but it seems not implemented yet / no info how to enable failover and no info on commit revision.

Could you possibly write an update what is the status here, please?

(adding missing FutureFeature keyword to track it as feature)

Comment 4 Rafael H. Schloming 2010-03-19 12:45:06 UTC
You can enable failover with the reconnect and backups options:

conn = Connection(..., reconnect=True, backups=[("host", 1234), ...])

If you want to automatically update backups via the failover exchange, you can do this:

from qpid.messaging.util import auto_update_backups
conn = Connection(..., reconnect=True, backups=[("host", 1234), ...])
auto_update_backups(conn)

If you do the auto_update, then you don't need to bother specifying any backups when creating the Connection if you don't want to. The backups will get filled in on the initial update.

Comment 5 Frantisek Reznicek 2010-04-02 06:51:46 UTC
The feature has been implemented in high level API. Verified on RHEL 5.5 i386 / x86_64 on packages
qpid-cpp-server-0.7.916826-2.el5
python-qpid-0.7.917557-4.el5

Test excersizes modified spout/drain clients against running/not-running/toggling brokers in cluster to see if they are able to reconnect. All three reconnect strategies tested (no reconnection / reconnection from url backup list and reconnection from failover exchange)

-> VERIFIED

Comment 7 Douglas Silas 2010-10-07 15:46:39 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
The Messaging Client Python API now provides a failover mechanism for clustered brokers.

Comment 9 errata-xmlrpc 2010-10-14 16:09:52 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2010-0773.html