From d18f60854e68d2060c1a3841299466f165f6552d Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 27 Feb 2021 15:45:47 -0500 Subject: [PATCH] msg/Messenger: use random nonce if CEPH_USE_RANDOM_NONCE or pid == 1 If we are in a container, then we do not have a unique pid, and need to use a random nonce. We normally detect this if our pid is 1, but that doesn't work when we have a init process--we'll (probably?) have a small pid (in my tests, the OSDs were getting pid 7). To be safe, also check for an environment variable set by cephadm. This avoids problems that arise when we don't have a unique address. Fixes: https://tracker.ceph.com/issues/49534 Signed-off-by: Sage Weil --- src/msg/Messenger.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/msg/Messenger.cc b/src/msg/Messenger.cc index 8064a10a0d9..eab2f2909c8 100644 --- a/src/msg/Messenger.cc +++ b/src/msg/Messenger.cc @@ -21,7 +21,7 @@ Messenger *Messenger::create_client_messenger(CephContext *cct, std::string lnam uint64_t Messenger::get_pid_nonce() { uint64_t nonce = getpid(); - if (nonce == 1) { + if (nonce == 1 || getenv("CEPH_USE_RANDOM_NONCE")) { // we're running in a container; use a random number instead! nonce = ceph::util::generate_random_number(); }