summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-08-21 13:50:38 +0100
committerSimon MacMullen <simon@rabbitmq.com>2014-08-21 13:50:38 +0100
commit0a44fffb317dad08d73be561d64f1cf8322d4ed8 (patch)
tree500f9396170cd5a50fcce6f4e6377037924d7d60
parent3be06e4a8142a10d35cea5aff72e57a5f4d206e9 (diff)
downloadrabbitmq-server-0a44fffb317dad08d73be561d64f1cf8322d4ed8.tar.gz
Remove silly race.
-rw-r--r--src/rabbit_tests.erl17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index bd11e8bf..7018bffe 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -1666,18 +1666,25 @@ test_declare_on_dead_queue(SecondaryNode) ->
rabbit_amqqueue:declare(QueueName, false, false, [],
none),
exit(QPid, kill),
- Self ! {self(), killed}
+ Self ! {self(), killed, QPid}
end),
receive
- {Pid, killed} ->
- {existing, Q} = rabbit_amqqueue:declare(QueueName, false, false, [],
- none),
- true = rabbit_misc:is_process_alive(Q#amqqueue.pid),
+ {Pid, killed, OldPid} ->
+ Q = dead_queue_loop(QueueName, OldPid),
{ok, 0} = rabbit_amqqueue:delete(Q, false, false),
passed
after ?TIMEOUT -> throw(failed_to_create_and_kill_queue)
end.
+dead_queue_loop(QueueName, OldPid) ->
+ {existing, Q} = rabbit_amqqueue:declare(QueueName, false, false, [], none),
+ case Q#amqqueue.pid of
+ OldPid -> timer:sleep(25),
+ dead_queue_loop(QueueName, OldPid);
+ _ -> true = rabbit_misc:is_process_alive(Q#amqqueue.pid),
+ Q
+ end.
+
%%---------------------------------------------------------------------
control_action(Command, Args) ->