Skip to content

Commit 2c865e9

Browse files
committed
Make plugin compatible with 3.12
due to rabbitmq/rabbitmq-server#6821
1 parent 07af0c0 commit 2c865e9

File tree

4 files changed

+26
-19
lines changed

4 files changed

+26
-19
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
PROJECT = rabbitmq_lvc_exchange
22
PROJECT_DESCRIPTION = RabbitMQ Last Value Cache exchange
33

4-
RABBITMQ_VERSION ?= v3.11.x
4+
RABBITMQ_VERSION ?= v3.12.x
55
current_rmq_ref = $(RABBITMQ_VERSION)
66

77
define PROJECT_APP_EXTRA_KEYS
8-
{broker_version_requirements, ["3.11.0"]}
8+
{broker_version_requirements, ["3.12.0"]}
99
endef
1010

1111
dep_amqp_client = git_rmq-subfolder rabbitmq-erlang-client $(RABBITMQ_VERSION)

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ binding key.
1616

1717
## Supported RabbitMQ Versions
1818

19-
The most recent release of this plugin targets RabbitMQ 3.11.x.
20-
Release series earlier than 3.9 are [out of support](https://www.rabbitmq.com/versions.html).
19+
The most recent release of this plugin targets RabbitMQ 3.12.x.
2120

2221
## Supported Erlang/OTP Versions
2322

24-
Latest version of this plugin [requires Erlang 25.0 or later versions](https://www.rabbitmq.com/which-erlang.html), same as RabbitMQ 3.11.x.
23+
Latest version of this plugin [requires Erlang 25.0 or later versions](https://www.rabbitmq.com/which-erlang.html), same as RabbitMQ 3.12.x.
2524

2625
## Installation
2726

src/rabbit_exchange_type_lvc.erl

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
-export([description/0, serialise_events/0, route/2]).
1414
-export([validate/1, validate_binding/2,
15-
create/2, recover/2, delete/3, policy_changed/2,
15+
create/2, recover/2, delete/2, policy_changed/2,
1616
add_binding/3, remove_bindings/3, assert_args_equivalence/2]).
1717
-export([info/1, info/2]).
1818

@@ -32,7 +32,7 @@ route(#exchange{name = Name},
3232
CC when is_list(CC) -> CC;
3333
To -> [To]
3434
end,
35-
rabbit_misc:execute_mnesia_transaction(
35+
rabbit_mnesia:execute_mnesia_transaction(
3636
fun () ->
3737
[mnesia:write(?LVC_TABLE,
3838
#cached{key = #cachekey{exchange=Name,
@@ -45,18 +45,21 @@ route(#exchange{name = Name},
4545

4646
validate(_X) -> ok.
4747
validate_binding(_X, _B) -> ok.
48-
create(_Tx, _X) -> ok.
48+
create(_Serial, _X) -> ok.
4949
recover(_X, _Bs) -> ok.
5050

51-
delete(transaction, #exchange{ name = Name }, _Bs) ->
52-
[mnesia:delete(?LVC_TABLE, K, write) ||
53-
#cached{ key = K } <-
54-
mnesia:match_object(?LVC_TABLE,
55-
#cached{key = #cachekey{
56-
exchange = Name, _ = '_' },
57-
_ = '_'}, write)],
51+
delete(_Serial, #exchange{ name = Name }) ->
52+
rabbit_mnesia:execute_mnesia_transaction(
53+
fun() ->
54+
[mnesia:delete(?LVC_TABLE, K, write) ||
55+
#cached{ key = K } <-
56+
mnesia:match_object(?LVC_TABLE,
57+
#cached{key = #cachekey{
58+
exchange = Name, _ = '_' },
59+
_ = '_'}, write)]
60+
end),
5861
ok;
59-
delete(_Tx, _X, _Bs) ->
62+
delete(_Serial, _X) ->
6063
ok.
6164

6265
policy_changed(_X1, _X2) -> ok.
@@ -85,7 +88,7 @@ add_binding(none, #exchange{ name = XName },
8588
[#cached{content = Msg}] ->
8689
Delivery = rabbit_basic:delivery(
8790
false, false, Msg, undefined),
88-
Qs = rabbit_amqqueue:lookup(
91+
Qs = rabbit_amqqueue:lookup_many(
8992
rabbit_exchange:route(E, Delivery)),
9093
rabbit_amqqueue:deliver(Qs, Delivery)
9194
end

test/lvc_SUITE.erl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ lvc(Config) ->
7272
bind(Ch, X, RK, Q2),
7373
expect(Ch, Q1, Payload),
7474
expect(Ch, Q2, Payload),
75+
exchange_delete(Ch, X),
7576
rabbit_ct_client_helpers:close_channel(Ch).
7677

7778
lvc_bind_fanout_exchange(Config) ->
@@ -90,6 +91,7 @@ lvc_bind_fanout_exchange(Config) ->
9091
exchange_bind(Ch, X, RK, LvcX),
9192
expect(Ch, Q1, Payload),
9293
expect(Ch, Q2, Payload),
94+
exchange_delete(Ch, X),
9395
rabbit_ct_client_helpers:close_channel(Ch).
9496

9597
lvc_bind_direct_exchange(Config) ->
@@ -108,6 +110,7 @@ lvc_bind_direct_exchange(Config) ->
108110
exchange_bind(Ch, X, RK, LvcX),
109111
expect(Ch, Q1, Payload),
110112
expect(Ch, Q2, Payload),
113+
exchange_delete(Ch, X),
111114
rabbit_ct_client_helpers:close_channel(Ch).
112115

113116

@@ -117,14 +120,16 @@ lvc_bind_direct_exchange(Config) ->
117120

118121
exchange_declare(Ch, X) ->
119122
amqp_channel:call(Ch, #'exchange.declare'{exchange = X,
120-
type = <<"x-lvc">>,
121-
auto_delete = true}).
123+
type = <<"x-lvc">>}).
122124

123125
exchange_declare(Ch, X, Type) ->
124126
amqp_channel:call(Ch, #'exchange.declare'{exchange = X,
125127
type = Type,
126128
auto_delete = true}).
127129

130+
exchange_delete(Ch, X) ->
131+
#'exchange.delete_ok'{} = amqp_channel:call(Ch, #'exchange.delete'{exchange = X}).
132+
128133
queue_declare(Ch) ->
129134
#'queue.declare_ok'{queue = Q} =
130135
amqp_channel:call(Ch, #'queue.declare'{exclusive = true}),

0 commit comments

Comments
 (0)