From: Sage Weil Date: Thu, 7 Jun 2018 01:05:17 +0000 (-0500) Subject: messages/MMgrBeacon: fix pre-addrvec compat X-Git-Tag: v14.0.1~1163^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=90513f1bd1854729f5ccc80a9a79e1ebafd1c46b;p=ceph.git messages/MMgrBeacon: fix pre-addrvec compat This was broken by 7f787704cdcd55df18d204c5251cdd6a3cedd604. Old code doesn't not decode an addrvec as an addr. Signed-off-by: Sage Weil --- diff --git a/src/messages/MMgrBeacon.h b/src/messages/MMgrBeacon.h index 2abca1775f1..de76aaa70a3 100644 --- a/src/messages/MMgrBeacon.h +++ b/src/messages/MMgrBeacon.h @@ -22,11 +22,10 @@ #include "include/types.h" - class MMgrBeacon : public PaxosServiceMessage { - static const int HEAD_VERSION = 7; - static const int COMPAT_VERSION = 1; + static const int HEAD_VERSION = 8; + static const int COMPAT_VERSION = 8; protected: uint64_t gid; @@ -111,10 +110,18 @@ public: } void encode_payload(uint64_t features) override { + header.version = HEAD_VERSION; + header.compat_version = COMPAT_VERSION; using ceph::encode; paxos_encode(); - encode(server_addrs, payload, features); + if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) { + header.version = 7; + header.compat_version = 1; + encode(server_addrs.legacy_addr(), payload, features); + } else { + encode(server_addrs, payload, features); + } encode(gid, payload); encode(available, payload); encode(name, payload); @@ -137,7 +144,7 @@ public: void decode_payload() override { auto p = payload.cbegin(); paxos_decode(p); - decode(server_addrs, p); + decode(server_addrs, p); // entity_addr_t for version < 8 decode(gid, p); decode(available, p); decode(name, p);