This is an automated email from the ASF dual-hosted git repository.
lizhanhui pushed a commit to branch cpp_dev
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
The following commit(s) were added to refs/heads/cpp_dev by this push:
new 1338835 BugFix: fix client_context
1338835 is described below
commit 1338835bfe45b7d0e26a2b04a7af9d3eb446c542
Author: Li Zhanhui <[email protected]>
AuthorDate: Mon Jul 11 15:48:35 2022 +0800
BugFix: fix client_context
---
cpp/bazel/rocketmq_deps.bzl | 8 ++++----
cpp/src/main/cpp/rocketmq/ClientImpl.cpp | 2 +-
cpp/src/main/cpp/stats/MetricBidiReactor.cpp | 13 +++++++------
cpp/src/main/cpp/stats/include/MetricBidiReactor.h | 1 +
4 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/cpp/bazel/rocketmq_deps.bzl b/cpp/bazel/rocketmq_deps.bzl
index 983a476..2530d52 100644
--- a/cpp/bazel/rocketmq_deps.bzl
+++ b/cpp/bazel/rocketmq_deps.bzl
@@ -114,11 +114,11 @@ def rocketmq_deps():
maybe(
http_archive,
name = "com_github_grpc_grpc",
- strip_prefix = "grpc-1.46.3",
- sha256 =
"d6cbf22cb5007af71b61c6be316a79397469c58c82a942552a62e708bce60964",
+ strip_prefix = "grpc-1.46.4",
+ sha256 =
"e266aa0d9d9cddb876484a370b94f468248594a96ca0b6f87c21f969db2b8c5b",
urls = [
-
"https://shutian.oss-cn-hangzhou.aliyuncs.com/cdn/grpc/grpc-1.46.3.tar.gz",
- "https://github.com/grpc/grpc/archive/refs/tags/v1.46.3.tar.gz",
+
"https://shutian.oss-cn-hangzhou.aliyuncs.com/cdn/grpc/grpc-1.46.4.tar.gz",
+ "https://github.com/grpc/grpc/archive/refs/tags/v1.46.4.tar.gz",
],
)
diff --git a/cpp/src/main/cpp/rocketmq/ClientImpl.cpp
b/cpp/src/main/cpp/rocketmq/ClientImpl.cpp
index 25fe498..61e6ed9 100644
--- a/cpp/src/main/cpp/rocketmq/ClientImpl.cpp
+++ b/cpp/src/main/cpp/rocketmq/ClientImpl.cpp
@@ -209,9 +209,9 @@ void ClientImpl::start() {
opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<StdoutHandler>());
#else
opencensus::stats::StatsExporter::SetInterval(absl::Minutes(1));
-
opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<OpencensusHandler>(target,
client_weak_ptr));
#endif
SPDLOG_INFO("Export client metrics to {}", target);
+
opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<OpencensusHandler>(target,
client_weak_ptr));
}
void ClientImpl::shutdown() {
diff --git a/cpp/src/main/cpp/stats/MetricBidiReactor.cpp
b/cpp/src/main/cpp/stats/MetricBidiReactor.cpp
index 655c942..5c9f87e 100644
--- a/cpp/src/main/cpp/stats/MetricBidiReactor.cpp
+++ b/cpp/src/main/cpp/stats/MetricBidiReactor.cpp
@@ -24,23 +24,22 @@ ROCKETMQ_NAMESPACE_BEGIN
MetricBidiReactor::MetricBidiReactor(std::weak_ptr<Client> client,
std::weak_ptr<OpencensusExporter> exporter)
: client_(client), exporter_(exporter) {
- grpc::ClientContext context;
auto ptr = client_.lock();
Metadata metadata;
Signature::sign(ptr->config(), metadata);
for (const auto& entry : metadata) {
- context.AddMetadata(entry.first, entry.second);
+ context_.AddMetadata(entry.first, entry.second);
}
- context.set_deadline(std::chrono::system_clock::now() +
absl::ToChronoMilliseconds(ptr->config().request_timeout));
+ context_.set_deadline(std::chrono::system_clock::now() +
absl::ToChronoMilliseconds(ptr->config().request_timeout));
auto exporter_ptr = exporter_.lock();
if (!exporter_ptr) {
+ SPDLOG_WARN("Exporter has already been destructed");
return;
}
-
- exporter_ptr->stub()->async()->Export(&context, this);
+ exporter_ptr->stub()->async()->Export(&context_, this);
StartCall();
}
@@ -84,6 +83,7 @@ void MetricBidiReactor::OnDone(const grpc::Status& s) {
}
void MetricBidiReactor::write(ExportMetricsServiceRequest request) {
+ SPDLOG_DEBUG("Append ExportMetricsServiceRequest to buffer");
{
absl::MutexLock lk(&requests_mtx_);
requests_.emplace_back(std::move(request));
@@ -104,8 +104,9 @@ void MetricBidiReactor::fireWrite() {
bool expected = false;
if (inflight_.compare_exchange_strong(expected, true,
std::memory_order_relaxed)) {
absl::MutexLock lk(&requests_mtx_);
- request_.CopyFrom(requests_[0]);
+ request_ = std::move(*requests_.begin());
requests_.erase(requests_.begin());
+ SPDLOG_DEBUG("MetricBidiReactor#StartWrite");
StartWrite(&request_);
}
}
diff --git a/cpp/src/main/cpp/stats/include/MetricBidiReactor.h
b/cpp/src/main/cpp/stats/include/MetricBidiReactor.h
index cc08c1d..0a10cd8 100644
--- a/cpp/src/main/cpp/stats/include/MetricBidiReactor.h
+++ b/cpp/src/main/cpp/stats/include/MetricBidiReactor.h
@@ -59,6 +59,7 @@ public:
private:
std::weak_ptr<Client> client_;
std::weak_ptr<OpencensusExporter> exporter_;
+ grpc::ClientContext context_;
ExportMetricsServiceRequest request_;