No reasons to kept fanout queues in case then
a rpc server is gracefully shutdown. The expiration
time of the fanout queue is too long (30 mins), so for
large scales it can accumulate a lot of messages before it be removed
Closes-Bug: 1606213
Change-Id: Ieaa35c454df542042f3a5424d70f87d486693024
Currently proxy binds to a random port from a port range
specified in zmq config and therefore needs to register in
redis to become visible to clients and servers.
That could be done much simpler by using a static port(s) for
proxy. Moreover zmq handles reconnect to a socket if restarted
service uses the same port number as it had before restart.
Change-Id: I088792fd08a4161d08e9160830fc3ec4d560cca4
We can reduce a workload of rabbitmq through implementation
of expiration mechanism for idle connections in the pool with
next properties:
conn_pool_ttl (default 20 min)
conn_pool_min_size: the pool size limit for expire() (default 2)
The problem is timeless idle connections in the pool, which can be created
via some single huge workload of RPCServer. One SEND connection is heartbeat
thread + some network activity every n second. So, we can reduce it.
Here is two ways to implement an expiration:
[1] Create a separated thread for checking expire date of connections
[2] Make call expire() on pool.get() or pool.put()
The [1] has some threading overhead, but probably insignificant
because the thread can sleep 99% time and wake up every 20 mins (by default).
Anyway current implementation is [2].
Change-Id: Ie8781d10549a044656824ceb78b2fe2e4f7f8b43
Many assertEqual sentences don't follow assertEqual(expected, actual),
These misplaces have 2 impacts:
1, giving confusing messages when some tests failed.
2, mislead other developers, new test modules may follow these wrong pattern.
This patch fix all of them.
Change-Id: Icc6e404dd02fe47b76c7366d31d91c8d8e464f54
Closes-Bug: #1604213
This patch merges small logically related publishers supporting
only some messaging patterns into bigger ones supporting all
messaging patterns at once.
Change-Id: Ic47e4d89166dd14f8a67101e666dc780a1ccb2a8
Now that there is a passing gate job, we can claim support for
Python 3.5 in the classifier. This patch also adds the convenience
py35 venv.
Change-Id: I8871f4e17ab806c00661d0c960a216d0a3fc5449
Replace assertEqual(None, *) with assertIsNone in tests to have more
clear messages in case of failure.
Change-Id: Idb0376964ecc65d04e5b79753efd8f6a0b822bf8
Closes-Bug: #1280522
This patch refactors publishers by separating responsibilities and
introducing senders and waiters within publishers.
Change-Id: I90df59d61af2b40b516a5151c67c184fcc91e366
Co-Authored-By: Oleksii Zamiatin <ozamiatin@mirantis.com>
It was never clear was the purpose of this option.
For the RPC API point of view raising MessageDeliveryFailure is kind
of unexpected. For the Notification API, this is weird that when
application put retry=-1, the lib stop to retry only with rabbit.
So this change deprecates this option for removal.
Change-Id: I4ac3a062426418276c96e1745d1c96a8525c36da
By default oslo.cfg sets the default value as None. There is no
need to explicitly do this.
TrivialFix
Change-Id: I57fa9651ea56a180a910d6cbf7b7f385da8af239
This patch fixes the problem of sending messages in the following
configuration: use_router_proxy=True and use_pub_sub=False. Right
now we have incorrect both cast and fanout messages: cast acts as
fanout (instead of round-robin) and fanout duplicate each message
twice.
Change-Id: I2b039aa462ddde300fd50b3754e4fe66abf6e635
The Cyrus SASL library can only be initialized once per process. And
the configuration must remain available until all the tests have run.
Change-Id: I2810ecf53956fc5d4fcdc944f8e06237ca985e6a
Closes-Bug: #1591211