summaryrefslogtreecommitdiff
path: root/src/mongo/db/operation_cpu_timer.cpp
diff options
context:
space:
mode:
authordziana.hurynovich <dziana.hurynovich@mongodb.com>2023-01-30 10:24:43 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-01-30 11:09:50 +0000
commitb1195b271c5944cd9b68763b91697828f5cda58b (patch)
tree9790a08345e343a016e835f2b86a7cc58a2bab5e /src/mongo/db/operation_cpu_timer.cpp
parent0de85d50a1d7a1c3b3f2dd73145b7dd55b37b56a (diff)
downloadmongo-b1195b271c5944cd9b68763b91697828f5cda58b.tar.gz
Revert "SERVER-70032 Report CPU time in slow query logs and profiler as cpuNanos"
This reverts commit 0d5ad158ceb6fea1004034bcb78c82c9daf69eac.
Diffstat (limited to 'src/mongo/db/operation_cpu_timer.cpp')
-rw-r--r--src/mongo/db/operation_cpu_timer.cpp56
1 files changed, 7 insertions, 49 deletions
diff --git a/src/mongo/db/operation_cpu_timer.cpp b/src/mongo/db/operation_cpu_timer.cpp
index 1aab6bc8d2b..b4c58483d82 100644
--- a/src/mongo/db/operation_cpu_timer.cpp
+++ b/src/mongo/db/operation_cpu_timer.cpp
@@ -73,9 +73,6 @@ MONGO_FAIL_POINT_DEFINE(hangCPUTimerAfterOnThreadDetach);
class PosixTimer final : public OperationCPUTimer {
public:
- PosixTimer(OperationCPUTimers* timers) : OperationCPUTimer(timers) {}
- ~PosixTimer() = default;
-
Nanoseconds getElapsed() const override;
void start() override;
@@ -160,12 +157,14 @@ Nanoseconds PosixTimer::_getThreadTime() const try {
LOGV2_FATAL(4744601, "Failed to read the CPU time for the current thread", "error"_attr = ex);
}
-// Set of timers created by this OperationContext.
-static auto getCPUTimers = OperationContext::declareDecoration<OperationCPUTimers>();
+static auto getCPUTimer = OperationContext::declareDecoration<PosixTimer>();
} // namespace
-OperationCPUTimers* OperationCPUTimers::get(OperationContext* opCtx) {
+OperationCPUTimer* OperationCPUTimer::get(OperationContext* opCtx) {
+ invariant(Client::getCurrent() && Client::getCurrent()->getOperationContext() == opCtx,
+ "Operation not attached to the current thread");
+
// Checks for time support on POSIX platforms. In particular, it checks for support in presence
// of SMP systems.
static bool isTimeSupported = [] {
@@ -185,56 +184,15 @@ OperationCPUTimers* OperationCPUTimers::get(OperationContext* opCtx) {
if (!isTimeSupported)
return nullptr;
-
- return &getCPUTimers(opCtx);
-}
-
-std::unique_ptr<OperationCPUTimer> OperationCPUTimers::makeTimer() {
- return std::make_unique<PosixTimer>(this);
+ return &getCPUTimer(opCtx);
}
#else // not defined(__linux__)
-OperationCPUTimers* OperationCPUTimers::get(OperationContext*) {
+OperationCPUTimer* OperationCPUTimer::get(OperationContext*) {
return nullptr;
}
-std::unique_ptr<OperationCPUTimer> OperationCPUTimers::makeTimer() {
- MONGO_UNREACHABLE;
-}
-
#endif // defined(__linux__)
-OperationCPUTimer::OperationCPUTimer(OperationCPUTimers* timers) : _timers(timers) {
- _it = _timers->_add(this);
-}
-
-OperationCPUTimer::~OperationCPUTimer() {
- _timers->_remove(_it);
-}
-
-OperationCPUTimers::Iterator OperationCPUTimers::_add(OperationCPUTimer* timer) {
- return _timers.insert(_timers.end(), timer);
-}
-
-void OperationCPUTimers::_remove(OperationCPUTimers::Iterator it) {
- _timers.erase(it);
-}
-
-size_t OperationCPUTimers::count() const {
- return _timers.size();
-}
-
-void OperationCPUTimers::onThreadAttach() {
- for (auto& timer : _timers) {
- timer->onThreadAttach();
- }
-}
-
-void OperationCPUTimers::onThreadDetach() {
- for (auto& timer : _timers) {
- timer->onThreadDetach();
- }
-}
-
} // namespace mongo