]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
common: ping existing admin socket before unlink 1407/head
authorLoic Dachary <loic@dachary.org>
Sat, 15 Feb 2014 10:43:13 +0000 (11:43 +0100)
committerLoic Dachary <loic@dachary.org>
Sat, 8 Mar 2014 14:53:32 +0000 (15:53 +0100)
commitf5668b363b0724f385bebded3cbc7f363893f985
tree6a82fee25d32f1b7ebe931db02e8b5dd76c65cac
parentb476d324c69d4e6018191a7ffea8c9d6c1dfa008
common: ping existing admin socket before unlink

When a daemon initializes it tries to create an admin socket and unlinks
any pre-existing file, regardless. If such a file is in use, it causes
the existing daemon to loose its admin socket.

The AdminSocketClient::ping is implemented to probe an existing socket,
using the "0" message. The AdminSocket::bind_and_listen function is
modified to call ping() on when it finds existing file. It unlinks the
file only if the ping fails.

http://tracker.ceph.com/issues/7188 fixes: #7188

Backport: emperor, dumpling
Reviewed-by: Sage Weil <sage@inktank.com>
Signed-off-by: Loic Dachary <loic@dachary.org>
(cherry picked from commit 45600789f1ca399dddc5870254e5db883fb29b38)
src/common/admin_socket.cc
src/common/admin_socket_client.cc
src/common/admin_socket_client.h
src/test/admin_socket.cc