Skip to content

Commit 6bf1c92

Browse files
authored
Merge pull request ceph#64764 from badone/wip-tracker-72337-mgr-drop-daemonstateindex-lock
mgr/DaemonState: Minimise time we hold the DaemonStateIndex lock Reviewed-by: Radoslaw Zarzynski <[email protected]>
2 parents cd40e65 + b4304d5 commit 6bf1c92

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/mgr/DaemonState.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,12 @@ class DaemonStateIndex
261261
template<typename Callback, typename...Args>
262262
auto with_daemons_by_server(Callback&& cb, Args&&... args) const ->
263263
decltype(cb(by_server, std::forward<Args>(args)...)) {
264-
std::shared_lock l{lock};
265-
266-
return std::forward<Callback>(cb)(by_server, std::forward<Args>(args)...);
264+
const decltype(by_server) by_server_copy = [&] {
265+
// Don't hold the lock any longer than necessary
266+
std::shared_lock l{lock};
267+
return by_server;
268+
}();
269+
return std::forward<Callback>(cb)(by_server_copy, std::forward<Args>(args)...);
267270
}
268271

269272
template<typename Callback, typename...Args>

0 commit comments

Comments
 (0)