Rabbitmq Version: 3.6.9
Erlang Version: 18.2
Cluster size: 5
All tests start out with a single policy of:
```
ha-two queues .* {"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"} 100
```
Each test then adds a policy in the form of:
```
test_policy full_queue_name {"ha-mode":"nodes","ha-params":[polciy_nodes],"ha-sync-mode":"automatic"} 200
```
| current nodes | policy nodes | resulting nodes | active policy |result |
| --- | --- |--- | --- | --- |
| 2, 4 | 1, 3 | 1, 4| ha-two (expected test_policy) | :skull_and_crossbones: |
| 2, 1 | 2, 3 | 2, 3| test_policy | :white_check_mark: |
| 2, 3 | 4, 3 | 3, 4| test_policy | :warning: |
| 3, 4 | 2, 1 | 2, 4| ha-two (expected test_policy) | :skull_and_crossbones: |
:skull_and_crossbones: did not apply the policy and ignores further policy changes
:warning: applied the policy but did not honor node order
:white_check_mark: result matched expectations
I also can pretty reliably get in situations where a policy remains applied to a queue even after the policy itself is deleted. I've found rolling restarts across the entire cluster the only way to recovery from this state.