From dd2682c1fba8e690ca50c13dff877bd02008b0fd Mon Sep 17 00:00:00 2001 From: Adar Dembo Date: Wed, 4 Dec 2019 11:43:08 -0800 Subject: [PATCH] messenger: stop using deprecated mem_fun When building against LLVM 9's libc++, we get a warning about using a deprecated function. Seems like mem_fn is the appropriate replacement. ../../src/kudu/rpc/messenger.cc:238:48: warning: 'mem_fun' is deprecated [-Wdeprecated-declarations] *msgr = shared_ptr(new_msgr, std::mem_fun(&Messenger::AllExternalReferencesDropped)); ^ ../../thirdparty/installed/tsan/include/c++/v1/functional:1148:1: note: 'mem_fun' has been explicitly marked deprecated here _LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY ^ ../../thirdparty/installed/tsan/include/c++/v1/__config:944:39: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX11' ^ ../../thirdparty/installed/tsan/include/c++/v1/__config:933:48: note: expanded from macro '_LIBCPP_DEPRECATED' ^ 1 warning generated. Change-Id: Ife57c52050ba19a07218694c84989fa16f1dd341 Reviewed-on: http://gerrit.cloudera.org:8080/14834 Reviewed-by: Alexey Serbin Reviewed-by: Grant Henke Tested-by: Adar Dembo --- src/kudu/rpc/messenger.cc | 17 +++++++---------- src/kudu/rpc/messenger.h | 7 ++++--- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/kudu/rpc/messenger.cc b/src/kudu/rpc/messenger.cc index fd9d93961d..3ef04d3bc7 100644 --- a/src/kudu/rpc/messenger.cc +++ b/src/kudu/rpc/messenger.cc @@ -51,7 +51,6 @@ #include "kudu/util/metrics.h" #include "kudu/util/monotime.h" #include "kudu/util/net/socket.h" -#include "kudu/util/scoped_cleanup.h" #include "kudu/util/status.h" #include "kudu/util/thread_restrictions.h" #include "kudu/util/threadpool.h" @@ -184,15 +183,15 @@ MessengerBuilder& MessengerBuilder::set_reuseport() { return *this; } -Status MessengerBuilder::Build(shared_ptr *msgr) { +Status MessengerBuilder::Build(shared_ptr* msgr) { // Initialize SASL library before we start making requests RETURN_NOT_OK(SaslInit(!keytab_file_.empty())); - Messenger* new_msgr(new Messenger(*this)); - - auto cleanup = MakeScopedCleanup([&] () { - new_msgr->AllExternalReferencesDropped(); - }); + // See docs on Messenger::retain_self_ for info about this odd hack. + // + // Note: can't use make_shared() as it doesn't support custom deleters. + shared_ptr new_msgr(new Messenger(*this), + std::mem_fn(&Messenger::AllExternalReferencesDropped)); RETURN_NOT_OK(ParseTriState("--rpc_authentication", rpc_authentication_, @@ -233,9 +232,7 @@ Status MessengerBuilder::Build(shared_ptr *msgr) { } } - // See docs on Messenger::retain_self_ for info about this odd hack. - cleanup.cancel(); - *msgr = shared_ptr(new_msgr, std::mem_fun(&Messenger::AllExternalReferencesDropped)); + *msgr = std::move(new_msgr); return Status::OK(); } diff --git a/src/kudu/rpc/messenger.h b/src/kudu/rpc/messenger.h index 5dfa104fe6..57966847ed 100644 --- a/src/kudu/rpc/messenger.h +++ b/src/kudu/rpc/messenger.h @@ -21,15 +21,17 @@ #include #include #include +#include #include #include #include -#include "kudu/gutil/macros.h" #include "kudu/gutil/gscoped_ptr.h" +#include "kudu/gutil/macros.h" #include "kudu/gutil/ref_counted.h" #include "kudu/rpc/connection.h" +#include "kudu/rpc/rpc_service.h" #include "kudu/security/security_flags.h" #include "kudu/security/token.pb.h" #include "kudu/util/locks.h" @@ -65,7 +67,6 @@ class InboundCall; class Messenger; class OutboundCall; class Reactor; -class RpcService; class RpczStore; struct AcceptorPoolInfo { @@ -165,7 +166,7 @@ class MessengerBuilder { // Configure the messenger to set the SO_REUSEPORT socket option. MessengerBuilder& set_reuseport(); - Status Build(std::shared_ptr *msgr); + Status Build(std::shared_ptr* msgr); private: const std::string name_;