/Users/deen/code/yugabyte-db/src/yb/rpc/scheduler.h
Line | Count | Source |
1 | | // |
2 | | // Copyright (c) YugaByte, Inc. |
3 | | // |
4 | | // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except |
5 | | // in compliance with the License. You may obtain a copy of the License at |
6 | | // |
7 | | // http://www.apache.org/licenses/LICENSE-2.0 |
8 | | // |
9 | | // Unless required by applicable law or agreed to in writing, software distributed under the License |
10 | | // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
11 | | // or implied. See the License for the specific language governing permissions and limitations |
12 | | // under the License. |
13 | | // |
14 | | // |
15 | | |
16 | | #ifndef YB_RPC_SCHEDULER_H |
17 | | #define YB_RPC_SCHEDULER_H |
18 | | |
19 | | #include "yb/rpc/rpc_fwd.h" |
20 | | #include "yb/util/net/net_fwd.h" |
21 | | |
22 | | #include "yb/util/status.h" |
23 | | |
24 | | namespace yb { |
25 | | |
26 | | class Status; |
27 | | |
28 | | namespace rpc { |
29 | | |
30 | | using ScheduledTaskId = int64_t; |
31 | | constexpr ScheduledTaskId kUninitializedScheduledTaskId = 0; |
32 | | |
33 | | class ScheduledTaskBase { |
34 | | public: |
35 | | explicit ScheduledTaskBase(ScheduledTaskId id, const SteadyTimePoint& time) |
36 | 39.0M | : id_(id), time_(time) {} |
37 | | |
38 | 48.3M | ScheduledTaskId id() const { return id_; } |
39 | 353M | SteadyTimePoint time() const { return time_; } |
40 | | |
41 | 39.0M | virtual ~ScheduledTaskBase() {} |
42 | | virtual void Run(const Status& status) = 0; |
43 | | |
44 | | private: |
45 | | ScheduledTaskId id_; |
46 | | SteadyTimePoint time_; |
47 | | }; |
48 | | |
49 | | template<class F> |
50 | | class ScheduledTask : public ScheduledTaskBase { |
51 | | public: |
52 | | explicit ScheduledTask(ScheduledTaskId id, const SteadyTimePoint& time, const F& f) |
53 | 36.9M | : ScheduledTaskBase(id, time), f_(f) {} Unexecuted instantiation: redis_commands.cc:yb::rpc::ScheduledTask<yb::redisserver::(anonymous namespace)::HandleDebugSleep(yb::redisserver::(anonymous namespace)::LocalCommandData)::SleepWaiter>::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::redisserver::(anonymous namespace)::HandleDebugSleep(yb::redisserver::(anonymous namespace)::LocalCommandData)::SleepWaiter const&) periodic.cc:yb::rpc::ScheduledTask<yb::rpc::PeriodicTimer::Callback(long long)::$_0>::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::rpc::PeriodicTimer::Callback(long long)::$_0 const&) Line | Count | Source | 53 | 18.7M | : ScheduledTaskBase(id, time), f_(f) {} |
yb::rpc::ScheduledTask<std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> >::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> const&) Line | Count | Source | 53 | 16.5M | : ScheduledTaskBase(id, time), f_(f) {} |
call_home.cc:yb::rpc::ScheduledTask<yb::CallHome::ScheduleCallHome(int)::$_0>::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::CallHome::ScheduleCallHome(int)::$_0 const&) Line | Count | Source | 53 | 1.11M | : ScheduledTaskBase(id, time), f_(f) {} |
permissions.cc:yb::rpc::ScheduledTask<yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1>::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1 const&) Line | Count | Source | 53 | 118k | : ScheduledTaskBase(id, time), f_(f) {} |
yb::rpc::ScheduledTask<yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&)>::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&) const&) Line | Count | Source | 53 | 462k | : ScheduledTaskBase(id, time), f_(f) {} |
transaction_pool.cc:yb::rpc::ScheduledTask<std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> >::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> const&) Line | Count | Source | 53 | 4.69k | : ScheduledTaskBase(id, time), f_(f) {} |
system_query_cache.cc:yb::rpc::ScheduledTask<yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0>::ScheduledTask(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0 const&) Line | Count | Source | 53 | 11.9k | : ScheduledTaskBase(id, time), f_(f) {} |
|
54 | | |
55 | 37.0M | void Run(const Status& status) override { |
56 | 37.0M | f_(status); |
57 | 37.0M | } Unexecuted instantiation: redis_commands.cc:yb::rpc::ScheduledTask<yb::redisserver::(anonymous namespace)::HandleDebugSleep(yb::redisserver::(anonymous namespace)::LocalCommandData)::SleepWaiter>::Run(yb::Status const&) periodic.cc:yb::rpc::ScheduledTask<yb::rpc::PeriodicTimer::Callback(long long)::$_0>::Run(yb::Status const&) Line | Count | Source | 55 | 18.6M | void Run(const Status& status) override { | 56 | 18.6M | f_(status); | 57 | 18.6M | } |
yb::rpc::ScheduledTask<std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> >::Run(yb::Status const&) Line | Count | Source | 55 | 16.7M | void Run(const Status& status) override { | 56 | 16.7M | f_(status); | 57 | 16.7M | } |
call_home.cc:yb::rpc::ScheduledTask<yb::CallHome::ScheduleCallHome(int)::$_0>::Run(yb::Status const&) Line | Count | Source | 55 | 1.10M | void Run(const Status& status) override { | 56 | 1.10M | f_(status); | 57 | 1.10M | } |
permissions.cc:yb::rpc::ScheduledTask<yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1>::Run(yb::Status const&) Line | Count | Source | 55 | 116k | void Run(const Status& status) override { | 56 | 116k | f_(status); | 57 | 116k | } |
yb::rpc::ScheduledTask<yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&)>::Run(yb::Status const&) Line | Count | Source | 55 | 456k | void Run(const Status& status) override { | 56 | 456k | f_(status); | 57 | 456k | } |
transaction_pool.cc:yb::rpc::ScheduledTask<std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> >::Run(yb::Status const&) Line | Count | Source | 55 | 3.77k | void Run(const Status& status) override { | 56 | 3.77k | f_(status); | 57 | 3.77k | } |
system_query_cache.cc:yb::rpc::ScheduledTask<yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0>::Run(yb::Status const&) Line | Count | Source | 55 | 8.95k | void Run(const Status& status) override { | 56 | 8.95k | f_(status); | 57 | 8.95k | } |
|
58 | | private: |
59 | | F f_; |
60 | | }; |
61 | | |
62 | | template<class F> |
63 | | class ScheduledTaskWithId : public ScheduledTaskBase { |
64 | | public: |
65 | | explicit ScheduledTaskWithId(ScheduledTaskId id, const SteadyTimePoint& time, const F& f) |
66 | 2.02M | : ScheduledTaskBase(id, time), f_(f) {} yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::ScheduledTaskWithId(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&) const&) Line | Count | Source | 66 | 143k | : ScheduledTaskBase(id, time), f_(f) {} |
yb::rpc::ScheduledTaskWithId<yb::rpc::ServicePoolImpl::ScheduleCheckTimeout(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'()::operator()() const::'lambda'(long long, yb::Status const&)>::ScheduledTaskWithId(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, yb::rpc::ServicePoolImpl::ScheduleCheckTimeout(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'()::operator()() const::'lambda'(long long, yb::Status const&) const&) Line | Count | Source | 66 | 1.63M | : ScheduledTaskBase(id, time), f_(f) {} |
yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::ScheduledTaskWithId(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&) const&) Line | Count | Source | 66 | 86 | : ScheduledTaskBase(id, time), f_(f) {} |
catalog_manager.cc:yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::ScheduledTaskWithId(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&) const&) Line | Count | Source | 66 | 5.06k | : ScheduledTaskBase(id, time), f_(f) {} |
catalog_manager.cc:yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::ScheduledTaskWithId(long long, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&) const&) Line | Count | Source | 66 | 245k | : ScheduledTaskBase(id, time), f_(f) {} |
|
67 | | |
68 | 1.96M | void Run(const Status& status) override { |
69 | 1.96M | f_(id(), status); |
70 | 1.96M | } yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::Run(yb::Status const&) Line | Count | Source | 68 | 126k | void Run(const Status& status) override { | 69 | 126k | f_(id(), status); | 70 | 126k | } |
yb::rpc::ScheduledTaskWithId<yb::rpc::ServicePoolImpl::ScheduleCheckTimeout(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'()::operator()() const::'lambda'(long long, yb::Status const&)>::Run(yb::Status const&) Line | Count | Source | 68 | 1.59M | void Run(const Status& status) override { | 69 | 1.59M | f_(id(), status); | 70 | 1.59M | } |
yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::Run(yb::Status const&) Line | Count | Source | 68 | 86 | void Run(const Status& status) override { | 69 | 86 | f_(id(), status); | 70 | 86 | } |
catalog_manager.cc:yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::Run(yb::Status const&) Line | Count | Source | 68 | 4.18k | void Run(const Status& status) override { | 69 | 4.18k | f_(id(), status); | 70 | 4.18k | } |
catalog_manager.cc:yb::rpc::ScheduledTaskWithId<void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>::Run(yb::Status const&) Line | Count | Source | 68 | 237k | void Run(const Status& status) override { | 69 | 237k | f_(id(), status); | 70 | 237k | } |
|
71 | | |
72 | | private: |
73 | | F f_; |
74 | | }; |
75 | | |
76 | | class Scheduler { |
77 | | public: |
78 | | explicit Scheduler(IoService* io_service); |
79 | | ~Scheduler(); |
80 | | |
81 | | template<class F> |
82 | 36.9M | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { |
83 | 36.9M | return Schedule(f, std::chrono::steady_clock::now() + delay); |
84 | 36.9M | } periodic.cc:long long yb::rpc::Scheduler::Schedule<yb::rpc::PeriodicTimer::Callback(long long)::$_0>(yb::rpc::PeriodicTimer::Callback(long long)::$_0 const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 18.7M | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 18.7M | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 18.7M | } |
long long yb::rpc::Scheduler::Schedule<std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 16.5M | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 16.5M | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 16.5M | } |
call_home.cc:long long yb::rpc::Scheduler::Schedule<yb::CallHome::ScheduleCallHome(int)::$_0>(yb::CallHome::ScheduleCallHome(int)::$_0 const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 1.11M | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 1.11M | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 1.11M | } |
permissions.cc:long long yb::rpc::Scheduler::Schedule<yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1>(yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1 const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 118k | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 118k | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 118k | } |
long long yb::rpc::Scheduler::Schedule<yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&)>(yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&) const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 462k | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 462k | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 462k | } |
transaction_pool.cc:long long yb::rpc::Scheduler::Schedule<std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 4.69k | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 4.69k | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 4.69k | } |
system_query_cache.cc:long long yb::rpc::Scheduler::Schedule<yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0>(yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0 const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 82 | 11.9k | ScheduledTaskId Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 83 | 11.9k | return Schedule(f, std::chrono::steady_clock::now() + delay); | 84 | 11.9k | } |
|
85 | | |
86 | | template<class F> |
87 | | auto Schedule(const F& f, std::chrono::steady_clock::time_point time) -> |
88 | 37.0M | decltype(f(Status()), ScheduledTaskId()) { |
89 | 37.0M | auto id = NextId(); |
90 | 37.0M | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); |
91 | 37.0M | return id; |
92 | 37.0M | } Unexecuted instantiation: redis_commands.cc:decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::redisserver::(anonymous namespace)::HandleDebugSleep(yb::redisserver::(anonymous namespace)::LocalCommandData)::SleepWaiter>(yb::redisserver::(anonymous namespace)::HandleDebugSleep(yb::redisserver::(anonymous namespace)::LocalCommandData)::SleepWaiter const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) periodic.cc:decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::rpc::PeriodicTimer::Callback(long long)::$_0>(yb::rpc::PeriodicTimer::Callback(long long)::$_0 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 18.7M | decltype(f(Status()), ScheduledTaskId()) { | 89 | 18.7M | auto id = NextId(); | 90 | 18.7M | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 18.7M | return id; | 92 | 18.7M | } |
decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::rpc::Poller::*)(yb::Status const&), yb::rpc::Poller*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 16.5M | decltype(f(Status()), ScheduledTaskId()) { | 89 | 16.5M | auto id = NextId(); | 90 | 16.5M | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 16.5M | return id; | 92 | 16.5M | } |
call_home.cc:decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::CallHome::ScheduleCallHome(int)::$_0>(yb::CallHome::ScheduleCallHome(int)::$_0 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 1.11M | decltype(f(Status()), ScheduledTaskId()) { | 89 | 1.11M | auto id = NextId(); | 90 | 1.11M | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 1.11M | return id; | 92 | 1.11M | } |
permissions.cc:decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1>(yb::client::internal::PermissionsCache::ScheduleGetPermissionsFromMaster(bool)::$_1 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 118k | decltype(f(Status()), ScheduledTaskId()) { | 89 | 118k | auto id = NextId(); | 90 | 118k | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 118k | return id; | 92 | 118k | } |
decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&)>(yb::client::YBTransaction::Impl::HeartbeatDone(yb::Status, yb::tserver::UpdateTransactionRequestPB const&, yb::tserver::UpdateTransactionResponsePB const&, yb::TransactionStatus, std::__1::shared_ptr<yb::client::YBTransaction> const&)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 462k | decltype(f(Status()), ScheduledTaskId()) { | 89 | 462k | auto id = NextId(); | 90 | 462k | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 462k | return id; | 92 | 462k | } |
transaction_pool.cc:decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::client::(anonymous namespace)::SingleLocalityPool::*)(yb::Status const&), yb::client::(anonymous namespace)::SingleLocalityPool*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 4.69k | decltype(f(Status()), ScheduledTaskId()) { | 89 | 4.69k | auto id = NextId(); | 90 | 4.69k | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 4.69k | return id; | 92 | 4.69k | } |
system_query_cache.cc:decltype((fp((yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0>(yb::cqlserver::SystemQueryCache::ScheduleRefreshCache(bool)::$_0 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 88 | 11.9k | decltype(f(Status()), ScheduledTaskId()) { | 89 | 11.9k | auto id = NextId(); | 90 | 11.9k | DoSchedule(std::make_shared<ScheduledTask<F>>(id, time, f)); | 91 | 11.9k | return id; | 92 | 11.9k | } |
|
93 | | |
94 | | template<class F> |
95 | | auto Schedule(const F& f, std::chrono::steady_clock::time_point time) -> |
96 | 2.02M | decltype(f(ScheduledTaskId(), Status()), ScheduledTaskId()) { |
97 | 2.02M | auto id = NextId(); |
98 | 2.02M | DoSchedule(std::make_shared<ScheduledTaskWithId<F>>(id, time, f)); |
99 | 2.02M | return id; |
100 | 2.02M | } decltype((fp((long long)(), (yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 96 | 143k | decltype(f(ScheduledTaskId(), Status()), ScheduledTaskId()) { | 97 | 143k | auto id = NextId(); | 98 | 143k | DoSchedule(std::make_shared<ScheduledTaskWithId<F>>(id, time, f)); | 99 | 143k | return id; | 100 | 143k | } |
decltype((fp((long long)(), (yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<yb::rpc::ServicePoolImpl::ScheduleCheckTimeout(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'()::operator()() const::'lambda'(long long, yb::Status const&)>(yb::rpc::ServicePoolImpl::ScheduleCheckTimeout(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'()::operator()() const::'lambda'(long long, yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 96 | 1.63M | decltype(f(ScheduledTaskId(), Status()), ScheduledTaskId()) { | 97 | 1.63M | auto id = NextId(); | 98 | 1.63M | DoSchedule(std::make_shared<ScheduledTaskWithId<F>>(id, time, f)); | 99 | 1.63M | return id; | 100 | 1.63M | } |
decltype((fp((long long)(), (yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 96 | 86 | decltype(f(ScheduledTaskId(), Status()), ScheduledTaskId()) { | 97 | 86 | auto id = NextId(); | 98 | 86 | DoSchedule(std::make_shared<ScheduledTaskWithId<F>>(id, time, f)); | 99 | 86 | return id; | 100 | 86 | } |
catalog_manager.cc:decltype((fp((long long)(), (yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 96 | 5.06k | decltype(f(ScheduledTaskId(), Status()), ScheduledTaskId()) { | 97 | 5.06k | auto id = NextId(); | 98 | 5.06k | DoSchedule(std::make_shared<ScheduledTaskWithId<F>>(id, time, f)); | 99 | 5.06k | return id; | 100 | 5.06k | } |
catalog_manager.cc:decltype((fp((long long)(), (yb::Status)())) , ((long long)())) yb::rpc::Scheduler::Schedule<void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 96 | 245k | decltype(f(ScheduledTaskId(), Status()), ScheduledTaskId()) { | 97 | 245k | auto id = NextId(); | 98 | 245k | DoSchedule(std::make_shared<ScheduledTaskWithId<F>>(id, time, f)); | 99 | 245k | return id; | 100 | 245k | } |
|
101 | | |
102 | | void Abort(ScheduledTaskId task_id); |
103 | | |
104 | | void Shutdown(); |
105 | | |
106 | | IoService& io_service(); |
107 | | |
108 | | private: |
109 | | ScheduledTaskId NextId(); |
110 | | |
111 | | void DoSchedule(std::shared_ptr<ScheduledTaskBase> task); |
112 | | |
113 | | class Impl; |
114 | | std::unique_ptr<Impl> impl_; |
115 | | }; |
116 | | |
117 | | class ScheduledTaskTracker { |
118 | | public: |
119 | 16.1k | ScheduledTaskTracker() = default; |
120 | | |
121 | | explicit ScheduledTaskTracker(Scheduler* scheduler); |
122 | | |
123 | 15.8k | void Bind(Scheduler* scheduler) { |
124 | 15.8k | scheduler_ = scheduler; |
125 | 15.8k | } |
126 | | |
127 | | template <class F> |
128 | 393k | void Schedule(const F& f, std::chrono::steady_clock::duration delay) { |
129 | 393k | Schedule(f, std::chrono::steady_clock::now() + delay); |
130 | 393k | } void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 128 | 143k | void Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 129 | 143k | Schedule(f, std::chrono::steady_clock::now() + delay); | 130 | 143k | } |
void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 128 | 86 | void Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 129 | 86 | Schedule(f, std::chrono::steady_clock::now() + delay); | 130 | 86 | } |
catalog_manager.cc:void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 128 | 5.06k | void Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 129 | 5.06k | Schedule(f, std::chrono::steady_clock::now() + delay); | 130 | 5.06k | } |
catalog_manager.cc:void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >) Line | Count | Source | 128 | 245k | void Schedule(const F& f, std::chrono::steady_clock::duration delay) { | 129 | 245k | Schedule(f, std::chrono::steady_clock::now() + delay); | 130 | 245k | } |
|
131 | | |
132 | | template <class F> |
133 | 393k | void Schedule(const F& f, std::chrono::steady_clock::time_point time) { |
134 | 393k | Abort(); |
135 | 393k | if (++num_scheduled_ < 0) { // Shutting down |
136 | 86 | --num_scheduled_; |
137 | 86 | return; |
138 | 86 | } |
139 | 393k | last_scheduled_task_id_ = scheduler_->Schedule( |
140 | 393k | [this, f](ScheduledTaskId task_id, const Status& status) { |
141 | 368k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); |
142 | 368k | f(status); |
143 | 368k | --num_scheduled_; |
144 | 368k | }, time); void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)::operator()(long long, yb::Status const&) const Line | Count | Source | 140 | 126k | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 126k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 126k | f(status); | 143 | 126k | --num_scheduled_; | 144 | 126k | }, time); |
void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)::operator()(long long, yb::Status const&) const Line | Count | Source | 140 | 86 | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 86 | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 86 | f(status); | 143 | 86 | --num_scheduled_; | 144 | 86 | }, time); |
catalog_manager.cc:void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)::operator()(long long, yb::Status const&) const Line | Count | Source | 140 | 4.18k | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 4.18k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 4.18k | f(status); | 143 | 4.18k | --num_scheduled_; | 144 | 4.18k | }, time); |
catalog_manager.cc:void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(long long, yb::Status const&)::operator()(long long, yb::Status const&) const Line | Count | Source | 140 | 237k | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 237k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 237k | f(status); | 143 | 237k | --num_scheduled_; | 144 | 237k | }, time); |
|
145 | 393k | } void yb::rpc::ScheduledTaskTracker::Schedule<yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&)>(yb::tserver::PgClientServiceImpl::Impl::ScheduleCheckExpiredSessions(std::__1::chrono::time_point<yb::CoarseMonoClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >)::'lambda'(yb::Status const&) const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 133 | 143k | void Schedule(const F& f, std::chrono::steady_clock::time_point time) { | 134 | 143k | Abort(); | 135 | 143k | if (++num_scheduled_ < 0) { // Shutting down | 136 | 0 | --num_scheduled_; | 137 | 0 | return; | 138 | 0 | } | 139 | 143k | last_scheduled_task_id_ = scheduler_->Schedule( | 140 | 143k | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 143k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 143k | f(status); | 143 | 143k | --num_scheduled_; | 144 | 143k | }, time); | 145 | 143k | } |
void yb::rpc::ScheduledTaskTracker::Schedule<std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> >(std::__1::__bind<void (yb::consensus::RaftConsensus::*)(yb::Status const&), yb::consensus::RaftConsensus*, std::__1::placeholders::__ph<1> const&> const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 133 | 86 | void Schedule(const F& f, std::chrono::steady_clock::time_point time) { | 134 | 86 | Abort(); | 135 | 86 | if (++num_scheduled_ < 0) { // Shutting down | 136 | 0 | --num_scheduled_; | 137 | 0 | return; | 138 | 0 | } | 139 | 86 | last_scheduled_task_id_ = scheduler_->Schedule( | 140 | 86 | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 86 | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 86 | f(status); | 143 | 86 | --num_scheduled_; | 144 | 86 | }, time); | 145 | 86 | } |
catalog_manager.cc:void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3>(yb::master::CatalogManager::ScheduleRefreshTablespaceInfoTask(bool)::$_3 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 133 | 5.06k | void Schedule(const F& f, std::chrono::steady_clock::time_point time) { | 134 | 5.06k | Abort(); | 135 | 5.06k | if (++num_scheduled_ < 0) { // Shutting down | 136 | 2 | --num_scheduled_; | 137 | 2 | return; | 138 | 2 | } | 139 | 5.06k | last_scheduled_task_id_ = scheduler_->Schedule( | 140 | 5.06k | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 5.06k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 5.06k | f(status); | 143 | 5.06k | --num_scheduled_; | 144 | 5.06k | }, time); | 145 | 5.06k | } |
catalog_manager.cc:void yb::rpc::ScheduledTaskTracker::Schedule<yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20>(yb::master::CatalogManager::RebuildYQLSystemPartitions()::$_20 const&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) Line | Count | Source | 133 | 245k | void Schedule(const F& f, std::chrono::steady_clock::time_point time) { | 134 | 245k | Abort(); | 135 | 245k | if (++num_scheduled_ < 0) { // Shutting down | 136 | 84 | --num_scheduled_; | 137 | 84 | return; | 138 | 84 | } | 139 | 245k | last_scheduled_task_id_ = scheduler_->Schedule( | 140 | 245k | [this, f](ScheduledTaskId task_id, const Status& status) { | 141 | 245k | last_scheduled_task_id_.compare_exchange_strong(task_id, rpc::kInvalidTaskId); | 142 | 245k | f(status); | 143 | 245k | --num_scheduled_; | 144 | 245k | }, time); | 145 | 245k | } |
|
146 | | |
147 | | void Abort(); |
148 | | |
149 | | void StartShutdown(); |
150 | | void CompleteShutdown(); |
151 | | |
152 | 182 | void Shutdown() { |
153 | 182 | StartShutdown(); |
154 | 182 | CompleteShutdown(); |
155 | 182 | } |
156 | | |
157 | | private: |
158 | | Scheduler* scheduler_ = nullptr; |
159 | | std::atomic<int64_t> num_scheduled_{0}; |
160 | | std::atomic<rpc::ScheduledTaskId> last_scheduled_task_id_{rpc::kInvalidTaskId}; |
161 | | }; |
162 | | |
163 | | } // namespace rpc |
164 | | } // namespace yb |
165 | | |
166 | | #endif // YB_RPC_SCHEDULER_H |