diff --git a/fdbclient/StorageServerInterface.cpp b/fdbclient/StorageServerInterface.cpp index 0cb5713040..3c731c3a46 100644 --- a/fdbclient/StorageServerInterface.cpp +++ b/fdbclient/StorageServerInterface.cpp @@ -235,19 +235,25 @@ static std::string hexStringRef(const StringRef& s) { return result; } +template static void traceKeyValuesDiff(TraceEvent& event, - const KeySelectorRef& begin, - const KeySelectorRef& end, - Version version, - int limit, - int limitBytes, - const VectorRef& ssKV, - bool ssMore, - const VectorRef& tssKV, - bool tssMore, + const Request& request, + const Reply& source, + const Reply& target, const ComparisonType& type) { - traceKeyValuesSummary( - event, begin, end, version, limit, limitBytes, ssKV.size(), ssMore, tssKV.size(), tssMore, type); + const auto& ssKV = source.data; + const auto& tssKV = target.data; + traceKeyValuesSummary(event, + request.begin, + request.end, + request.version, + request.limit, + request.limitBytes, + ssKV.size(), + source.more, + tssKV.size(), + target.more, + type); bool mismatchFound = false; for (int i = 0; i < std::max(ssKV.size(), tssKV.size()); i++) { if (i >= ssKV.size() || i >= tssKV.size() || ssKV[i] != tssKV[i]) { @@ -279,17 +285,7 @@ void TSS_traceMismatch(TraceEvent& event, const GetKeyValuesReply& src, const GetKeyValuesReply& tss, const ComparisonType& type) { - traceKeyValuesDiff(event, - req.begin, - req.end, - req.version, - req.limit, - req.limitBytes, - src.data, - src.more, - tss.data, - tss.more, - type); + traceKeyValuesDiff(event, req, src, tss, type); } // range reads and flat map @@ -334,24 +330,13 @@ const char* LB_mismatchTraceName(const GetKeyValuesStreamRequest& req, const Com return type == TSS_COMPARISON ? "TSSMismatchGetKeyValuesStream" : "ReplicaMismatchGetKeyValuesStream"; } -// TODO this is all duplicated from above, simplify? template <> void TSS_traceMismatch(TraceEvent& event, const GetKeyValuesStreamRequest& req, const GetKeyValuesStreamReply& src, const GetKeyValuesStreamReply& tss, const ComparisonType& type) { - traceKeyValuesDiff(event, - req.begin, - req.end, - req.version, - req.limit, - req.limitBytes, - src.data, - src.more, - tss.data, - tss.more, - type); + traceKeyValuesDiff(event, req, src, tss, type); } template <>