From caabbec466c6de3b1962429b434c3c948538d89c Mon Sep 17 00:00:00 2001 From: Markus Pilman Date: Wed, 10 Jun 2020 09:59:41 -0700 Subject: [PATCH] Spans for read and commit path --- fdbserver/MasterInterface.h | 9 ++++++--- fdbserver/MasterProxyServer.actor.cpp | 11 +++++++---- fdbserver/ResolverInterface.h | 9 +++++++-- fdbserver/masterserver.actor.cpp | 1 + 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/fdbserver/MasterInterface.h b/fdbserver/MasterInterface.h index df76a8fcf0..d2ab749862 100644 --- a/fdbserver/MasterInterface.h +++ b/fdbserver/MasterInterface.h @@ -155,18 +155,21 @@ struct GetCommitVersionReply { struct GetCommitVersionRequest { constexpr static FileIdentifier file_identifier = 16683181; + SpanID spanID; uint64_t requestNum; uint64_t mostRecentProcessedRequestNum; UID requestingProxy; ReplyPromise reply; GetCommitVersionRequest() { } - GetCommitVersionRequest(uint64_t requestNum, uint64_t mostRecentProcessedRequestNum, UID requestingProxy) - : requestNum(requestNum), mostRecentProcessedRequestNum(mostRecentProcessedRequestNum), requestingProxy(requestingProxy) {} + GetCommitVersionRequest(SpanID spanID, uint64_t requestNum, uint64_t mostRecentProcessedRequestNum, + UID requestingProxy) + : spanID(spanID), requestNum(requestNum), mostRecentProcessedRequestNum(mostRecentProcessedRequestNum), + requestingProxy(requestingProxy) {} template void serialize(Ar& ar) { - serializer(ar, requestNum, mostRecentProcessedRequestNum, requestingProxy, reply); + serializer(ar, requestNum, mostRecentProcessedRequestNum, requestingProxy, reply, spanID); } }; diff --git a/fdbserver/MasterProxyServer.actor.cpp b/fdbserver/MasterProxyServer.actor.cpp index f1c6fa86bc..4519964e70 100644 --- a/fdbserver/MasterProxyServer.actor.cpp +++ b/fdbserver/MasterProxyServer.actor.cpp @@ -511,8 +511,11 @@ struct ResolutionRequestBuilder { // [CommitTransactionRef_Index][Resolver_Index][Read_Conflict_Range_Index_on_Resolver] // -> read_conflict_range's original index in the commitTransactionRef - ResolutionRequestBuilder( ProxyCommitData* self, Version version, Version prevVersion, Version lastReceivedVersion) : self(self), requests(self->resolvers.size()) { - for(auto& req : requests) { + ResolutionRequestBuilder(ProxyCommitData* self, Version version, Version prevVersion, Version lastReceivedVersion, + Span& parentSpan) + : self(self), requests(self->resolvers.size()) { + for (auto& req : requests) { + req.spanID = parentSpan->context; req.prevVersion = prevVersion; req.version = version; req.lastReceivedVersion = lastReceivedVersion; @@ -840,7 +843,7 @@ ACTOR Future commitBatch( if (debugID.present()) g_traceBatch.addEvent("CommitDebug", debugID.get().first(), "MasterProxyServer.commitBatch.GettingCommitVersion"); - GetCommitVersionRequest req(self->commitVersionRequestNumber++, self->mostRecentProcessedRequestNumber, self->dbgid); + GetCommitVersionRequest req(span->context, self->commitVersionRequestNumber++, self->mostRecentProcessedRequestNumber, self->dbgid); GetCommitVersionReply versionReply = wait( brokenPromiseToNever(self->master.getCommitVersion.getReply(req, TaskPriority::ProxyMasterVersionReply)) ); self->mostRecentProcessedRequestNumber = versionReply.requestNum; @@ -861,7 +864,7 @@ ACTOR Future commitBatch( if (debugID.present()) g_traceBatch.addEvent("CommitDebug", debugID.get().first(), "MasterProxyServer.commitBatch.GotCommitVersion"); - ResolutionRequestBuilder requests( self, commitVersion, prevVersion, self->version ); + ResolutionRequestBuilder requests( self, commitVersion, prevVersion, self->version, span ); int conflictRangeCount = 0; state int64_t maxTransactionBytes = 0; for (int t = 0; t transactions; + VectorRef transactions; VectorRef txnStateTransactions; // Offsets of elements of transactions that have (transaction subsystem state) mutations ReplyPromise reply; Optional debugID; template void serialize(Archive& ar) { - serializer(ar, prevVersion, version, lastReceivedVersion, transactions, txnStateTransactions, reply, arena, debugID); + serializer(ar, prevVersion, version, lastReceivedVersion, transactions, txnStateTransactions, reply, arena, + debugID, spanID); } }; diff --git a/fdbserver/masterserver.actor.cpp b/fdbserver/masterserver.actor.cpp index 0ac492a0b9..509cb49a5f 100644 --- a/fdbserver/masterserver.actor.cpp +++ b/fdbserver/masterserver.actor.cpp @@ -911,6 +911,7 @@ ACTOR Future recoverFrom( Reference self, Reference getVersion(Reference self, GetCommitVersionRequest req) { + state Span span("M:getVersion"_loc, { req.spanID }); state std::map::iterator proxyItr = self->lastProxyVersionReplies.find(req.requestingProxy); // lastProxyVersionReplies never changes if (proxyItr == self->lastProxyVersionReplies.end()) {