]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/Messenger: use random nonce if CEPH_USE_RANDOM_NONCE or pid == 1
authorSage Weil <sage@newdream.net>
Sat, 27 Feb 2021 20:45:47 +0000 (15:45 -0500)
committerSage Weil <sage@newdream.net>
Mon, 1 Mar 2021 16:27:18 +0000 (11:27 -0500)
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 <sage@newdream.net>
src/msg/Messenger.cc

index 8064a10a0d9b8d4b4fdbc217a8886c67f4616ea1..eab2f2909c80012e3ed2d3fefee3fa97d4ca32a9 100644 (file)
@@ -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<uint64_t>();
   }