Return-Path: X-Original-To: apmail-kudu-commits-archive@minotaur.apache.org Delivered-To: apmail-kudu-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CE2B018BC3 for ; Fri, 1 Apr 2016 22:12:35 +0000 (UTC) Received: (qmail 36285 invoked by uid 500); 1 Apr 2016 22:12:35 -0000 Delivered-To: apmail-kudu-commits-archive@kudu.apache.org Received: (qmail 36267 invoked by uid 500); 1 Apr 2016 22:12:35 -0000 Mailing-List: contact commits-help@kudu.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@kudu.incubator.apache.org Delivered-To: mailing list commits@kudu.incubator.apache.org Received: (qmail 36258 invoked by uid 99); 1 Apr 2016 22:12:35 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 01 Apr 2016 22:12:35 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 3BC021806E8 for ; Fri, 1 Apr 2016 22:12:35 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -3.221 X-Spam-Level: X-Spam-Status: No, score=-3.221 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id Bh9RppkVXrgB for ; Fri, 1 Apr 2016 22:12:33 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 5CBAC5F247 for ; Fri, 1 Apr 2016 22:12:32 +0000 (UTC) Received: (qmail 36189 invoked by uid 99); 1 Apr 2016 22:12:31 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 01 Apr 2016 22:12:31 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 46884DFF81; Fri, 1 Apr 2016 22:12:31 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: mpercy@apache.org To: commits@kudu.incubator.apache.org Message-Id: <3851b2264fc144489cde5e66d3cea7ff@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: incubator-kudu git commit: Make ScopedCleanup cancelable Date: Fri, 1 Apr 2016 22:12:31 +0000 (UTC) Repository: incubator-kudu Updated Branches: refs/heads/master 2079c81f2 -> c6e709f6e Make ScopedCleanup cancelable Change-Id: I3240bfbb877a3e74c40815a9266af26f69e0ccc3 Reviewed-on: http://gerrit.cloudera.org:8080/2698 Tested-by: Kudu Jenkins Reviewed-by: Adar Dembo Project: http://git-wip-us.apache.org/repos/asf/incubator-kudu/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-kudu/commit/c6e709f6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-kudu/tree/c6e709f6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-kudu/diff/c6e709f6 Branch: refs/heads/master Commit: c6e709f6e7def678ce8d5ea40a36b952c8cb7ad9 Parents: 2079c81 Author: Mike Percy Authored: Thu Mar 31 16:49:58 2016 -0700 Committer: Mike Percy Committed: Fri Apr 1 22:11:53 2016 +0000 ---------------------------------------------------------------------- src/kudu/util/scoped_cleanup-test.cc | 13 ++++++++++++- src/kudu/util/scoped_cleanup.h | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/c6e709f6/src/kudu/util/scoped_cleanup-test.cc ---------------------------------------------------------------------- diff --git a/src/kudu/util/scoped_cleanup-test.cc b/src/kudu/util/scoped_cleanup-test.cc index 790df39..fad50a0 100644 --- a/src/kudu/util/scoped_cleanup-test.cc +++ b/src/kudu/util/scoped_cleanup-test.cc @@ -28,7 +28,18 @@ TEST(ScopedCleanup, TestCleanup) { auto cleanup = MakeScopedCleanup([&] () { var = saved; }); var = 42; } - ASSERT_EQ(var, 0); + ASSERT_EQ(0, var); +} + +TEST(ScopedCleanup, TestCancelCleanup) { + int var = 0; + { + auto saved = var; + auto cleanup = MakeScopedCleanup([&] () { var = saved; }); + var = 42; + cleanup.cancel(); + } + ASSERT_EQ(42, var); } } // namespace kudu http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/c6e709f6/src/kudu/util/scoped_cleanup.h ---------------------------------------------------------------------- diff --git a/src/kudu/util/scoped_cleanup.h b/src/kudu/util/scoped_cleanup.h index a74422c..58aadad 100644 --- a/src/kudu/util/scoped_cleanup.h +++ b/src/kudu/util/scoped_cleanup.h @@ -26,9 +26,19 @@ namespace kudu { template class ScopedCleanup { public: - explicit ScopedCleanup(F f) : f_(std::move(f)) {} - ~ScopedCleanup() { f_(); } + explicit ScopedCleanup(F f) + : cancelled_(false), + f_(std::move(f)) { + } + ~ScopedCleanup() { + if (!cancelled_) { + f_(); + } + } + void cancel() { cancelled_ = true; } + private: + bool cancelled_; F f_; };