]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: pick only v2 addresses. 43435/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 6 Oct 2021 11:16:31 +0000 (11:16 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 6 Oct 2021 14:44:02 +0000 (14:44 +0000)
Otherwise we'll run into an assertion failure when binding:

```
INFO  2021-10-05 15:14:51,075 [shard 0] osd - picked address v2:0.0.0.0:0/0
INFO  2021-10-05 15:14:51,075 [shard 0] osd - picked address v1:0.0.0.0:0/0
ceph-osd: /home/jenkins-build/build/workspace/ceph-dev-build/ARCH/x86_64/AVAILABLE_ARCH/x86_64/AVAILABLE_DIST/centos8/DIST/centos8/MACHINE_SIZE/gigantic/release/17.0.0-8025-geb9c0f59/rpm/el8/BUILD/ceph-17.0.0-8025-geb9c0f59/src/crimson/net/SocketMessenger.cc:89: crimson::errorator<crimson::unthrowable_wrapper<const std::error_code&, ((const std::error_code&)(& crimson::ec<std::errc::address_in_use>))>, crimson::unthrowable_wrapper<const std::error_code&, ((const std::error_code&)(& crimson::ec<std::errc::address_not_available>))> >::future<> crimson::net::SocketMessenger::try_bind(const entity_addrvec_t&, uint32_t, uint32_t): Assertion `addrs.size() == 1' failed.
Aborting on shard 0.
```

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/osd.cc

index ea5c46bf1f40701cd8e15acdd4ddac412b2e130a..4b146bbb7b2f3cf8d536b8689bf36d8363c2c315 100644 (file)
@@ -219,7 +219,9 @@ namespace {
   entity_addrvec_t pick_addresses(int what) {
     entity_addrvec_t addrs;
     crimson::common::CephContext cct;
-    if (int r = ::pick_addresses(&cct, what, &addrs, -1); r < 0) {
+    // we're interested solely in v2; crimson doesn't do v1
+    const auto flags = what | CEPH_PICK_ADDRESS_MSGR2;
+    if (int r = ::pick_addresses(&cct, flags, &addrs, -1); r < 0) {
       throw std::runtime_error("failed to pick address");
     }
     for (auto addr : addrs.v) {