summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Cogoluègnes <acogoluegnes@gmail.com>2021-06-04 16:35:46 +0200
committerArnaud Cogoluègnes <acogoluegnes@gmail.com>2021-06-04 16:35:46 +0200
commit49a70a0f9f7ab674bd0c08caa46a6b9812995096 (patch)
treeeafacd366ecb8781e8cee2a65549c3c82b702528
parent16455426f08fac2e0b908e36227d731d7f03ddc4 (diff)
downloadrabbitmq-server-git-49a70a0f9f7ab674bd0c08caa46a6b9812995096.tar.gz
Handle last_stream_member more gently in CLI
-rw-r--r--deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/delete_replica_command.ex2
-rw-r--r--deps/rabbitmq_cli/test/streams/delete_replica_command_test.exs9
-rw-r--r--deps/rabbitmq_cli/test/test_helper.exs4
3 files changed, 14 insertions, 1 deletions
diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/delete_replica_command.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/delete_replica_command.ex
index 299699801f..529ca3ee72 100644
--- a/deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/delete_replica_command.ex
+++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/delete_replica_command.ex
@@ -29,6 +29,8 @@ defmodule RabbitMQ.CLI.Streams.Commands.DeleteReplicaCommand do
{:error, :quorum_queue_not_supported} ->
{:error, "Cannot delete replicas from a quorum queue"}
+ {:error, :last_stream_member} ->
+ {:error, "Cannot delete the last member of a stream"}
other ->
other
end
diff --git a/deps/rabbitmq_cli/test/streams/delete_replica_command_test.exs b/deps/rabbitmq_cli/test/streams/delete_replica_command_test.exs
index 6e3833da8c..b7fe17edb0 100644
--- a/deps/rabbitmq_cli/test/streams/delete_replica_command_test.exs
+++ b/deps/rabbitmq_cli/test/streams/delete_replica_command_test.exs
@@ -20,7 +20,8 @@ defmodule RabbitMQ.CLI.Streams.Commands.DeleteReplicaCommandTest do
setup context do
{:ok, opts: %{
node: get_rabbit_hostname(),
- timeout: context[:test_timeout] || 30000
+ timeout: context[:test_timeout] || 30000,
+ vhost: "/"
}}
end
@@ -42,6 +43,12 @@ defmodule RabbitMQ.CLI.Streams.Commands.DeleteReplicaCommandTest do
assert @command.validate(["stream-queue-a", "rabbit@new-node"], %{}) == :ok
end
+ test "run: trying to delete the last member of a stream should fail and return a meaningful message", context do
+ declare_stream("test_stream_1", "/")
+ assert @command.run(["test_stream_1", get_rabbit_hostname()], context[:opts]) ==
+ {:error, "Cannot delete the last member of a stream"}
+ end
+
@tag test_timeout: 3000
test "run: targeting an unreachable node throws a badrpc" do
assert match?({:badrpc, _}, @command.run(["stream-queue-a", "rabbit@new-node"],
diff --git a/deps/rabbitmq_cli/test/test_helper.exs b/deps/rabbitmq_cli/test/test_helper.exs
index f39028902a..0ad6044729 100644
--- a/deps/rabbitmq_cli/test/test_helper.exs
+++ b/deps/rabbitmq_cli/test/test_helper.exs
@@ -162,6 +162,10 @@ defmodule TestHelper do
[queue_name, durable, auto_delete, args, owner, "acting-user"])
end
+ def declare_stream(name, vhost) do
+ declare_queue(name, vhost, true, false, [{"x-queue-type", :longstr, "stream"}])
+ end
+
def delete_queue(name, vhost) do
queue_name = :rabbit_misc.r(vhost, :queue, name)
:rpc.call(get_rabbit_hostname(),