Merge pull request #13515 from lafirest/fix/exclusive
fix(exclusive): allow the same client to resubscribe to an existing exclusive topic
This commit is contained in:
commit
a45f817f0e
|
@ -117,6 +117,13 @@ try_subscribe(ClientId, Topic) ->
|
||||||
write
|
write
|
||||||
),
|
),
|
||||||
allow;
|
allow;
|
||||||
|
[#exclusive_subscription{clientid = ClientId, topic = Topic}] ->
|
||||||
|
%% Fixed the issue-13476
|
||||||
|
%% In this feature, the user must manually call `unsubscribe` to release the lock,
|
||||||
|
%% but sometimes the node may go down for some reason,
|
||||||
|
%% then the client will reconnect to this node and resubscribe.
|
||||||
|
%% We need to allow resubscription, otherwise the lock will never be released.
|
||||||
|
allow;
|
||||||
[_] ->
|
[_] ->
|
||||||
deny
|
deny
|
||||||
end.
|
end.
|
||||||
|
|
|
@ -56,6 +56,8 @@ t_exclusive_sub(_) ->
|
||||||
{ok, _} = emqtt:connect(C1),
|
{ok, _} = emqtt:connect(C1),
|
||||||
?CHECK_SUB(C1, 0),
|
?CHECK_SUB(C1, 0),
|
||||||
|
|
||||||
|
?CHECK_SUB(C1, 0),
|
||||||
|
|
||||||
{ok, C2} = emqtt:start_link([
|
{ok, C2} = emqtt:start_link([
|
||||||
{clientid, <<"client2">>},
|
{clientid, <<"client2">>},
|
||||||
{clean_start, false},
|
{clean_start, false},
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fixed an issue where the same client could not subscribe to the same exclusive topic when the node was down for some reason.
|
Loading…
Reference in New Issue