diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-08-21 13:50:38 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-08-21 13:50:38 +0100 |
commit | 0a44fffb317dad08d73be561d64f1cf8322d4ed8 (patch) | |
tree | 500f9396170cd5a50fcce6f4e6377037924d7d60 | |
parent | 3be06e4a8142a10d35cea5aff72e57a5f4d206e9 (diff) | |
download | rabbitmq-server-0a44fffb317dad08d73be561d64f1cf8322d4ed8.tar.gz |
Remove silly race.
-rw-r--r-- | src/rabbit_tests.erl | 17 |
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) -> |