From: Kefu Chai Date: Thu, 18 Feb 2021 17:06:50 +0000 (+0800) Subject: messages: drop compatibility for pre-octopus versions X-Git-Tag: v17.1.0~2776^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4a13e9126195e5bd170694a3e83c5ae892ba86a6;p=ceph-ci.git messages: drop compatibility for pre-octopus versions no need to be compatible with pre-octopus versions when it comes to in-cluster communications. * MMgrBeacon: octopus encodes MMgrBeacon with version 8 * MMonJoin: octopus encodes MMonJoin with version 2 * MOSDBoot: octopus encodes MOSDBoot with version 7 * MOSDFailure: octopus encodes MOSDFailure with version 4 * MOSDMarkMeDown: octopus encodes MOSDMarkMeDown with version 3 * MOSDPGLog: octopus encodes MOSDPGLog with version 6 * MOSDPGScan: octopus encodes MOSDPGScan with version 2 * MOSDPGInfo: octopus encodes MOSDPGInfo with version 6 * MOSDPGNotify: octopus encodes MOSDPGNotify with version 7 Signed-off-by: Kefu Chai --- diff --git a/src/messages/MMgrBeacon.h b/src/messages/MMgrBeacon.h index 5b6ca3b60be..371f296829c 100644 --- a/src/messages/MMgrBeacon.h +++ b/src/messages/MMgrBeacon.h @@ -126,13 +126,8 @@ public: using ceph::encode; paxos_encode(); - 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); - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); + encode(server_addrs, payload, features); encode(gid, payload); encode(available, payload); encode(name, payload); @@ -158,38 +153,18 @@ public: using ceph::decode; auto p = payload.cbegin(); paxos_decode(p); + assert(header.version >= 8); decode(server_addrs, p); // entity_addr_t for version < 8 decode(gid, p); decode(available, p); decode(name, p); - if (header.version >= 2) { - decode(fsid, p); - } - if (header.version >= 3) { - std::set module_name_list; - decode(module_name_list, p); - // Only need to unpack this field if we won't have the full - // ModuleInfo structures added in v7 - if (header.version < 7) { - for (const auto &i : module_name_list) { - MgrMap::ModuleInfo info; - info.name = i; - modules.push_back(std::move(info)); - } - } - } - if (header.version >= 4) { - decode(command_descs, p); - } - if (header.version >= 5) { - decode(metadata, p); - } - if (header.version >= 6) { - decode(services, p); - } - if (header.version >= 7) { - decode(modules, p); - } + decode(fsid, p); + std::set module_name_list; + decode(module_name_list, p); + decode(command_descs, p); + decode(metadata, p); + decode(services, p); + decode(modules, p); if (header.version >= 9) { decode(mgr_features, p); } diff --git a/src/messages/MMonJoin.h b/src/messages/MMonJoin.h index 309035e5b0b..027f696cf2b 100644 --- a/src/messages/MMonJoin.h +++ b/src/messages/MMonJoin.h @@ -46,15 +46,10 @@ public: paxos_encode(); encode(fsid, payload); encode(name, payload); - if (HAVE_FEATURE(features, SERVER_NAUTILUS)) { - header.version = HEAD_VERSION; - header.compat_version = COMPAT_VERSION; - encode(addrs, payload, features); - } else { - header.version = 1; - header.compat_version = 1; - encode(addrs.legacy_addr(), payload, features); - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); + header.version = HEAD_VERSION; + header.compat_version = COMPAT_VERSION; + encode(addrs, payload, features); } void decode_payload() override { using ceph::decode; @@ -62,13 +57,8 @@ public: paxos_decode(p); decode(fsid, p); decode(name, p); - if (header.version == 1) { - entity_addr_t addr; - decode(addr, p); - addrs = entity_addrvec_t(addr); - } else { - decode(addrs, p); - } + assert(header.version > 1); + decode(addrs, p); } }; diff --git a/src/messages/MOSDBoot.h b/src/messages/MOSDBoot.h index d40324f4ac1..f28a11c38c4 100644 --- a/src/messages/MOSDBoot.h +++ b/src/messages/MOSDBoot.h @@ -68,18 +68,7 @@ public: header.compat_version = COMPAT_VERSION; using ceph::encode; paxos_encode(); - if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) { - header.version = 6; - header.compat_version = 6; - encode(sb, payload); - hb_back_addrs.legacy_addr().encode(payload, features); - cluster_addrs.legacy_addr().encode(payload, features); - encode(boot_epoch, payload); - hb_front_addrs.legacy_addr().encode(payload, features); - encode(metadata, payload); - encode(osd_features, payload); - return; - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); encode(sb, payload); encode(hb_back_addrs, payload, features); encode(cluster_addrs, payload, features); @@ -92,20 +81,7 @@ public: auto p = payload.cbegin(); using ceph::decode; paxos_decode(p); - if (header.version < 7) { - entity_addr_t a; - decode(sb, p); - decode(a, p); - hb_back_addrs = entity_addrvec_t(a); - decode(a, p); - cluster_addrs = entity_addrvec_t(a); - decode(boot_epoch, p); - decode(a, p); - hb_front_addrs = entity_addrvec_t(a); - decode(metadata, p); - decode(osd_features, p); - return; - } + assert(header.version >= 7); decode(sb, p); decode(hb_back_addrs, p); decode(cluster_addrs, p); diff --git a/src/messages/MOSDFailure.h b/src/messages/MOSDFailure.h index 72aa644ed66..508cc84d303 100644 --- a/src/messages/MOSDFailure.h +++ b/src/messages/MOSDFailure.h @@ -75,15 +75,9 @@ public: auto p = payload.cbegin(); paxos_decode(p); decode(fsid, p); - if (header.version < 4) { - entity_inst_t i; - decode(i, p); - target_osd = i.name.num(); - target_addrs.v.push_back(i.addr); - } else { - decode(target_osd, p); - decode(target_addrs, p); - } + assert(header.version >= 4); + decode(target_osd, p); + decode(target_addrs, p); decode(epoch, p); decode(flags, p); decode(failed_for, p); @@ -92,17 +86,7 @@ public: void encode_payload(uint64_t features) override { using ceph::encode; paxos_encode(); - if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) { - header.version = 3; - header.compat_version = 3; - encode(fsid, payload); - encode(entity_inst_t(entity_name_t::OSD(target_osd), - target_addrs.legacy_addr()), payload, features); - encode(epoch, payload); - encode(flags, payload); - encode(failed_for, payload); - return; - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); header.version = HEAD_VERSION; header.compat_version = COMPAT_VERSION; encode(fsid, payload); diff --git a/src/messages/MOSDMarkMeDown.h b/src/messages/MOSDMarkMeDown.h index 2ff0e1cd809..e9428518639 100644 --- a/src/messages/MOSDMarkMeDown.h +++ b/src/messages/MOSDMarkMeDown.h @@ -48,16 +48,7 @@ public: using ceph::decode; auto p = payload.cbegin(); paxos_decode(p); - if (header.version <= 2) { - decode(fsid, p); - entity_inst_t i; - decode(i, p); - target_osd = i.name.num(); - target_addrs = entity_addrvec_t(i.addr); - decode(epoch, p); - decode(request_ack, p); - return; - } + assert(header.version >= 3); decode(fsid, p); decode(target_osd, p); decode(target_addrs, p); @@ -68,17 +59,7 @@ public: void encode_payload(uint64_t features) override { using ceph::encode; paxos_encode(); - if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) { - header.version = 2; - header.compat_version = 2; - encode(fsid, payload); - encode(entity_inst_t(entity_name_t::OSD(target_osd), - target_addrs.legacy_addr()), - payload, features); - encode(epoch, payload); - encode(request_ack, payload); - return; - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); header.version = HEAD_VERSION; header.compat_version = COMPAT_VERSION; encode(fsid, payload); diff --git a/src/messages/MOSDPGInfo.h b/src/messages/MOSDPGInfo.h index b742cd014d7..63ddc3e3ef8 100644 --- a/src/messages/MOSDPGInfo.h +++ b/src/messages/MOSDPGInfo.h @@ -22,7 +22,7 @@ class MOSDPGInfo final : public Message { private: static constexpr int HEAD_VERSION = 6; - static constexpr int COMPAT_VERSION = 5; + static constexpr int COMPAT_VERSION = 6; epoch_t epoch = 0; @@ -67,33 +67,13 @@ public: using ceph::encode; header.version = HEAD_VERSION; encode(epoch, payload); - if (!HAVE_FEATURE(features, SERVER_OCTOPUS)) { - // pretend to be vector> - header.version = 5; - encode((uint32_t)pg_list.size(), payload); - for (auto& i : pg_list) { - encode(i, payload); // this embeds a dup (ignored) PastIntervals - encode(i.past_intervals, payload); - } - return; - } + assert(HAVE_FEATURE(features, SERVER_OCTOPUS)); encode(pg_list, payload); } void decode_payload() override { using ceph::decode; auto p = payload.cbegin(); decode(epoch, p); - if (header.version == 5) { - // decode legacy vector> - uint32_t num; - decode(num, p); - pg_list.resize(num); - for (unsigned i = 0; i < num; ++i) { - decode(pg_list[i], p); - decode(pg_list[i].past_intervals, p); - } - return; - } decode(pg_list, p); } private: diff --git a/src/messages/MOSDPGLog.h b/src/messages/MOSDPGLog.h index fc3b9174d48..747e3b767b4 100644 --- a/src/messages/MOSDPGLog.h +++ b/src/messages/MOSDPGLog.h @@ -22,7 +22,7 @@ class MOSDPGLog final : public MOSDPeeringOp { private: static constexpr int HEAD_VERSION = 6; - static constexpr int COMPAT_VERSION = 5; + static constexpr int COMPAT_VERSION = 6; epoch_t epoch = 0; /// query_epoch is the epoch of the query being responded to, or @@ -101,12 +101,8 @@ public: encode(info, payload); encode(log, payload); encode(missing, payload, features); - if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) { - // pre-nautilus OSDs do not set last_peering_reset properly - encode(epoch, payload); - } else { - encode(query_epoch, payload); - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); + encode(query_epoch, payload); encode(past_intervals, payload); encode(to, payload); encode(from, payload); @@ -123,9 +119,8 @@ public: decode(past_intervals, p); decode(to, p); decode(from, p); - if (header.version >= 6) { - decode(lease, p); - } + assert(header.version >= 6); + decode(lease, p); } private: template diff --git a/src/messages/MOSDPGNotify.h b/src/messages/MOSDPGNotify.h index a3b237c1a8b..c7aef014a4f 100644 --- a/src/messages/MOSDPGNotify.h +++ b/src/messages/MOSDPGNotify.h @@ -26,7 +26,7 @@ class MOSDPGNotify final : public Message { private: static constexpr int HEAD_VERSION = 7; - static constexpr int COMPAT_VERSION = 6; + static constexpr int COMPAT_VERSION = 7; epoch_t epoch = 0; /// query_epoch is the epoch of the query being responded to, or @@ -61,16 +61,7 @@ public: using ceph::encode; header.version = HEAD_VERSION; encode(epoch, payload); - if (!HAVE_FEATURE(features, SERVER_OCTOPUS)) { - // pretend to be vector> - header.version = 6; - encode((uint32_t)pg_list.size(), payload); - for (auto& i : pg_list) { - encode(i, payload); // this embeds a dup (ignored) PastIntervals - encode(i.past_intervals, payload); - } - return; - } + assert(HAVE_FEATURE(features, SERVER_OCTOPUS)); encode(pg_list, payload); } @@ -78,17 +69,6 @@ public: auto p = payload.cbegin(); using ceph::decode; decode(epoch, p); - if (header.version == 6) { - // decode legacy vector> - uint32_t num; - decode(num, p); - pg_list.resize(num); - for (unsigned i = 0; i < num; ++i) { - decode(pg_list[i], p); - decode(pg_list[i].past_intervals, p); - } - return; - } decode(pg_list, p); } void print(std::ostream& out) const override { diff --git a/src/messages/MOSDPGScan.h b/src/messages/MOSDPGScan.h index c80bb6efcb8..be555e7c2fd 100644 --- a/src/messages/MOSDPGScan.h +++ b/src/messages/MOSDPGScan.h @@ -75,12 +75,8 @@ public: using ceph::encode; encode(op, payload); encode(map_epoch, payload); - if (!HAVE_FEATURE(features, SERVER_NAUTILUS)) { - // pre-nautilus OSDs do not set last_peering_reset properly - encode(map_epoch, payload); - } else { - encode(query_epoch, payload); - } + assert(HAVE_FEATURE(features, SERVER_NAUTILUS)); + encode(query_epoch, payload); encode(pgid.pgid, payload); encode(begin, payload); encode(end, payload);