| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
grabbing them anyway.
|
| | | |
|
| | | |
|
| | |\ |
|
| | | | |
|
| | | |\ |
|
| | | |\ \ |
|
| | | | | | |
|
| | | | | | |
|
| | | |/ / |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
names come out correctly for channels, stomp, mqtt and means we can remove some special casing from mgmt. Remove the extra process. Add a mechanism to disable the whole thing in case people have broken configs.
|
| | | | | |
|
| | | |\ \ |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| |\ \ \ \ \ |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
(and not the Erlang client)
The server (and *only* the server) starts channels with
rabbit_channel_sup:start_link({tcp, ...}). Writers are created as part
of that. We pass an extra argument to rabbit_writer:start_link in
this case, indicating that the reader wants be told by the writer to
emit stats.
Internally, the writer handles the stats/no_stats distinction by
initialising the stats timer differently. We introduce a new function
to create a disabled stats timer, thus taking advantage of all the
existing logic in rabbit_event that suppresses timer/stats operations
when stats are disabled.
This approach requires inclusion of rabbit_event in rabbit_common.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
We set up a stats timer in the writers but rather emitting any stats
directly from there we just get them to 'ping' the reader, which will
then emit stats based on its own timer.
The timer in the writer is created when a socket operation has been
confirmed.
a little bit of drive-by refactoring to make implementation easier:
- move state creation into one place
- move reader into state
TODO: suppress all this when in the Erlang client
|
| |\ \ \ \ \ \ |
|
| | |\ \ \ \ \ \
| | |/ / / / / |
|
| | |/ / / / / |
|
| |/ / / / / |
|
| |\ \ \ \ \ |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
and s/not_found_or_absent/not_found_or_absent_dirty
and make the signatures match
|
| | |\ \ \ \ \
|/ / / / / / |
|
| | |\ \ \ \ \ |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
- change binding:call_with_source_and_destination/3 to replace {error,
source_not_found | destination_not_found |
source_and_destination_not_found} with {error, {resources_missing,
[{not_found, #resource{}} | {absent, Q}]}}.
- the change ripples through rabbit_channel:binding_action, which can
now produce nice not_founds.
- We now only report one of the errors when there is something wrong
with both source and destination. I reckon this is acceptable; we
could do better but it would involve a fair bit of extra code.
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
- move channel:absent/1 to misc, since we need it in multiple modules
- change amqqueue:with/3 s.t. the error fun is invoked with
not_found|{'absent', Q}.
- let this change ripple through to with/2, making it return either
error. This in turn has just two call sites
- in 'queue.declare' in the channel, which we expand to handle the
'absent' case (producing a descriptive not_found error, as per
above)
- in mq_misc:if_mirrored_queue, whose callers currently do not
handle errors at all - see bug 25236
- let the change also ripple through to with_or_die, handling the new
'absent' case as above. This takes care of passive queue.declare.
- with_or_die is called by with_exclusive_access_or_die. This takes
care of basic.get, basic.consume, queue.delete and queue.purge
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
- change amqqueue:internal_declare to return {absent, Q} instead
of 'not_found'
- let this ripple through amqqueue_process:declare, stopping with
{absent, Q} instead
- that in in turn will end up in in amqqueue:declare/5. Instead of
inovking misc:not_found(QName), which was EXITing, we make {absent,
Q} part of the API.
- at the call site in the channel we handle the new {absent, Q} case
and produce a nice error message.
|
| | | | | | | | |
|
| | |_|/ / / /
|/| | | | |
| | | | | |
| | | | | |
| | | | | | |
looks like one cannot define two macros with the same name but
different arity
|
| |\ \ \ \ \ \ |
|
| | |\ \ \ \ \ \
| | |_|_|_|_|/
| |/| | | | | |
|
| | |\ \ \ \ \ \ |
|
| | | |\ \ \ \ \ \ |
|
| | | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
readable.
|
| | | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
OTPish. Yes, rabbit_misc:table_lookup and rabbit_misc:set_table_value get this wrong, but we should not copy that.
|
| | | | | | | | | | |
|
| | | | | | | | | | |
|
| | | | | | | | | | |
|
| | | | | | | | | | |
|