/Users/deen/code/yugabyte-db/src/yb/util/cow_object.h
Line | Count | Source (jump to first uncovered line) |
1 | | // Licensed to the Apache Software Foundation (ASF) under one |
2 | | // or more contributor license agreements. See the NOTICE file |
3 | | // distributed with this work for additional information |
4 | | // regarding copyright ownership. The ASF licenses this file |
5 | | // to you under the Apache License, Version 2.0 (the |
6 | | // "License"); you may not use this file except in compliance |
7 | | // with the License. You may obtain a copy of the License at |
8 | | // |
9 | | // http://www.apache.org/licenses/LICENSE-2.0 |
10 | | // |
11 | | // Unless required by applicable law or agreed to in writing, |
12 | | // software distributed under the License is distributed on an |
13 | | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
14 | | // KIND, either express or implied. See the License for the |
15 | | // specific language governing permissions and limitations |
16 | | // under the License. |
17 | | // |
18 | | // The following only applies to changes made to this file as part of YugaByte development. |
19 | | // |
20 | | // Portions Copyright (c) YugaByte, Inc. |
21 | | // |
22 | | // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except |
23 | | // in compliance with the License. You may obtain a copy of the License at |
24 | | // |
25 | | // http://www.apache.org/licenses/LICENSE-2.0 |
26 | | // |
27 | | // Unless required by applicable law or agreed to in writing, software distributed under the License |
28 | | // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
29 | | // or implied. See the License for the specific language governing permissions and limitations |
30 | | // under the License. |
31 | | // |
32 | | #ifndef YB_UTIL_COW_OBJECT_H |
33 | | #define YB_UTIL_COW_OBJECT_H |
34 | | |
35 | | #include <fcntl.h> |
36 | | |
37 | | #include <algorithm> |
38 | | |
39 | | #include <glog/logging.h> |
40 | | |
41 | | #include "yb/gutil/macros.h" |
42 | | |
43 | | #include "yb/util/fault_injection.h" |
44 | | #include "yb/util/logging.h" |
45 | | #include "yb/util/rwc_lock.h" |
46 | | |
47 | | namespace yb { |
48 | | |
49 | | // An object which manages its state via copy-on-write. |
50 | | // |
51 | | // Access to this object can be done more conveniently using the |
52 | | // CowLock template class defined below. |
53 | | // |
54 | | // The 'State' template parameter must be swappable using std::swap. |
55 | | template<class State> |
56 | | class CowObject { |
57 | | public: |
58 | 329k | CowObject() {} _ZN2yb9CowObjectINS_6master27PersistentClusterConfigInfoEEC2Ev Line | Count | Source | 58 | 2.37k | CowObject() {} |
_ZN2yb9CowObjectINS_6master25PersistentRedisConfigInfoEEC2Ev Line | Count | Source | 58 | 7 | CowObject() {} |
_ZN2yb9CowObjectINS_6master23PersistentSysConfigInfoEEC2Ev Line | Count | Source | 58 | 7.12k | CowObject() {} |
_ZN2yb9CowObjectINS_6master18PersistentRoleInfoEEC2Ev Line | Count | Source | 58 | 2.76k | CowObject() {} |
_ZN2yb9CowObjectINS_6master23PersistentCDCStreamInfoEEC2Ev Line | Count | Source | 58 | 159 | CowObject() {} |
_ZN2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEEC2Ev Line | Count | Source | 58 | 4 | CowObject() {} |
_ZN2yb9CowObjectINS_6master20PersistentTabletInfoEEC2Ev Line | Count | Source | 58 | 63.2k | CowObject() {} |
_ZN2yb9CowObjectINS_6master19PersistentTableInfoEEC2Ev Line | Count | Source | 58 | 243k | CowObject() {} |
_ZN2yb9CowObjectINS_6master23PersistentNamespaceInfoEEC2Ev Line | Count | Source | 58 | 9.98k | CowObject() {} |
_ZN2yb9CowObjectINS_6master20PersistentUDTypeInfoEEC2Ev Line | Count | Source | 58 | 47 | CowObject() {} |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master22PersistentSnapshotInfoEEC2Ev |
59 | 8.09k | ~CowObject() {} _ZN2yb9CowObjectINS_6master27PersistentClusterConfigInfoEED2Ev Line | Count | Source | 59 | 440 | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master25PersistentRedisConfigInfoEED2Ev Line | Count | Source | 59 | 7 | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master23PersistentSysConfigInfoEED2Ev Line | Count | Source | 59 | 1.31k | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master18PersistentRoleInfoEED2Ev Line | Count | Source | 59 | 805 | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEED2Ev Line | Count | Source | 59 | 2 | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master20PersistentTabletInfoEED2Ev Line | Count | Source | 59 | 1.73k | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master19PersistentTableInfoEED2Ev Line | Count | Source | 59 | 1.97k | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master23PersistentNamespaceInfoEED2Ev Line | Count | Source | 59 | 1.76k | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master20PersistentUDTypeInfoEED2Ev Line | Count | Source | 59 | 47 | ~CowObject() {} |
_ZN2yb9CowObjectINS_6master23PersistentCDCStreamInfoEED2Ev Line | Count | Source | 59 | 6 | ~CowObject() {} |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master22PersistentSnapshotInfoEED2Ev |
60 | | |
61 | 144M | void ReadLock() const { |
62 | 144M | lock_.ReadLock(); |
63 | 144M | } _ZNK2yb9CowObjectINS_6master20PersistentTabletInfoEE8ReadLockEv Line | Count | Source | 61 | 30.9M | void ReadLock() const { | 62 | 30.9M | lock_.ReadLock(); | 63 | 30.9M | } |
_ZNK2yb9CowObjectINS_6master19PersistentTableInfoEE8ReadLockEv Line | Count | Source | 61 | 109M | void ReadLock() const { | 62 | 109M | lock_.ReadLock(); | 63 | 109M | } |
_ZNK2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE8ReadLockEv Line | Count | Source | 61 | 1.54M | void ReadLock() const { | 62 | 1.54M | lock_.ReadLock(); | 63 | 1.54M | } |
_ZNK2yb9CowObjectINS_6master23PersistentNamespaceInfoEE8ReadLockEv Line | Count | Source | 61 | 1.27M | void ReadLock() const { | 62 | 1.27M | lock_.ReadLock(); | 63 | 1.27M | } |
_ZNK2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE8ReadLockEv Line | Count | Source | 61 | 6 | void ReadLock() const { | 62 | 6 | lock_.ReadLock(); | 63 | 6 | } |
_ZNK2yb9CowObjectINS_6master23PersistentSysConfigInfoEE8ReadLockEv Line | Count | Source | 61 | 682k | void ReadLock() const { | 62 | 682k | lock_.ReadLock(); | 63 | 682k | } |
_ZNK2yb9CowObjectINS_6master18PersistentRoleInfoEE8ReadLockEv Line | Count | Source | 61 | 58.4k | void ReadLock() const { | 62 | 58.4k | lock_.ReadLock(); | 63 | 58.4k | } |
_ZNK2yb9CowObjectINS_6master20PersistentUDTypeInfoEE8ReadLockEv Line | Count | Source | 61 | 2.89k | void ReadLock() const { | 62 | 2.89k | lock_.ReadLock(); | 63 | 2.89k | } |
_ZNK2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE8ReadLockEv Line | Count | Source | 61 | 780 | void ReadLock() const { | 62 | 780 | lock_.ReadLock(); | 63 | 780 | } |
_ZNK2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE8ReadLockEv Line | Count | Source | 61 | 4 | void ReadLock() const { | 62 | 4 | lock_.ReadLock(); | 63 | 4 | } |
Unexecuted instantiation: _ZNK2yb9CowObjectINS_6master22PersistentSnapshotInfoEE8ReadLockEv |
64 | | |
65 | 0 | void lock_shared() const { |
66 | 0 | ReadLock(); |
67 | 0 | } |
68 | | |
69 | 144M | void ReadUnlock() const { |
70 | 144M | lock_.ReadUnlock(); |
71 | 144M | } _ZNK2yb9CowObjectINS_6master20PersistentTabletInfoEE10ReadUnlockEv Line | Count | Source | 69 | 30.9M | void ReadUnlock() const { | 70 | 30.9M | lock_.ReadUnlock(); | 71 | 30.9M | } |
_ZNK2yb9CowObjectINS_6master19PersistentTableInfoEE10ReadUnlockEv Line | Count | Source | 69 | 109M | void ReadUnlock() const { | 70 | 109M | lock_.ReadUnlock(); | 71 | 109M | } |
_ZNK2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE10ReadUnlockEv Line | Count | Source | 69 | 1.54M | void ReadUnlock() const { | 70 | 1.54M | lock_.ReadUnlock(); | 71 | 1.54M | } |
_ZNK2yb9CowObjectINS_6master23PersistentNamespaceInfoEE10ReadUnlockEv Line | Count | Source | 69 | 1.27M | void ReadUnlock() const { | 70 | 1.27M | lock_.ReadUnlock(); | 71 | 1.27M | } |
_ZNK2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE10ReadUnlockEv Line | Count | Source | 69 | 6 | void ReadUnlock() const { | 70 | 6 | lock_.ReadUnlock(); | 71 | 6 | } |
_ZNK2yb9CowObjectINS_6master23PersistentSysConfigInfoEE10ReadUnlockEv Line | Count | Source | 69 | 684k | void ReadUnlock() const { | 70 | 684k | lock_.ReadUnlock(); | 71 | 684k | } |
_ZNK2yb9CowObjectINS_6master18PersistentRoleInfoEE10ReadUnlockEv Line | Count | Source | 69 | 58.3k | void ReadUnlock() const { | 70 | 58.3k | lock_.ReadUnlock(); | 71 | 58.3k | } |
_ZNK2yb9CowObjectINS_6master20PersistentUDTypeInfoEE10ReadUnlockEv Line | Count | Source | 69 | 2.89k | void ReadUnlock() const { | 70 | 2.89k | lock_.ReadUnlock(); | 71 | 2.89k | } |
_ZNK2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE10ReadUnlockEv Line | Count | Source | 69 | 780 | void ReadUnlock() const { | 70 | 780 | lock_.ReadUnlock(); | 71 | 780 | } |
_ZNK2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE10ReadUnlockEv Line | Count | Source | 69 | 4 | void ReadUnlock() const { | 70 | 4 | lock_.ReadUnlock(); | 71 | 4 | } |
Unexecuted instantiation: _ZNK2yb9CowObjectINS_6master22PersistentSnapshotInfoEE10ReadUnlockEv |
72 | | |
73 | 0 | void unlock_shared() const { |
74 | 0 | ReadUnlock(); |
75 | 0 | } |
76 | | |
77 | | // Lock the object for write (preventing concurrent mutators), and make a safe |
78 | | // copy of the object to mutate. |
79 | 1.18M | void StartMutation() { |
80 | 1.18M | lock_.WriteLock(); |
81 | | // Clone our object. |
82 | 1.18M | dirty_state_.reset(new State(state_)); |
83 | 1.18M | } _ZN2yb9CowObjectINS_6master20PersistentTabletInfoEE13StartMutationEv Line | Count | Source | 79 | 401k | void StartMutation() { | 80 | 401k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 401k | dirty_state_.reset(new State(state_)); | 83 | 401k | } |
_ZN2yb9CowObjectINS_6master19PersistentTableInfoEE13StartMutationEv Line | Count | Source | 79 | 732k | void StartMutation() { | 80 | 732k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 732k | dirty_state_.reset(new State(state_)); | 83 | 732k | } |
_ZN2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE13StartMutationEv Line | Count | Source | 79 | 2.49k | void StartMutation() { | 80 | 2.49k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 2.49k | dirty_state_.reset(new State(state_)); | 83 | 2.49k | } |
_ZN2yb9CowObjectINS_6master23PersistentNamespaceInfoEE13StartMutationEv Line | Count | Source | 79 | 14.0k | void StartMutation() { | 80 | 14.0k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 14.0k | dirty_state_.reset(new State(state_)); | 83 | 14.0k | } |
_ZN2yb9CowObjectINS_6master20PersistentUDTypeInfoEE13StartMutationEv Line | Count | Source | 79 | 92 | void StartMutation() { | 80 | 92 | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 92 | dirty_state_.reset(new State(state_)); | 83 | 92 | } |
_ZN2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE13StartMutationEv Line | Count | Source | 79 | 8 | void StartMutation() { | 80 | 8 | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 8 | dirty_state_.reset(new State(state_)); | 83 | 8 | } |
_ZN2yb9CowObjectINS_6master23PersistentSysConfigInfoEE13StartMutationEv Line | Count | Source | 79 | 16.0k | void StartMutation() { | 80 | 16.0k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 16.0k | dirty_state_.reset(new State(state_)); | 83 | 16.0k | } |
_ZN2yb9CowObjectINS_6master18PersistentRoleInfoEE13StartMutationEv Line | Count | Source | 79 | 13.1k | void StartMutation() { | 80 | 13.1k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 13.1k | dirty_state_.reset(new State(state_)); | 83 | 13.1k | } |
_ZN2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE13StartMutationEv Line | Count | Source | 79 | 2.69k | void StartMutation() { | 80 | 2.69k | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 2.69k | dirty_state_.reset(new State(state_)); | 83 | 2.69k | } |
_ZN2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE13StartMutationEv Line | Count | Source | 79 | 4 | void StartMutation() { | 80 | 4 | lock_.WriteLock(); | 81 | | // Clone our object. | 82 | 4 | dirty_state_.reset(new State(state_)); | 83 | 4 | } |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master22PersistentSnapshotInfoEE13StartMutationEv |
84 | | |
85 | | // Abort the current mutation. This drops the write lock without applying any |
86 | | // changes made to the mutable copy. |
87 | 468k | void AbortMutation() { |
88 | 468k | dirty_state_.reset(); |
89 | 468k | is_dirty_ = false; |
90 | 468k | lock_.WriteUnlock(); |
91 | 468k | } _ZN2yb9CowObjectINS_6master20PersistentTabletInfoEE13AbortMutationEv Line | Count | Source | 87 | 32 | void AbortMutation() { | 88 | 32 | dirty_state_.reset(); | 89 | 32 | is_dirty_ = false; | 90 | 32 | lock_.WriteUnlock(); | 91 | 32 | } |
_ZN2yb9CowObjectINS_6master19PersistentTableInfoEE13AbortMutationEv Line | Count | Source | 87 | 463k | void AbortMutation() { | 88 | 463k | dirty_state_.reset(); | 89 | 463k | is_dirty_ = false; | 90 | 463k | lock_.WriteUnlock(); | 91 | 463k | } |
_ZN2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE13AbortMutationEv Line | Count | Source | 87 | 1 | void AbortMutation() { | 88 | 1 | dirty_state_.reset(); | 89 | 1 | is_dirty_ = false; | 90 | 1 | lock_.WriteUnlock(); | 91 | 1 | } |
_ZN2yb9CowObjectINS_6master23PersistentNamespaceInfoEE13AbortMutationEv Line | Count | Source | 87 | 19 | void AbortMutation() { | 88 | 19 | dirty_state_.reset(); | 89 | 19 | is_dirty_ = false; | 90 | 19 | lock_.WriteUnlock(); | 91 | 19 | } |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master20PersistentUDTypeInfoEE13AbortMutationEv Unexecuted instantiation: _ZN2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE13AbortMutationEv Unexecuted instantiation: _ZN2yb9CowObjectINS_6master23PersistentSysConfigInfoEE13AbortMutationEv _ZN2yb9CowObjectINS_6master18PersistentRoleInfoEE13AbortMutationEv Line | Count | Source | 87 | 4.84k | void AbortMutation() { | 88 | 4.84k | dirty_state_.reset(); | 89 | 4.84k | is_dirty_ = false; | 90 | 4.84k | lock_.WriteUnlock(); | 91 | 4.84k | } |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE13AbortMutationEv Unexecuted instantiation: _ZN2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE13AbortMutationEv Unexecuted instantiation: _ZN2yb9CowObjectINS_6master22PersistentSnapshotInfoEE13AbortMutationEv |
92 | | |
93 | | // Commit the current mutation. This escalates to the "Commit" lock, which |
94 | | // blocks any concurrent readers or writers, swaps in the new version of the |
95 | | // State, and then drops the commit lock. |
96 | 715k | void CommitMutation() { |
97 | 715k | lock_.UpgradeToCommitLock(); |
98 | 715k | CHECK(dirty_state_); |
99 | 715k | std::swap(state_, *dirty_state_); |
100 | 715k | dirty_state_.reset(); |
101 | 715k | is_dirty_ = false; |
102 | 715k | lock_.CommitUnlock(); |
103 | 715k | } _ZN2yb9CowObjectINS_6master20PersistentTabletInfoEE14CommitMutationEv Line | Count | Source | 96 | 401k | void CommitMutation() { | 97 | 401k | lock_.UpgradeToCommitLock(); | 98 | 401k | CHECK(dirty_state_); | 99 | 401k | std::swap(state_, *dirty_state_); | 100 | 401k | dirty_state_.reset(); | 101 | 401k | is_dirty_ = false; | 102 | 401k | lock_.CommitUnlock(); | 103 | 401k | } |
_ZN2yb9CowObjectINS_6master19PersistentTableInfoEE14CommitMutationEv Line | Count | Source | 96 | 269k | void CommitMutation() { | 97 | 269k | lock_.UpgradeToCommitLock(); | 98 | 269k | CHECK(dirty_state_); | 99 | 269k | std::swap(state_, *dirty_state_); | 100 | 269k | dirty_state_.reset(); | 101 | 269k | is_dirty_ = false; | 102 | 269k | lock_.CommitUnlock(); | 103 | 269k | } |
_ZN2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE14CommitMutationEv Line | Count | Source | 96 | 2.49k | void CommitMutation() { | 97 | 2.49k | lock_.UpgradeToCommitLock(); | 98 | 2.49k | CHECK(dirty_state_); | 99 | 2.49k | std::swap(state_, *dirty_state_); | 100 | 2.49k | dirty_state_.reset(); | 101 | 2.49k | is_dirty_ = false; | 102 | 2.49k | lock_.CommitUnlock(); | 103 | 2.49k | } |
_ZN2yb9CowObjectINS_6master23PersistentNamespaceInfoEE14CommitMutationEv Line | Count | Source | 96 | 14.0k | void CommitMutation() { | 97 | 14.0k | lock_.UpgradeToCommitLock(); | 98 | 14.0k | CHECK(dirty_state_); | 99 | 14.0k | std::swap(state_, *dirty_state_); | 100 | 14.0k | dirty_state_.reset(); | 101 | 14.0k | is_dirty_ = false; | 102 | 14.0k | lock_.CommitUnlock(); | 103 | 14.0k | } |
_ZN2yb9CowObjectINS_6master20PersistentUDTypeInfoEE14CommitMutationEv Line | Count | Source | 96 | 92 | void CommitMutation() { | 97 | 92 | lock_.UpgradeToCommitLock(); | 98 | 92 | CHECK(dirty_state_); | 99 | 92 | std::swap(state_, *dirty_state_); | 100 | 92 | dirty_state_.reset(); | 101 | 92 | is_dirty_ = false; | 102 | 92 | lock_.CommitUnlock(); | 103 | 92 | } |
_ZN2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE14CommitMutationEv Line | Count | Source | 96 | 8 | void CommitMutation() { | 97 | 8 | lock_.UpgradeToCommitLock(); | 98 | 8 | CHECK(dirty_state_); | 99 | 8 | std::swap(state_, *dirty_state_); | 100 | 8 | dirty_state_.reset(); | 101 | 8 | is_dirty_ = false; | 102 | 8 | lock_.CommitUnlock(); | 103 | 8 | } |
_ZN2yb9CowObjectINS_6master23PersistentSysConfigInfoEE14CommitMutationEv Line | Count | Source | 96 | 16.0k | void CommitMutation() { | 97 | 16.0k | lock_.UpgradeToCommitLock(); | 98 | 16.0k | CHECK(dirty_state_); | 99 | 16.0k | std::swap(state_, *dirty_state_); | 100 | 16.0k | dirty_state_.reset(); | 101 | 16.0k | is_dirty_ = false; | 102 | 16.0k | lock_.CommitUnlock(); | 103 | 16.0k | } |
_ZN2yb9CowObjectINS_6master18PersistentRoleInfoEE14CommitMutationEv Line | Count | Source | 96 | 8.28k | void CommitMutation() { | 97 | 8.28k | lock_.UpgradeToCommitLock(); | 98 | 8.28k | CHECK(dirty_state_); | 99 | 8.28k | std::swap(state_, *dirty_state_); | 100 | 8.28k | dirty_state_.reset(); | 101 | 8.28k | is_dirty_ = false; | 102 | 8.28k | lock_.CommitUnlock(); | 103 | 8.28k | } |
_ZN2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE14CommitMutationEv Line | Count | Source | 96 | 2.69k | void CommitMutation() { | 97 | 2.69k | lock_.UpgradeToCommitLock(); | 98 | 2.69k | CHECK(dirty_state_); | 99 | 2.69k | std::swap(state_, *dirty_state_); | 100 | 2.69k | dirty_state_.reset(); | 101 | 2.69k | is_dirty_ = false; | 102 | 2.69k | lock_.CommitUnlock(); | 103 | 2.69k | } |
_ZN2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE14CommitMutationEv Line | Count | Source | 96 | 4 | void CommitMutation() { | 97 | 4 | lock_.UpgradeToCommitLock(); | 98 | 4 | CHECK(dirty_state_); | 99 | 4 | std::swap(state_, *dirty_state_); | 100 | 4 | dirty_state_.reset(); | 101 | 4 | is_dirty_ = false; | 102 | 4 | lock_.CommitUnlock(); | 103 | 4 | } |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master22PersistentSnapshotInfoEE14CommitMutationEv |
104 | | |
105 | | // Return the current state, not reflecting any in-progress mutations. |
106 | | State& state() { |
107 | | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); |
108 | | return state_; |
109 | | } |
110 | | |
111 | 118M | const State& state() const { |
112 | 118M | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); |
113 | 118M | return state_; |
114 | 118M | } _ZNK2yb9CowObjectINS_6master20PersistentTabletInfoEE5stateEv Line | Count | Source | 111 | 23.5M | const State& state() const { | 112 | 23.5M | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 23.5M | return state_; | 114 | 23.5M | } |
_ZNK2yb9CowObjectINS_6master19PersistentTableInfoEE5stateEv Line | Count | Source | 111 | 90.6M | const State& state() const { | 112 | 90.6M | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 90.6M | return state_; | 114 | 90.6M | } |
_ZNK2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE5stateEv Line | Count | Source | 111 | 1.54M | const State& state() const { | 112 | 1.54M | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 1.54M | return state_; | 114 | 1.54M | } |
_ZNK2yb9CowObjectINS_6master23PersistentNamespaceInfoEE5stateEv Line | Count | Source | 111 | 1.30M | const State& state() const { | 112 | 1.30M | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 1.30M | return state_; | 114 | 1.30M | } |
_ZNK2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE5stateEv Line | Count | Source | 111 | 11 | const State& state() const { | 112 | 11 | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 11 | return state_; | 114 | 11 | } |
_ZNK2yb9CowObjectINS_6master23PersistentSysConfigInfoEE5stateEv Line | Count | Source | 111 | 987k | const State& state() const { | 112 | 987k | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 987k | return state_; | 114 | 987k | } |
_ZNK2yb9CowObjectINS_6master18PersistentRoleInfoEE5stateEv Line | Count | Source | 111 | 81.4k | const State& state() const { | 112 | 81.4k | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 81.4k | return state_; | 114 | 81.4k | } |
_ZNK2yb9CowObjectINS_6master20PersistentUDTypeInfoEE5stateEv Line | Count | Source | 111 | 3.72k | const State& state() const { | 112 | 3.72k | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 3.72k | return state_; | 114 | 3.72k | } |
_ZNK2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE5stateEv Line | Count | Source | 111 | 3.81k | const State& state() const { | 112 | 3.81k | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 3.81k | return state_; | 114 | 3.81k | } |
_ZNK2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE5stateEv Line | Count | Source | 111 | 8 | const State& state() const { | 112 | 8 | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); | 113 | 8 | return state_; | 114 | 8 | } |
Unexecuted instantiation: _ZNK2yb9CowObjectINS_6master22PersistentSnapshotInfoEE5stateEv |
115 | | |
116 | | // Returns the current dirty state (i.e reflecting in-progress mutations). |
117 | | // Should only be called by a thread who previously called StartMutation(). |
118 | 833k | State* mutable_dirty() { |
119 | 833k | DCHECK(lock_.HasWriteLock()); |
120 | 833k | is_dirty_ = true; |
121 | 833k | return DCHECK_NOTNULL(dirty_state_.get()); |
122 | 833k | } _ZN2yb9CowObjectINS_6master20PersistentTabletInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 247k | State* mutable_dirty() { | 119 | 247k | DCHECK(lock_.HasWriteLock()); | 120 | 247k | is_dirty_ = true; | 121 | 247k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 247k | } |
_ZN2yb9CowObjectINS_6master19PersistentTableInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 528k | State* mutable_dirty() { | 119 | 528k | DCHECK(lock_.HasWriteLock()); | 120 | 528k | is_dirty_ = true; | 121 | 528k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 528k | } |
_ZN2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 2.62k | State* mutable_dirty() { | 119 | 2.62k | DCHECK(lock_.HasWriteLock()); | 120 | 2.62k | is_dirty_ = true; | 121 | 2.62k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 2.62k | } |
_ZN2yb9CowObjectINS_6master23PersistentNamespaceInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 17.3k | State* mutable_dirty() { | 119 | 17.3k | DCHECK(lock_.HasWriteLock()); | 120 | 17.3k | is_dirty_ = true; | 121 | 17.3k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 17.3k | } |
_ZN2yb9CowObjectINS_6master20PersistentUDTypeInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 48 | State* mutable_dirty() { | 119 | 48 | DCHECK(lock_.HasWriteLock()); | 120 | 48 | is_dirty_ = true; | 121 | 48 | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 48 | } |
_ZN2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 8 | State* mutable_dirty() { | 119 | 8 | DCHECK(lock_.HasWriteLock()); | 120 | 8 | is_dirty_ = true; | 121 | 8 | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 8 | } |
_ZN2yb9CowObjectINS_6master23PersistentSysConfigInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 22.0k | State* mutable_dirty() { | 119 | 22.0k | DCHECK(lock_.HasWriteLock()); | 120 | 22.0k | is_dirty_ = true; | 121 | 22.0k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 22.0k | } |
_ZN2yb9CowObjectINS_6master18PersistentRoleInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 13.1k | State* mutable_dirty() { | 119 | 13.1k | DCHECK(lock_.HasWriteLock()); | 120 | 13.1k | is_dirty_ = true; | 121 | 13.1k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 13.1k | } |
_ZN2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 2.69k | State* mutable_dirty() { | 119 | 2.69k | DCHECK(lock_.HasWriteLock()); | 120 | 2.69k | is_dirty_ = true; | 121 | 2.69k | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 2.69k | } |
_ZN2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE13mutable_dirtyEv Line | Count | Source | 118 | 4 | State* mutable_dirty() { | 119 | 4 | DCHECK(lock_.HasWriteLock()); | 120 | 4 | is_dirty_ = true; | 121 | 4 | return DCHECK_NOTNULL(dirty_state_.get()); | 122 | 4 | } |
Unexecuted instantiation: _ZN2yb9CowObjectINS_6master22PersistentSnapshotInfoEE13mutable_dirtyEv |
123 | | |
124 | 4.14M | const State& dirty() const { |
125 | 4.14M | return *DCHECK_NOTNULL(dirty_state_.get()); |
126 | 4.14M | } _ZNK2yb9CowObjectINS_6master19PersistentTableInfoEE5dirtyEv Line | Count | Source | 124 | 2.00M | const State& dirty() const { | 125 | 2.00M | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 2.00M | } |
_ZNK2yb9CowObjectINS_6master20PersistentTabletInfoEE5dirtyEv Line | Count | Source | 124 | 2.10M | const State& dirty() const { | 125 | 2.10M | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 2.10M | } |
_ZNK2yb9CowObjectINS_6master27PersistentClusterConfigInfoEE5dirtyEv Line | Count | Source | 124 | 2.29k | const State& dirty() const { | 125 | 2.29k | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 2.29k | } |
_ZNK2yb9CowObjectINS_6master23PersistentNamespaceInfoEE5dirtyEv Line | Count | Source | 124 | 12.9k | const State& dirty() const { | 125 | 12.9k | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 12.9k | } |
_ZNK2yb9CowObjectINS_6master25PersistentRedisConfigInfoEE5dirtyEv Line | Count | Source | 124 | 3 | const State& dirty() const { | 125 | 3 | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 3 | } |
_ZNK2yb9CowObjectINS_6master23PersistentSysConfigInfoEE5dirtyEv Line | Count | Source | 124 | 15.3k | const State& dirty() const { | 125 | 15.3k | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 15.3k | } |
_ZNK2yb9CowObjectINS_6master18PersistentRoleInfoEE5dirtyEv Line | Count | Source | 124 | 5.15k | const State& dirty() const { | 125 | 5.15k | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 5.15k | } |
_ZNK2yb9CowObjectINS_6master20PersistentUDTypeInfoEE5dirtyEv Line | Count | Source | 124 | 46 | const State& dirty() const { | 125 | 46 | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 46 | } |
_ZNK2yb9CowObjectINS_6master23PersistentCDCStreamInfoEE5dirtyEv Line | Count | Source | 124 | 5.23k | const State& dirty() const { | 125 | 5.23k | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 5.23k | } |
_ZNK2yb9CowObjectINS_6master33PersistentUniverseReplicationInfoEE5dirtyEv Line | Count | Source | 124 | 3 | const State& dirty() const { | 125 | 3 | return *DCHECK_NOTNULL(dirty_state_.get()); | 126 | 3 | } |
Unexecuted instantiation: _ZNK2yb9CowObjectINS_6master22PersistentSnapshotInfoEE5dirtyEv |
127 | | |
128 | | bool is_dirty() const { |
129 | | DCHECK(lock_.HasReaders() || lock_.HasWriteLock()); |
130 | | return is_dirty_; |
131 | | } |
132 | | |
133 | | private: |
134 | | mutable RWCLock lock_; |
135 | | |
136 | | State state_; |
137 | | std::unique_ptr<State> dirty_state_; |
138 | | |
139 | | // Set only when mutable_dirty() method is called. Unset whenever dirty_state_ is reset(). |
140 | | bool is_dirty_ = false; |
141 | | |
142 | | DISALLOW_COPY_AND_ASSIGN(CowObject); |
143 | | }; |
144 | | |
145 | | // A lock-guard-like scoped object to acquire the lock on a CowObject, |
146 | | // and obtain a pointer to the correct copy to read. |
147 | | // |
148 | | // Example usage: |
149 | | // |
150 | | // CowObject<Foo> my_obj; |
151 | | // { |
152 | | // CowReadLock<Foo> l(&my_obj); |
153 | | // l.data().get_foo(); |
154 | | // ... |
155 | | // } |
156 | | template<class State> |
157 | | class CowReadLock { |
158 | | public: |
159 | | CowReadLock() : cow_(nullptr) {} |
160 | | |
161 | | explicit CowReadLock(const CowObject<State>* cow) |
162 | 144M | : cow_(cow) { |
163 | 144M | cow_->ReadLock(); |
164 | 144M | } _ZN2yb11CowReadLockINS_6master20PersistentTabletInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 30.9M | : cow_(cow) { | 163 | 30.9M | cow_->ReadLock(); | 164 | 30.9M | } |
_ZN2yb11CowReadLockINS_6master19PersistentTableInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 109M | : cow_(cow) { | 163 | 109M | cow_->ReadLock(); | 164 | 109M | } |
_ZN2yb11CowReadLockINS_6master27PersistentClusterConfigInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 1.54M | : cow_(cow) { | 163 | 1.54M | cow_->ReadLock(); | 164 | 1.54M | } |
_ZN2yb11CowReadLockINS_6master23PersistentNamespaceInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 1.27M | : cow_(cow) { | 163 | 1.27M | cow_->ReadLock(); | 164 | 1.27M | } |
_ZN2yb11CowReadLockINS_6master25PersistentRedisConfigInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 6 | : cow_(cow) { | 163 | 6 | cow_->ReadLock(); | 164 | 6 | } |
_ZN2yb11CowReadLockINS_6master23PersistentSysConfigInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 683k | : cow_(cow) { | 163 | 683k | cow_->ReadLock(); | 164 | 683k | } |
_ZN2yb11CowReadLockINS_6master18PersistentRoleInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 58.4k | : cow_(cow) { | 163 | 58.4k | cow_->ReadLock(); | 164 | 58.4k | } |
_ZN2yb11CowReadLockINS_6master20PersistentUDTypeInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 2.89k | : cow_(cow) { | 163 | 2.89k | cow_->ReadLock(); | 164 | 2.89k | } |
_ZN2yb11CowReadLockINS_6master23PersistentCDCStreamInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 780 | : cow_(cow) { | 163 | 780 | cow_->ReadLock(); | 164 | 780 | } |
_ZN2yb11CowReadLockINS_6master33PersistentUniverseReplicationInfoEEC2EPKNS_9CowObjectIS2_EE Line | Count | Source | 162 | 4 | : cow_(cow) { | 163 | 4 | cow_->ReadLock(); | 164 | 4 | } |
Unexecuted instantiation: _ZN2yb11CowReadLockINS_6master22PersistentSnapshotInfoEEC2EPKNS_9CowObjectIS2_EE |
165 | | |
166 | | CowReadLock(const CowReadLock&) = delete; |
167 | | void operator=(const CowReadLock&) = delete; |
168 | | |
169 | | CowReadLock(CowReadLock&& rhs) noexcept |
170 | 0 | : cow_(rhs.cow_) { |
171 | 0 | rhs.cow_ = nullptr; |
172 | 0 | } Unexecuted instantiation: _ZN2yb11CowReadLockINS_6master23PersistentNamespaceInfoEEC2EOS3_ Unexecuted instantiation: _ZN2yb11CowReadLockINS_6master19PersistentTableInfoEEC2EOS3_ Unexecuted instantiation: _ZN2yb11CowReadLockINS_6master20PersistentTabletInfoEEC2EOS3_ |
173 | | |
174 | | void operator=(CowReadLock&& rhs) noexcept { |
175 | | Unlock(); |
176 | | cow_ = rhs.cow_; |
177 | | rhs.cow_ = nullptr; |
178 | | } |
179 | | |
180 | 144M | void Unlock() { |
181 | 144M | if (cow_) { |
182 | 144M | cow_->ReadUnlock(); |
183 | 144M | cow_ = nullptr; |
184 | 144M | } |
185 | 144M | } _ZN2yb11CowReadLockINS_6master20PersistentTabletInfoEE6UnlockEv Line | Count | Source | 180 | 30.9M | void Unlock() { | 181 | 30.9M | if (cow_) { | 182 | 30.9M | cow_->ReadUnlock(); | 183 | 30.9M | cow_ = nullptr; | 184 | 30.9M | } | 185 | 30.9M | } |
_ZN2yb11CowReadLockINS_6master19PersistentTableInfoEE6UnlockEv Line | Count | Source | 180 | 109M | void Unlock() { | 181 | 109M | if (cow_) { | 182 | 109M | cow_->ReadUnlock(); | 183 | 109M | cow_ = nullptr; | 184 | 109M | } | 185 | 109M | } |
_ZN2yb11CowReadLockINS_6master27PersistentClusterConfigInfoEE6UnlockEv Line | Count | Source | 180 | 1.54M | void Unlock() { | 181 | 1.54M | if (cow_) { | 182 | 1.54M | cow_->ReadUnlock(); | 183 | 1.54M | cow_ = nullptr; | 184 | 1.54M | } | 185 | 1.54M | } |
_ZN2yb11CowReadLockINS_6master23PersistentNamespaceInfoEE6UnlockEv Line | Count | Source | 180 | 1.27M | void Unlock() { | 181 | 1.27M | if (cow_) { | 182 | 1.27M | cow_->ReadUnlock(); | 183 | 1.27M | cow_ = nullptr; | 184 | 1.27M | } | 185 | 1.27M | } |
_ZN2yb11CowReadLockINS_6master25PersistentRedisConfigInfoEE6UnlockEv Line | Count | Source | 180 | 6 | void Unlock() { | 181 | 6 | if (cow_) { | 182 | 6 | cow_->ReadUnlock(); | 183 | 6 | cow_ = nullptr; | 184 | 6 | } | 185 | 6 | } |
_ZN2yb11CowReadLockINS_6master23PersistentSysConfigInfoEE6UnlockEv Line | Count | Source | 180 | 684k | void Unlock() { | 181 | 684k | if (cow_) { | 182 | 684k | cow_->ReadUnlock(); | 183 | 684k | cow_ = nullptr; | 184 | 684k | } | 185 | 684k | } |
_ZN2yb11CowReadLockINS_6master18PersistentRoleInfoEE6UnlockEv Line | Count | Source | 180 | 58.2k | void Unlock() { | 181 | 58.2k | if (cow_) { | 182 | 58.2k | cow_->ReadUnlock(); | 183 | 58.2k | cow_ = nullptr; | 184 | 58.2k | } | 185 | 58.2k | } |
_ZN2yb11CowReadLockINS_6master20PersistentUDTypeInfoEE6UnlockEv Line | Count | Source | 180 | 2.89k | void Unlock() { | 181 | 2.89k | if (cow_) { | 182 | 2.89k | cow_->ReadUnlock(); | 183 | 2.89k | cow_ = nullptr; | 184 | 2.89k | } | 185 | 2.89k | } |
_ZN2yb11CowReadLockINS_6master23PersistentCDCStreamInfoEE6UnlockEv Line | Count | Source | 180 | 780 | void Unlock() { | 181 | 780 | if (cow_) { | 182 | 780 | cow_->ReadUnlock(); | 183 | 780 | cow_ = nullptr; | 184 | 780 | } | 185 | 780 | } |
_ZN2yb11CowReadLockINS_6master33PersistentUniverseReplicationInfoEE6UnlockEv Line | Count | Source | 180 | 4 | void Unlock() { | 181 | 4 | if (cow_) { | 182 | 4 | cow_->ReadUnlock(); | 183 | 4 | cow_ = nullptr; | 184 | 4 | } | 185 | 4 | } |
Unexecuted instantiation: _ZN2yb11CowReadLockINS_6master22PersistentSnapshotInfoEE6UnlockEv |
186 | | |
187 | 117M | const State& data() const { |
188 | 117M | return cow_->state(); |
189 | 117M | } _ZNK2yb11CowReadLockINS_6master20PersistentTabletInfoEE4dataEv Line | Count | Source | 187 | 22.9M | const State& data() const { | 188 | 22.9M | return cow_->state(); | 189 | 22.9M | } |
_ZNK2yb11CowReadLockINS_6master19PersistentTableInfoEE4dataEv Line | Count | Source | 187 | 90.3M | const State& data() const { | 188 | 90.3M | return cow_->state(); | 189 | 90.3M | } |
_ZNK2yb11CowReadLockINS_6master27PersistentClusterConfigInfoEE4dataEv Line | Count | Source | 187 | 1.54M | const State& data() const { | 188 | 1.54M | return cow_->state(); | 189 | 1.54M | } |
_ZNK2yb11CowReadLockINS_6master23PersistentNamespaceInfoEE4dataEv Line | Count | Source | 187 | 1.29M | const State& data() const { | 188 | 1.29M | return cow_->state(); | 189 | 1.29M | } |
_ZNK2yb11CowReadLockINS_6master25PersistentRedisConfigInfoEE4dataEv Line | Count | Source | 187 | 6 | const State& data() const { | 188 | 6 | return cow_->state(); | 189 | 6 | } |
_ZNK2yb11CowReadLockINS_6master23PersistentSysConfigInfoEE4dataEv Line | Count | Source | 187 | 972k | const State& data() const { | 188 | 972k | return cow_->state(); | 189 | 972k | } |
_ZNK2yb11CowReadLockINS_6master18PersistentRoleInfoEE4dataEv Line | Count | Source | 187 | 75.6k | const State& data() const { | 188 | 75.6k | return cow_->state(); | 189 | 75.6k | } |
_ZNK2yb11CowReadLockINS_6master20PersistentUDTypeInfoEE4dataEv Line | Count | Source | 187 | 3.62k | const State& data() const { | 188 | 3.62k | return cow_->state(); | 189 | 3.62k | } |
_ZNK2yb11CowReadLockINS_6master23PersistentCDCStreamInfoEE4dataEv Line | Count | Source | 187 | 1.11k | const State& data() const { | 188 | 1.11k | return cow_->state(); | 189 | 1.11k | } |
_ZNK2yb11CowReadLockINS_6master33PersistentUniverseReplicationInfoEE4dataEv Line | Count | Source | 187 | 4 | const State& data() const { | 188 | 4 | return cow_->state(); | 189 | 4 | } |
Unexecuted instantiation: _ZNK2yb11CowReadLockINS_6master22PersistentSnapshotInfoEE4dataEv |
190 | | |
191 | 117M | const State* operator->() const { |
192 | 117M | return &data(); |
193 | 117M | } _ZNK2yb11CowReadLockINS_6master20PersistentTabletInfoEEptEv Line | Count | Source | 191 | 22.9M | const State* operator->() const { | 192 | 22.9M | return &data(); | 193 | 22.9M | } |
_ZNK2yb11CowReadLockINS_6master19PersistentTableInfoEEptEv Line | Count | Source | 191 | 90.3M | const State* operator->() const { | 192 | 90.3M | return &data(); | 193 | 90.3M | } |
_ZNK2yb11CowReadLockINS_6master27PersistentClusterConfigInfoEEptEv Line | Count | Source | 191 | 1.54M | const State* operator->() const { | 192 | 1.54M | return &data(); | 193 | 1.54M | } |
_ZNK2yb11CowReadLockINS_6master23PersistentNamespaceInfoEEptEv Line | Count | Source | 191 | 1.29M | const State* operator->() const { | 192 | 1.29M | return &data(); | 193 | 1.29M | } |
_ZNK2yb11CowReadLockINS_6master25PersistentRedisConfigInfoEEptEv Line | Count | Source | 191 | 6 | const State* operator->() const { | 192 | 6 | return &data(); | 193 | 6 | } |
_ZNK2yb11CowReadLockINS_6master23PersistentSysConfigInfoEEptEv Line | Count | Source | 191 | 972k | const State* operator->() const { | 192 | 972k | return &data(); | 193 | 972k | } |
_ZNK2yb11CowReadLockINS_6master18PersistentRoleInfoEEptEv Line | Count | Source | 191 | 75.6k | const State* operator->() const { | 192 | 75.6k | return &data(); | 193 | 75.6k | } |
_ZNK2yb11CowReadLockINS_6master20PersistentUDTypeInfoEEptEv Line | Count | Source | 191 | 3.62k | const State* operator->() const { | 192 | 3.62k | return &data(); | 193 | 3.62k | } |
_ZNK2yb11CowReadLockINS_6master23PersistentCDCStreamInfoEEptEv Line | Count | Source | 191 | 1.11k | const State* operator->() const { | 192 | 1.11k | return &data(); | 193 | 1.11k | } |
_ZNK2yb11CowReadLockINS_6master33PersistentUniverseReplicationInfoEEptEv Line | Count | Source | 191 | 4 | const State* operator->() const { | 192 | 4 | return &data(); | 193 | 4 | } |
Unexecuted instantiation: _ZNK2yb11CowReadLockINS_6master22PersistentSnapshotInfoEEptEv |
194 | | |
195 | | bool locked() const { |
196 | | return cow_ != nullptr; |
197 | | } |
198 | | |
199 | 144M | ~CowReadLock() { |
200 | 144M | Unlock(); |
201 | 144M | } _ZN2yb11CowReadLockINS_6master20PersistentTabletInfoEED2Ev Line | Count | Source | 199 | 30.9M | ~CowReadLock() { | 200 | 30.9M | Unlock(); | 201 | 30.9M | } |
_ZN2yb11CowReadLockINS_6master19PersistentTableInfoEED2Ev Line | Count | Source | 199 | 109M | ~CowReadLock() { | 200 | 109M | Unlock(); | 201 | 109M | } |
_ZN2yb11CowReadLockINS_6master27PersistentClusterConfigInfoEED2Ev Line | Count | Source | 199 | 1.54M | ~CowReadLock() { | 200 | 1.54M | Unlock(); | 201 | 1.54M | } |
_ZN2yb11CowReadLockINS_6master23PersistentNamespaceInfoEED2Ev Line | Count | Source | 199 | 1.27M | ~CowReadLock() { | 200 | 1.27M | Unlock(); | 201 | 1.27M | } |
_ZN2yb11CowReadLockINS_6master25PersistentRedisConfigInfoEED2Ev Line | Count | Source | 199 | 6 | ~CowReadLock() { | 200 | 6 | Unlock(); | 201 | 6 | } |
_ZN2yb11CowReadLockINS_6master23PersistentSysConfigInfoEED2Ev Line | Count | Source | 199 | 684k | ~CowReadLock() { | 200 | 684k | Unlock(); | 201 | 684k | } |
_ZN2yb11CowReadLockINS_6master18PersistentRoleInfoEED2Ev Line | Count | Source | 199 | 58.2k | ~CowReadLock() { | 200 | 58.2k | Unlock(); | 201 | 58.2k | } |
_ZN2yb11CowReadLockINS_6master20PersistentUDTypeInfoEED2Ev Line | Count | Source | 199 | 2.89k | ~CowReadLock() { | 200 | 2.89k | Unlock(); | 201 | 2.89k | } |
_ZN2yb11CowReadLockINS_6master23PersistentCDCStreamInfoEED2Ev Line | Count | Source | 199 | 780 | ~CowReadLock() { | 200 | 780 | Unlock(); | 201 | 780 | } |
_ZN2yb11CowReadLockINS_6master33PersistentUniverseReplicationInfoEED2Ev Line | Count | Source | 199 | 4 | ~CowReadLock() { | 200 | 4 | Unlock(); | 201 | 4 | } |
Unexecuted instantiation: _ZN2yb11CowReadLockINS_6master22PersistentSnapshotInfoEED2Ev |
202 | | |
203 | | private: |
204 | | const CowObject<State>* cow_; |
205 | | }; |
206 | | |
207 | | // A lock-guard-like scoped object to acquire the lock on a CowObject, |
208 | | // and obtain a pointer to the correct copy to write. |
209 | | // |
210 | | // Example usage: |
211 | | // |
212 | | // CowObject<Foo> my_obj; |
213 | | // { |
214 | | // CowWriteLock<Foo> l(&my_obj); |
215 | | // l.mutable_data()->set_foo(...); |
216 | | // ... |
217 | | // l.Commit(); |
218 | | // } |
219 | | template<class State> |
220 | | class CowWriteLock { |
221 | | public: |
222 | 3.92M | CowWriteLock() : cow_(nullptr) {} _ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEEC2Ev Line | Count | Source | 222 | 3.66M | CowWriteLock() : cow_(nullptr) {} |
_ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEEC2Ev Line | Count | Source | 222 | 259k | CowWriteLock() : cow_(nullptr) {} |
|
223 | | |
224 | | explicit CowWriteLock(CowObject<State>* cow) |
225 | 1.02M | : cow_(cow) { |
226 | 1.02M | cow_->StartMutation(); |
227 | 1.02M | } _ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 288k | : cow_(cow) { | 226 | 288k | cow_->StartMutation(); | 227 | 288k | } |
_ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 699k | : cow_(cow) { | 226 | 699k | cow_->StartMutation(); | 227 | 699k | } |
_ZN2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 2.49k | : cow_(cow) { | 226 | 2.49k | cow_->StartMutation(); | 227 | 2.49k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 11.9k | : cow_(cow) { | 226 | 11.9k | cow_->StartMutation(); | 227 | 11.9k | } |
_ZN2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 47 | : cow_(cow) { | 226 | 47 | cow_->StartMutation(); | 227 | 47 | } |
_ZN2yb12CowWriteLockINS_6master25PersistentRedisConfigInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 7 | : cow_(cow) { | 226 | 7 | cow_->StartMutation(); | 227 | 7 | } |
_ZN2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 16.0k | : cow_(cow) { | 226 | 16.0k | cow_->StartMutation(); | 227 | 16.0k | } |
_ZN2yb12CowWriteLockINS_6master18PersistentRoleInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 3.54k | : cow_(cow) { | 226 | 3.54k | cow_->StartMutation(); | 227 | 3.54k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 2.54k | : cow_(cow) { | 226 | 2.54k | cow_->StartMutation(); | 227 | 2.54k | } |
_ZN2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEEC2EPNS_9CowObjectIS2_EE Line | Count | Source | 225 | 2 | : cow_(cow) { | 226 | 2 | cow_->StartMutation(); | 227 | 2 | } |
Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEEC2EPNS_9CowObjectIS2_EE |
228 | | |
229 | | CowWriteLock(const CowWriteLock&) = delete; |
230 | | void operator=(const CowWriteLock&) = delete; |
231 | | |
232 | | CowWriteLock(CowWriteLock&& rhs) noexcept |
233 | 36.0k | : cow_(rhs.cow_) { |
234 | 36.0k | rhs.cow_ = nullptr; |
235 | 36.0k | } _ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEEC2EOS3_ Line | Count | Source | 233 | 20.3k | : cow_(rhs.cow_) { | 234 | 20.3k | rhs.cow_ = nullptr; | 235 | 20.3k | } |
_ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEEC2EOS3_ Line | Count | Source | 233 | 15.6k | : cow_(rhs.cow_) { | 234 | 15.6k | rhs.cow_ = nullptr; | 235 | 15.6k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEEC2EOS3_ Line | Count | Source | 233 | 2 | : cow_(rhs.cow_) { | 234 | 2 | rhs.cow_ = nullptr; | 235 | 2 | } |
|
236 | | |
237 | 588k | void operator=(CowWriteLock&& rhs) noexcept { |
238 | 588k | Unlock(); |
239 | 588k | cow_ = rhs.cow_; |
240 | 588k | rhs.cow_ = nullptr; |
241 | 588k | } _ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEEaSEOS3_ Line | Count | Source | 237 | 328k | void operator=(CowWriteLock&& rhs) noexcept { | 238 | 328k | Unlock(); | 239 | 328k | cow_ = rhs.cow_; | 240 | 328k | rhs.cow_ = nullptr; | 241 | 328k | } |
_ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEEaSEOS3_ Line | Count | Source | 237 | 259k | void operator=(CowWriteLock&& rhs) noexcept { | 238 | 259k | Unlock(); | 239 | 259k | cow_ = rhs.cow_; | 240 | 259k | rhs.cow_ = nullptr; | 241 | 259k | } |
|
242 | | |
243 | | // Commit the underlying object. |
244 | | // Requires that the caller hold the lock. |
245 | 561k | void Commit() { |
246 | 561k | cow_->CommitMutation(); |
247 | 561k | cow_ = nullptr; |
248 | 561k | } _ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEE6CommitEv Line | Count | Source | 245 | 288k | void Commit() { | 246 | 288k | cow_->CommitMutation(); | 247 | 288k | cow_ = nullptr; | 248 | 288k | } |
_ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEE6CommitEv Line | Count | Source | 245 | 236k | void Commit() { | 246 | 236k | cow_->CommitMutation(); | 247 | 236k | cow_ = nullptr; | 248 | 236k | } |
_ZN2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEE6CommitEv Line | Count | Source | 245 | 2.49k | void Commit() { | 246 | 2.49k | cow_->CommitMutation(); | 247 | 2.49k | cow_ = nullptr; | 248 | 2.49k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEE6CommitEv Line | Count | Source | 245 | 11.9k | void Commit() { | 246 | 11.9k | cow_->CommitMutation(); | 247 | 11.9k | cow_ = nullptr; | 248 | 11.9k | } |
_ZN2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEE6CommitEv Line | Count | Source | 245 | 47 | void Commit() { | 246 | 47 | cow_->CommitMutation(); | 247 | 47 | cow_ = nullptr; | 248 | 47 | } |
_ZN2yb12CowWriteLockINS_6master25PersistentRedisConfigInfoEE6CommitEv Line | Count | Source | 245 | 7 | void Commit() { | 246 | 7 | cow_->CommitMutation(); | 247 | 7 | cow_ = nullptr; | 248 | 7 | } |
_ZN2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEE6CommitEv Line | Count | Source | 245 | 16.0k | void Commit() { | 246 | 16.0k | cow_->CommitMutation(); | 247 | 16.0k | cow_ = nullptr; | 248 | 16.0k | } |
_ZN2yb12CowWriteLockINS_6master18PersistentRoleInfoEE6CommitEv Line | Count | Source | 245 | 3.53k | void Commit() { | 246 | 3.53k | cow_->CommitMutation(); | 247 | 3.53k | cow_ = nullptr; | 248 | 3.53k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEE6CommitEv Line | Count | Source | 245 | 2.54k | void Commit() { | 246 | 2.54k | cow_->CommitMutation(); | 247 | 2.54k | cow_ = nullptr; | 248 | 2.54k | } |
_ZN2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEE6CommitEv Line | Count | Source | 245 | 2 | void Commit() { | 246 | 2 | cow_->CommitMutation(); | 247 | 2 | cow_ = nullptr; | 248 | 2 | } |
Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEE6CommitEv |
249 | | |
250 | 0 | void CommitOrWarn(const Status& status, const char* action) { |
251 | 0 | if (!status.ok()) { |
252 | 0 | LOG(WARNING) << "An error occurred while " << action << ": " << status; |
253 | 0 | return; |
254 | 0 | } |
255 | 0 | Commit(); |
256 | 0 | } Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEE12CommitOrWarnERKNS_6StatusEPKc Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEE12CommitOrWarnERKNS_6StatusEPKc Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEE12CommitOrWarnERKNS_6StatusEPKc |
257 | | |
258 | 5.83M | void Unlock() { |
259 | 5.83M | if (cow_) { |
260 | 463k | cow_->AbortMutation(); |
261 | 463k | cow_ = nullptr; |
262 | 463k | } |
263 | 5.83M | } _ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEE6UnlockEv Line | Count | Source | 258 | 823k | void Unlock() { | 259 | 823k | if (cow_) { | 260 | 9 | cow_->AbortMutation(); | 261 | 9 | cow_ = nullptr; | 262 | 9 | } | 263 | 823k | } |
_ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEE6UnlockEv Line | Count | Source | 258 | 4.97M | void Unlock() { | 259 | 4.97M | if (cow_) { | 260 | 463k | cow_->AbortMutation(); | 261 | 463k | cow_ = nullptr; | 262 | 463k | } | 263 | 4.97M | } |
_ZN2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEE6UnlockEv Line | Count | Source | 258 | 2.49k | void Unlock() { | 259 | 2.49k | if (cow_) { | 260 | 1 | cow_->AbortMutation(); | 261 | 1 | cow_ = nullptr; | 262 | 1 | } | 263 | 2.49k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEE6UnlockEv Line | Count | Source | 258 | 11.9k | void Unlock() { | 259 | 11.9k | if (cow_) { | 260 | 11 | cow_->AbortMutation(); | 261 | 11 | cow_ = nullptr; | 262 | 11 | } | 263 | 11.9k | } |
_ZN2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEE6UnlockEv Line | Count | Source | 258 | 47 | void Unlock() { | 259 | 47 | if (cow_) { | 260 | 0 | cow_->AbortMutation(); | 261 | 0 | cow_ = nullptr; | 262 | 0 | } | 263 | 47 | } |
_ZN2yb12CowWriteLockINS_6master25PersistentRedisConfigInfoEE6UnlockEv Line | Count | Source | 258 | 7 | void Unlock() { | 259 | 7 | if (cow_) { | 260 | 0 | cow_->AbortMutation(); | 261 | 0 | cow_ = nullptr; | 262 | 0 | } | 263 | 7 | } |
_ZN2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEE6UnlockEv Line | Count | Source | 258 | 16.0k | void Unlock() { | 259 | 16.0k | if (cow_) { | 260 | 0 | cow_->AbortMutation(); | 261 | 0 | cow_ = nullptr; | 262 | 0 | } | 263 | 16.0k | } |
_ZN2yb12CowWriteLockINS_6master18PersistentRoleInfoEE6UnlockEv Line | Count | Source | 258 | 3.54k | void Unlock() { | 259 | 3.54k | if (cow_) { | 260 | 13 | cow_->AbortMutation(); | 261 | 13 | cow_ = nullptr; | 262 | 13 | } | 263 | 3.54k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEE6UnlockEv Line | Count | Source | 258 | 2.54k | void Unlock() { | 259 | 2.54k | if (cow_) { | 260 | 0 | cow_->AbortMutation(); | 261 | 0 | cow_ = nullptr; | 262 | 0 | } | 263 | 2.54k | } |
_ZN2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEE6UnlockEv Line | Count | Source | 258 | 2 | void Unlock() { | 259 | 2 | if (cow_) { | 260 | 0 | cow_->AbortMutation(); | 261 | 0 | cow_ = nullptr; | 262 | 0 | } | 263 | 2 | } |
Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEE6UnlockEv |
264 | | |
265 | | // Obtain the underlying data. |
266 | | // Returns the same data as mutable_data() (not the safe unchanging copy). |
267 | 3.29M | const State& data() const { |
268 | 3.29M | return cow_->dirty(); |
269 | 3.29M | } _ZNK2yb12CowWriteLockINS_6master20PersistentTabletInfoEE4dataEv Line | Count | Source | 267 | 1.34M | const State& data() const { | 268 | 1.34M | return cow_->dirty(); | 269 | 1.34M | } |
_ZNK2yb12CowWriteLockINS_6master19PersistentTableInfoEE4dataEv Line | Count | Source | 267 | 1.94M | const State& data() const { | 268 | 1.94M | return cow_->dirty(); | 269 | 1.94M | } |
_ZNK2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEE4dataEv Line | Count | Source | 267 | 3.52k | const State& data() const { | 268 | 3.52k | return cow_->dirty(); | 269 | 3.52k | } |
Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEE4dataEv _ZNK2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEE4dataEv Line | Count | Source | 267 | 563 | const State& data() const { | 268 | 563 | return cow_->dirty(); | 269 | 563 | } |
_ZNK2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEE4dataEv Line | Count | Source | 267 | 222 | const State& data() const { | 268 | 222 | return cow_->dirty(); | 269 | 222 | } |
_ZNK2yb12CowWriteLockINS_6master18PersistentRoleInfoEE4dataEv Line | Count | Source | 267 | 90 | const State& data() const { | 268 | 90 | return cow_->dirty(); | 269 | 90 | } |
Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEE4dataEv _ZNK2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEE4dataEv Line | Count | Source | 267 | 2.53k | const State& data() const { | 268 | 2.53k | return cow_->dirty(); | 269 | 2.53k | } |
Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEE4dataEv |
270 | | |
271 | 3.29M | const State* operator->() const { |
272 | 3.29M | return &data(); |
273 | 3.29M | } _ZNK2yb12CowWriteLockINS_6master20PersistentTabletInfoEEptEv Line | Count | Source | 271 | 1.34M | const State* operator->() const { | 272 | 1.34M | return &data(); | 273 | 1.34M | } |
_ZNK2yb12CowWriteLockINS_6master19PersistentTableInfoEEptEv Line | Count | Source | 271 | 1.93M | const State* operator->() const { | 272 | 1.93M | return &data(); | 273 | 1.93M | } |
_ZNK2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEEptEv Line | Count | Source | 271 | 3.52k | const State* operator->() const { | 272 | 3.52k | return &data(); | 273 | 3.52k | } |
Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEEptEv _ZNK2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEEptEv Line | Count | Source | 271 | 563 | const State* operator->() const { | 272 | 563 | return &data(); | 273 | 563 | } |
_ZNK2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEEptEv Line | Count | Source | 271 | 222 | const State* operator->() const { | 272 | 222 | return &data(); | 273 | 222 | } |
_ZNK2yb12CowWriteLockINS_6master18PersistentRoleInfoEEptEv Line | Count | Source | 271 | 90 | const State* operator->() const { | 272 | 90 | return &data(); | 273 | 90 | } |
Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEEptEv Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEEptEv _ZNK2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEEptEv Line | Count | Source | 271 | 2.53k | const State* operator->() const { | 272 | 2.53k | return &data(); | 273 | 2.53k | } |
|
274 | | |
275 | | // Obtain the mutable data. |
276 | 611k | State* mutable_data() const { |
277 | 611k | return cow_->mutable_dirty(); |
278 | 611k | } _ZNK2yb12CowWriteLockINS_6master20PersistentTabletInfoEE12mutable_dataEv Line | Count | Source | 276 | 107k | State* mutable_data() const { | 277 | 107k | return cow_->mutable_dirty(); | 278 | 107k | } |
_ZNK2yb12CowWriteLockINS_6master19PersistentTableInfoEE12mutable_dataEv Line | Count | Source | 276 | 460k | State* mutable_data() const { | 277 | 460k | return cow_->mutable_dirty(); | 278 | 460k | } |
_ZNK2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEE12mutable_dataEv Line | Count | Source | 276 | 2.62k | State* mutable_data() const { | 277 | 2.62k | return cow_->mutable_dirty(); | 278 | 2.62k | } |
_ZNK2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEE12mutable_dataEv Line | Count | Source | 276 | 13.0k | State* mutable_data() const { | 277 | 13.0k | return cow_->mutable_dirty(); | 278 | 13.0k | } |
_ZNK2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEE12mutable_dataEv Line | Count | Source | 276 | 3 | State* mutable_data() const { | 277 | 3 | return cow_->mutable_dirty(); | 278 | 3 | } |
_ZNK2yb12CowWriteLockINS_6master25PersistentRedisConfigInfoEE12mutable_dataEv Line | Count | Source | 276 | 7 | State* mutable_data() const { | 277 | 7 | return cow_->mutable_dirty(); | 278 | 7 | } |
_ZNK2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEE12mutable_dataEv Line | Count | Source | 276 | 22.0k | State* mutable_data() const { | 277 | 22.0k | return cow_->mutable_dirty(); | 278 | 22.0k | } |
_ZNK2yb12CowWriteLockINS_6master18PersistentRoleInfoEE12mutable_dataEv Line | Count | Source | 276 | 3.54k | State* mutable_data() const { | 277 | 3.54k | return cow_->mutable_dirty(); | 278 | 3.54k | } |
_ZNK2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEE12mutable_dataEv Line | Count | Source | 276 | 2.54k | State* mutable_data() const { | 277 | 2.54k | return cow_->mutable_dirty(); | 278 | 2.54k | } |
_ZNK2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEE12mutable_dataEv Line | Count | Source | 276 | 2 | State* mutable_data() const { | 277 | 2 | return cow_->mutable_dirty(); | 278 | 2 | } |
Unexecuted instantiation: _ZNK2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEE12mutable_dataEv |
279 | | |
280 | | bool is_dirty() const { |
281 | | return cow_->is_dirty(); |
282 | | } |
283 | | |
284 | 3.67M | bool locked() const { |
285 | 3.67M | return cow_ != nullptr; |
286 | 3.67M | } |
287 | | |
288 | 4.98M | ~CowWriteLock() { |
289 | 4.98M | Unlock(); |
290 | 4.98M | } _ZN2yb12CowWriteLockINS_6master20PersistentTabletInfoEED2Ev Line | Count | Source | 288 | 563k | ~CowWriteLock() { | 289 | 563k | Unlock(); | 290 | 563k | } |
_ZN2yb12CowWriteLockINS_6master19PersistentTableInfoEED2Ev Line | Count | Source | 288 | 4.38M | ~CowWriteLock() { | 289 | 4.38M | Unlock(); | 290 | 4.38M | } |
_ZN2yb12CowWriteLockINS_6master27PersistentClusterConfigInfoEED2Ev Line | Count | Source | 288 | 2.49k | ~CowWriteLock() { | 289 | 2.49k | Unlock(); | 290 | 2.49k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentNamespaceInfoEED2Ev Line | Count | Source | 288 | 11.9k | ~CowWriteLock() { | 289 | 11.9k | Unlock(); | 290 | 11.9k | } |
_ZN2yb12CowWriteLockINS_6master20PersistentUDTypeInfoEED2Ev Line | Count | Source | 288 | 47 | ~CowWriteLock() { | 289 | 47 | Unlock(); | 290 | 47 | } |
_ZN2yb12CowWriteLockINS_6master25PersistentRedisConfigInfoEED2Ev Line | Count | Source | 288 | 7 | ~CowWriteLock() { | 289 | 7 | Unlock(); | 290 | 7 | } |
_ZN2yb12CowWriteLockINS_6master23PersistentSysConfigInfoEED2Ev Line | Count | Source | 288 | 16.0k | ~CowWriteLock() { | 289 | 16.0k | Unlock(); | 290 | 16.0k | } |
_ZN2yb12CowWriteLockINS_6master18PersistentRoleInfoEED2Ev Line | Count | Source | 288 | 3.54k | ~CowWriteLock() { | 289 | 3.54k | Unlock(); | 290 | 3.54k | } |
_ZN2yb12CowWriteLockINS_6master23PersistentCDCStreamInfoEED2Ev Line | Count | Source | 288 | 2.54k | ~CowWriteLock() { | 289 | 2.54k | Unlock(); | 290 | 2.54k | } |
_ZN2yb12CowWriteLockINS_6master33PersistentUniverseReplicationInfoEED2Ev Line | Count | Source | 288 | 2 | ~CowWriteLock() { | 289 | 2 | Unlock(); | 290 | 2 | } |
Unexecuted instantiation: _ZN2yb12CowWriteLockINS_6master22PersistentSnapshotInfoEED2Ev |
291 | | |
292 | | private: |
293 | | CowObject<State>* cow_; |
294 | | }; |
295 | | |
296 | | } // namespace yb |
297 | | |
298 | | #endif /* YB_UTIL_COW_OBJECT_H */ |