]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
messages/MMgrBeacon: fix pre-addrvec compat
authorSage Weil <sage@redhat.com>
Thu, 7 Jun 2018 01:05:17 +0000 (20:05 -0500)
committerSage Weil <sage@redhat.com>
Thu, 7 Jun 2018 01:05:17 +0000 (20:05 -0500)
This was broken by 7f787704cdcd55df18d204c5251cdd6a3cedd604.  Old code
doesn't not decode an addrvec as an addr.

Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MMgrBeacon.h

index 2abca1775f1ed91856433a53482df91a87178de4..de76aaa70a3fc83197137c047d58f82f39560a46 100644 (file)
 #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);