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.
Created attachment 415236 [details] simple qmf console
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()....
Merged to mrg_1.3.x branch: http://mrg1.lab.bos.redhat.com/git/?p=qpid.git;a=commitdiff;h=a15f49f58cdb1ee2906f03bb487cf40c43498238
Upstream revision: 946801