diff --git a/clang-tools-extra/clangd/index/remote/Client.cpp b/clang-tools-extra/clangd/index/remote/Client.cpp --- a/clang-tools-extra/clangd/index/remote/Client.cpp +++ b/clang-tools-extra/clangd/index/remote/Client.cpp @@ -15,6 +15,7 @@ #include "support/Logger.h" #include "support/Trace.h" #include "clang/Basic/Version.h" +#include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Error.h" @@ -42,10 +43,13 @@ SPAN_ATTACH(Tracer, "Request", RPCRequest.DebugString()); grpc::ClientContext Context; Context.AddMetadata("version", clang::getClangToolFullVersion("clangd")); - std::chrono::system_clock::time_point Deadline = - std::chrono::system_clock::now() + DeadlineWaitingTime; + std::chrono::system_clock::time_point StartTime = + std::chrono::system_clock::now(); + auto Deadline = StartTime + DeadlineWaitingTime; Context.set_deadline(Deadline); auto Reader = (Stub.get()->*RPCCall)(&Context, RPCRequest); + dlog("Sending {0}: {1}", RequestT::descriptor()->name(), + RPCRequest.DebugString()); ReplyT Reply; unsigned Successful = 0; unsigned FailedToParse = 0; @@ -65,6 +69,11 @@ Callback(*Response); ++Successful; } + auto Millis = std::chrono::duration_cast( + std::chrono::system_clock::now() - StartTime) + .count(); + vlog("Remote index: {0} => {1} results in {2}ms. [{3}]", + RequestT::descriptor()->name(), Successful, Millis, ServerAddress); SPAN_ATTACH(Tracer, "Status", Reader->Finish().ok()); SPAN_ATTACH(Tracer, "Successful", Successful); SPAN_ATTACH(Tracer, "Failed to parse", FailedToParse); @@ -74,11 +83,12 @@ public: IndexClient( std::shared_ptr Channel, llvm::StringRef ProjectRoot, + llvm::StringRef Address, std::chrono::milliseconds DeadlineTime = std::chrono::milliseconds(1000)) : Stub(remote::v1::SymbolIndex::NewStub(Channel)), ProtobufMarshaller(new Marshaller(/*RemoteIndexRoot=*/"", /*LocalIndexRoot=*/ProjectRoot)), - DeadlineWaitingTime(DeadlineTime) { + ServerAddress(Address), DeadlineWaitingTime(DeadlineTime) { assert(!ProjectRoot.empty()); } @@ -118,6 +128,7 @@ private: std::unique_ptr Stub; + llvm::SmallString<256> ServerAddress; std::unique_ptr ProtobufMarshaller; // Each request will be terminated if it takes too long. std::chrono::milliseconds DeadlineWaitingTime; @@ -131,7 +142,7 @@ grpc::CreateChannel(Address.str(), grpc::InsecureChannelCredentials()); Channel->GetState(true); return std::unique_ptr( - new IndexClient(Channel, ProjectRoot)); + new IndexClient(Channel, ProjectRoot, Address)); } } // namespace remote