AMQP 1.0 Change functional test to avoid sharing transports
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
oslo.messaging |
Fix Released
|
Undecided
|
Ken Giusti |
Bug Description
Two of the driver functional tests do not pass when run against the AMQP 1.0 driver:
CallTestCase.
CallTestCase.
Both of these tests create multiple RPC servers subscribed to the same target. The tests verify that, if multiple RPC requests are sent to that target, the requests are distributed across all servers.
This fails for the amqp1 driver - in this case, all RPC requests are sent to one of the servers rather than distributed across all the servers.
I've looked into this a bit - the reason this happens is that servers are all using the same instance of a transport object. This means that, in the case of the amqp1 driver (which pools connections), only one connection is created to the broker for all servers (since all servers are using the same url).
Contrast this to the qpid driver - that driver creates a new connection for every subscription, which results in multiple connections from the single transport: one for each server.
The qpidd broker will try to evenly distribute messages across competing consumers, but _only_ at the connection level. qpidd does not distribute messages across consumers that share the same connection. I've got a bug opened against this upstream (https:/
I suspect that it is unlikely that there will be a case where multiple servers from within the same process - that is, sharing the same transport object - will subscribe to the same target (correct me if I'm wrong). If that is the case, then the most common use case will have each server create its own transport. I propose we modify the functional tests to adopt this behavior.
On the other hand, I could modify the amqp1 driver to avoid connection pooling, but I don't see a real valid reason for doing so (if my assumption re: sharing transports is correct).
Changed in oslo.messaging: | |
milestone: | none → 1.8.1 |
status: | Fix Committed → Fix Released |
status: | Fix Released → Fix Committed |
milestone: | 1.8.1 → next-liberty |
Changed in oslo.messaging: | |
status: | Fix Committed → Fix Released |
Fix proposed to branch: master /review. openstack. org/155476
Review: https:/