Skip to content
This repository has been archived by the owner on Jun 23, 2022. It is now read-only.

feat: add an interface to get read_throttling_reject_count perf counter #940

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions include/dsn/dist/replication/replication_app_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,8 @@ class replication_app_base : public replica_base
replica_init_info _info;

explicit replication_app_base(::dsn::replication::replica *replica);

dsn::perf_counter *get_counter_recent_read_throttling_reject_count();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why didn't you return the smart pointer?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the original perf_counter is a raw point, passed by _counter_recent_read_throttling_reject_count.get()

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @levy5307, it's better to avoid raw pointer and use smart pointer, although the original value is raw.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. It's meaningless to wrap a raw point by shared_ptr

  2. I think it's no risk there because replica has the longer lifetime than _app
    ref: https://github.com/XiaoMi/rdsn/blob/master/src/replica/replica.h#L568
    https://github.com/XiaoMi/rdsn/blob/master/src/replica/replica.h#L488

  3. If I refactor raw point to shared_ptr here, it would be a big change, due to there are many codes using define, and I have to replace -> to ->operator->()
    ref: https://github.com/XiaoMi/rdsn/blob/master/src/replica/replica_throttle.cpp#L30

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have another question, why would you like to pass this perf-counter to pegasus?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the throttling_controller works on Pegasus, so must use the same perf_counter to collect read reject count

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have another question, why would you like to pass this perf-counter to pegasus?

+1, the function put here seems to be strange

};

} // namespace replication
Expand Down
4 changes: 3 additions & 1 deletion src/replica/replica.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@

#include <dsn/perf_counter/perf_counter_wrapper.h>
#include <dsn/dist/replication/replica_base.h>
#include <dsn/dist/replication/replication_app_base.h>

#include "common/replication_common.h"
#include "mutation.h"
Expand All @@ -62,7 +63,6 @@ class access_controller;
} // namespace security
namespace replication {

class replication_app_base;
class replica_stub;
class replica_duplicator_manager;
class replica_backup_manager;
Expand Down Expand Up @@ -467,6 +467,8 @@ class replica : public serverlet<replica>, public ref_counter, public replica_ba
friend class replica_disk_migrator;
friend class replica_disk_test;
friend class replica_disk_migrate_test;
friend dsn::perf_counter *
replication_app_base::get_counter_recent_read_throttling_reject_count();

// replica configuration, updated by update_local_configuration ONLY
replica_configuration _config;
Expand Down
8 changes: 8 additions & 0 deletions src/replica/replication_app_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -603,5 +603,13 @@ ::dsn::error_code replication_app_base::update_init_info_ballot_and_decree(repli
_info.init_offset_in_private_log,
r->last_durable_decree());
}

dsn::perf_counter *replication_app_base::get_counter_recent_read_throttling_reject_count()
{
dassert(_replica->_counter_recent_read_throttling_reject_count.get(),
"_counter_recent_read_throttling_reject_count is null");

return _replica->_counter_recent_read_throttling_reject_count.get();
}
} // namespace replication
} // namespace dsn