Bug 593828

Summary: QMF: python console needs ability to filter unsolicited events.
Product: Red Hat Enterprise MRG Reporter: Ken Giusti <kgiusti>
Component: qpid-qmfAssignee: Ken Giusti <kgiusti>
Status: CLOSED CURRENTRELEASE QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: high Docs Contact:
Priority: high    
Version: DevelopmentCC: jsarenik, matt
Target Milestone: 1.3   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-10-22 10:26:58 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:
Bug Depends On:    
Bug Blocks: 587410, 593831    
Attachments:
Description Flags
simple qmf console none

Description Ken Giusti 2010-05-19 19:23:42 UTC
Description of problem:

During scale testing, it was found that adding or removing a qmf console caused all other qmf consoles to receive broker events (clientConnect, queueDeclare, bind, etc).  These events are the management events generated by the broker, and are of no concern to the console application.  

As we scale up the number of consoles, the cpu load on the consoles & broker incurred by these unnecessary messages becomes a limiting scale factor.


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

How reproducible:
100%

Steps to Reproduce:
1. start a broker
2. add a number of python qmf consoles.
3. watch the cpu activity of the consoles.
4. start or stop a console
5. a short burst of cpu activity is seen across all consoles.
  
Actual results:

Causes load on unrelated consoles.


Expected results:

Unrelated consoles should not be affected.

Additional info:

A qmf console should be able to indicate to the broker which events it is interested in receiving.

Comment 1 Ken Giusti 2010-05-19 19:27:54 UTC
Created attachment 415236 [details]
simple qmf console

Comment 2 Ken Giusti 2010-05-20 21:48:23 UTC
Committed revision 946801.

New qmf console api added:  Session.addEventFilter().

Takes arguments:

   package="<schema package string>, 
   event="<specific event>"

event is optional.

Allows console to only receive those events from the given package.  

Example:


    session = Session(console,
                      rcvObjects=opts.objects,
                      rcvEvents=opts.events,
                      rcvHeartbeats=opts.heartbeats,
                      manageConnections=opts.manage_connections)


    # only want events from org.apache.qpid.broker and
    # org.apache.qpid.agent.example packages...

    session.addEventFilter(package="org.apache.qpid.broker")
    session.addEventFilter(package="org.apache.qpid.agent.example")

Must be called before first addBroker()....

Comment 4 Ken Giusti 2010-05-24 19:15:54 UTC
Upstream revision: 946801