| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
|
| |
The `rabbit_khepri_queue` projection ETS table can be used in the
read-only functions in `rabbit_db_queue` when Khepri is enabled. This
fixes performance issues when looking up queues for message delivery
with Khepri enabled.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
to fix khepri compilation
|
| |
|
|
|
|
|
| |
BUILD.khepri was generated with this command:
bazel run gazelle -- update-repos --verbose \
--build_files_dir=bazel hex.pm/khepri@0.6.0
|
| | |
|
| |
|
|
|
|
|
|
|
| |
One of the Khepri revisions on the projections branch used `undefined`
in extended projection functions to indicate that there was no old/new
tree node. This was eventually changed before being merged so that the
old and new tree node properties (`khepri:node_props()`) are always
provided and an empty map is passed instead if there is no tree node in
the old/new tree.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old shape used the source exchange as the key in a bag table. This
made it cheaper to list all bindings for an exchange but it caused a
bad regression for inserting many bindings, for example in a definition
import. If all bindings are for the same exchange, inserting N bindings
has exponential time complexity when using a bag compared to the
roughly linear time complexity using a set.
This reflects the shape of the `rabbit_route` table from mnesia: the
whole `#binding{}` record is the key of the table and the table is
a set. With this change, the time taken to import definitions roughly
matches mnesia.
|
| |
|
|
|
| |
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Co-authored-by: Diana Parra Corbacho <dparracorbac@vmware.com>
|
| |
|
|
|
| |
Co-authored-by: Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com>
Co-authored-by: Diana Parra Corbacho <dparracorbac@vmware.com>
|
| |\
| |
| | |
Move missing Mnesia-specific code to rabbit_db_* modules
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
module
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
mirrored_supervisor
|
| | | |
|
| | | |
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | | |
rabbitmq/fix-default-feature-flags-filtering-in-ff-controller
Feature flags: Fix experimental feature flags inventory
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The return value was incorrectly specified and documented: it can return
`undefined` when a feature flag name is passed and that feature flag is
unknown.
So far, this function is always called with a feature flag properties
map, in which case it doesn't return `undefined`.
|
| | | |
| | |
| | |
| | |
| | | |
"~~" was ok when the final string was a format string, but it's not
anymore. We need a simple "~".
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When we collect feature flag properties from all nodes, we start with an
empty cluster inventory (a common Erlang recursion pattern). This means
that all feature flags are unknown at first.
In `merge_feature_flags()`, we must compute a global stability level for
each feature flag, in case all nodes are not on the same page (like one
nodes considers a feature flag experimental, but another one marks it as
stable). That's why we rank stability level: required > stable >
experimental.
This ranking had one issue: `rabbit_feature_flags:get_stability/1`
defaults to `stable` if a feature flag has not explicit stability set.
Therefore, with our empty starting inventory, the starting stability
would be `stable`. And it would superceed an experimental feature flag
stability level, even though all nodes agree on that.
Now, if a feature flag is missing from our inventory being collected, we
consider its stability level to be experimental. This is different from
a known feature flag with no explicit stability level. This way, we are
sure that feature flags marked as experimental everywhere will be
considered experimental globally.
|
| |\ \
| | |
| | | |
Fix channel crash when draining AMQP 1.0 credits from classic queue
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Classic queues used a different format for the `{send_drained, _}`
queue type action which was missed originally. This change handles both
formats in the channel for backwards compatibility
as well as changes classic queues to conform to the same format when
sending the queue event.
Whilst adding tests for this in the amqp10 plugin another issue around
the amqp10_client and filters was discovered and this commit also includes
improvements in this area. Such as more leninet support of source filters.
|
| |\ \ \
| | | |
| | | | |
Forward-port dialyzer related rabbitmq_cli fixes from #7122
|
| | | | | |
|
| |\ \ \ \
| |/ / /
|/| | | |
Fix issue #7142
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The issue is that users retrieved with
the intention to list in the limits view
are not paged hence they are not wrapped
around a paging struct where users would be
under items attribute.
Pending selenium tests
|
| |\ \ \ \
| | | | |
| | | | | |
Fix shell quoting in bazel rabbitmqctl helper
|
| |/ / / /
| | | |
| | | |
| | | | |
E.g. any complex `rabbitmqctl eval` was not possible via `bazel run rabbitmqctl`.
|
| |\ \ \ \
| |/ / /
|/| | | |
CQ: Fix performance regression after moving to v2 sets
|
| | | |/
| |/|
| | |
| | |
| | | |
sets:from_list also must be told to use v2 otherwise
it will use v1.
|
| |\ \ \
| |_|/
|/| | |
List CPU core count in 'rabbitmq-diagnostics cluster_status'
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Both to simplify troubleshooting in some cases and to make it
easier to spot licensing irregularities.
|
| |\ \ \
| | | |
| | | | |
Activate stream delivery v2 correctly
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
As soon as v2 is supported, whatever the min supported
version is.
|
| |\ \ \ \
| |_|/ /
|/| | | |
|
| |/ / /
| | |
| | |
| | | |
(cherry picked from commit 5d8ba2f32ae012d883cc61d3e15593b67cf89e37)
|
| |\ \ \
| | | |
| | | | |
3.10.17 release notes
|