diff options
| author | Michael Klishin <michael@novemberain.com> | 2018-09-27 17:05:51 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-27 17:05:51 -0700 |
| commit | 834562336754867076be91e72a77e6fd849340dc (patch) | |
| tree | 9f3b86bb7d202ad71633c0824fd52f36e964df10 /src | |
| parent | 7dc8cf46bd704576c48e89d93bad3b2ac6600871 (diff) | |
| parent | 04f5d8fa3779e5ac1773c1c14912be5c4c2ac1cb (diff) | |
| download | rabbitmq-server-git-834562336754867076be91e72a77e6fd849340dc.tar.gz | |
Merge pull request #1714 from rabbitmq/rabbitmq-cli-260
Make rabbit_vhost:add/2 idempotent
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_vhost.erl | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/rabbit_vhost.erl b/src/rabbit_vhost.erl index fdcba35db2..bf89805d13 100644 --- a/src/rabbit_vhost.erl +++ b/src/rabbit_vhost.erl @@ -83,7 +83,13 @@ recover(VHost) -> -define(INFO_KEYS, [name, tracing, cluster_state]). -add(VHostPath, ActingUser) -> +add(VHost, ActingUser) -> + case exists(VHost) of + true -> ok; + false -> do_add(VHost, ActingUser) + end. + +do_add(VHostPath, ActingUser) -> rabbit_log:info("Adding vhost '~s'~n", [VHostPath]), R = rabbit_misc:execute_mnesia_transaction( fun () -> @@ -91,7 +97,8 @@ add(VHostPath, ActingUser) -> [] -> ok = mnesia:write(rabbit_vhost, #vhost{virtual_host = VHostPath}, write); - [_] -> mnesia:abort({vhost_already_exists, VHostPath}) + %% the vhost already exists + [_] -> ok end end, fun (ok, true) -> |
