[llvm-branch-commits] [clang-tools-extra] 5a1bc69 - [clangd] NFC: Add client-side logging for remote index requests
Kirill Bobyrev via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Dec 9 12:45:31 PST 2020
Author: Kirill Bobyrev
Date: 2020-12-09T21:40:37+01:00
New Revision: 5a1bc69f811059b8f62d381e3526d92fffa7d91a
URL: https://github.com/llvm/llvm-project/commit/5a1bc69f811059b8f62d381e3526d92fffa7d91a
DIFF: https://github.com/llvm/llvm-project/commit/5a1bc69f811059b8f62d381e3526d92fffa7d91a.diff
LOG: [clangd] NFC: Add client-side logging for remote index requests
Figuring out whether the server is responding and debugging issues with remote
index setup is no easy task: add verbose logging for client side RPC requests
to relieve some pain.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D92181
Added:
Modified:
clang-tools-extra/clangd/index/remote/Client.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/index/remote/Client.cpp b/clang-tools-extra/clangd/index/remote/Client.cpp
index 4980a4bee74e..bb19be54f6d2 100644
--- 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 @@ class IndexClient : public clangd::SymbolIndex {
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 @@ class IndexClient : public clangd::SymbolIndex {
Callback(*Response);
++Successful;
}
+ auto Millis = std::chrono::duration_cast<std::chrono::milliseconds>(
+ std::chrono::system_clock::now() - StartTime)
+ .count();
+ vlog("Remote index [{0}]: {1} => {2} results in {3}ms.", ServerAddress,
+ RequestT::descriptor()->name(), Successful, Millis);
SPAN_ATTACH(Tracer, "Status", Reader->Finish().ok());
SPAN_ATTACH(Tracer, "Successful", Successful);
SPAN_ATTACH(Tracer, "Failed to parse", FailedToParse);
@@ -74,11 +83,12 @@ class IndexClient : public clangd::SymbolIndex {
public:
IndexClient(
std::shared_ptr<grpc::Channel> 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 @@ class IndexClient : public clangd::SymbolIndex {
private:
std::unique_ptr<remote::v1::SymbolIndex::Stub> Stub;
+ llvm::SmallString<256> ServerAddress;
std::unique_ptr<Marshaller> ProtobufMarshaller;
// Each request will be terminated if it takes too long.
std::chrono::milliseconds DeadlineWaitingTime;
@@ -131,7 +142,7 @@ std::unique_ptr<clangd::SymbolIndex> getClient(llvm::StringRef Address,
grpc::CreateChannel(Address.str(), grpc::InsecureChannelCredentials());
Channel->GetState(true);
return std::unique_ptr<clangd::SymbolIndex>(
- new IndexClient(Channel, ProjectRoot));
+ new IndexClient(Channel, ProjectRoot, Address));
}
} // namespace remote
More information about the llvm-branch-commits
mailing list