This is an automated email from the ASF dual-hosted git repository. wangdan pushed a commit to branch migrate-metrics-dev in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git
commit 690fbe2b5eb072ac71afac85f4644669bd24934a Author: Dan Wang <[email protected]> AuthorDate: Fri Mar 24 16:06:02 2023 +0800 feat(new_metrics): migrate replica-level metrics for pegasus_mutation_duplicator (#1413) https://github.com/apache/incubator-pegasus/issues/1412 Migrate replica-level metrics in pegasus_mutation_duplicator class to new framework, including the numbers of successful/failed DUPLICATE requests sent from mutation duplicator. --- src/server/pegasus_mutation_duplicator.cpp | 36 ++++++++++++++---------------- src/server/pegasus_mutation_duplicator.h | 6 ++--- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/server/pegasus_mutation_duplicator.cpp b/src/server/pegasus_mutation_duplicator.cpp index e9295af35..8d87ce60b 100644 --- a/src/server/pegasus_mutation_duplicator.cpp +++ b/src/server/pegasus_mutation_duplicator.cpp @@ -19,14 +19,11 @@ #include "pegasus_mutation_duplicator.h" -#include <fmt/core.h> -#include <fmt/ostream.h> #include <pegasus/error.h> #include <sys/types.h> #include <chrono> #include <cstdint> #include <functional> -#include <iosfwd> #include <memory> #include <tuple> #include <utility> @@ -34,16 +31,15 @@ #include "client_lib/pegasus_client_impl.h" #include "common/duplication_common.h" -#include "common/gpid.h" #include "duplication_internal_types.h" #include "pegasus/client.h" #include "pegasus_key_schema.h" -#include "perf_counter/perf_counter.h" #include "rrdb/rrdb.code.definition.h" #include "rrdb/rrdb_types.h" #include "runtime/message_utils.h" #include "runtime/rpc/rpc_message.h" #include "server/pegasus_write_service.h" +#include "utils/autoref_ptr.h" #include "utils/blob.h" #include "utils/chrono_literals.h" #include "utils/error_code.h" @@ -51,6 +47,16 @@ #include "utils/fmt_logging.h" #include "utils/rand.h" +METRIC_DEFINE_counter(replica, + successful_mutation_dup_requests, + dsn::metric_unit::kRequests, + "The number of successful DUPLICATE requests sent from mutation duplicator"); + +METRIC_DEFINE_counter(replica, + failed_mutation_dup_requests, + dsn::metric_unit::kRequests, + "The number of failed DUPLICATE requests sent from mutation duplicator"); + namespace dsn { namespace replication { struct replica_base; @@ -99,7 +105,10 @@ using namespace dsn::literals::chrono_literals; pegasus_mutation_duplicator::pegasus_mutation_duplicator(dsn::replication::replica_base *r, dsn::string_view remote_cluster, dsn::string_view app) - : mutation_duplicator(r), _remote_cluster(remote_cluster) + : mutation_duplicator(r), + _remote_cluster(remote_cluster), + METRIC_VAR_INIT_replica(successful_mutation_dup_requests), + METRIC_VAR_INIT_replica(failed_mutation_dup_requests) { // initialize pegasus-client when this class is first time used. static __attribute__((unused)) bool _dummy = pegasus_client_factory::initialize(nullptr); @@ -123,17 +132,6 @@ pegasus_mutation_duplicator::pegasus_mutation_duplicator(dsn::replication::repli // never possible to duplicate data to itself CHECK_NE_PREFIX_MSG( get_current_cluster_id(), _remote_cluster_id, "invalid remote cluster: {}", remote_cluster); - - std::string str_gpid = fmt::format("{}", get_gpid()); - _shipped_ops.init_app_counter("app.pegasus", - fmt::format("dup_shipped_ops@{}", str_gpid).c_str(), - COUNTER_TYPE_RATE, - "the total ops of DUPLICATE requests sent from this app"); - _failed_shipping_ops.init_app_counter( - "app.pegasus", - fmt::format("dup_failed_shipping_ops@{}", str_gpid).c_str(), - COUNTER_TYPE_RATE, - "the qps of failed DUPLICATE requests sent from this app"); } void pegasus_mutation_duplicator::send(uint64_t hash, callback cb) @@ -164,7 +162,7 @@ void pegasus_mutation_duplicator::on_duplicate_reply(uint64_t hash, } if (perr != PERR_OK || err != dsn::ERR_OK) { - _failed_shipping_ops->increment(); + METRIC_VAR_INCREMENT(failed_mutation_dup_requests); // randomly log the 1% of the failed duplicate rpc, because minor number of // errors are acceptable. @@ -177,7 +175,7 @@ void pegasus_mutation_duplicator::on_duplicate_reply(uint64_t hash, // duplicating an illegal write to server is unacceptable, fail fast. CHECK_NE_PREFIX_MSG(perr, PERR_INVALID_ARGUMENT, rpc.response().error_hint); } else { - _shipped_ops->increment(); + METRIC_VAR_INCREMENT(successful_mutation_dup_requests); _total_shipped_size += rpc.dsn_request()->header->body_length + rpc.dsn_request()->header->hdr_length; } diff --git a/src/server/pegasus_mutation_duplicator.h b/src/server/pegasus_mutation_duplicator.h index 2107cda5b..9a5aa086c 100644 --- a/src/server/pegasus_mutation_duplicator.h +++ b/src/server/pegasus_mutation_duplicator.h @@ -25,13 +25,13 @@ #include <map> #include <string> -#include "perf_counter/perf_counter_wrapper.h" #include "replica/duplication/mutation_duplicator.h" #include "rrdb/rrdb.client.h" #include "runtime/pipeline.h" #include "runtime/task/task_code.h" #include "runtime/task/task_tracker.h" #include "utils/chrono_literals.h" +#include "utils/metrics.h" #include "utils/string_view.h" #include "utils/zlocks.h" @@ -89,8 +89,8 @@ private: size_t _total_shipped_size{0}; - dsn::perf_counter_wrapper _shipped_ops; - dsn::perf_counter_wrapper _failed_shipping_ops; + METRIC_VAR_DECLARE_counter(successful_mutation_dup_requests); + METRIC_VAR_DECLARE_counter(failed_mutation_dup_requests); }; // Decodes the binary `request_data` into write request in thrift struct, and --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
