Skip to content

Commit f3c4879

Browse files
Tiziano Carottifacebook-github-bot
authored andcommitted
Remove folly::CancellationToken::merge
Summary: This method has been codemod away due to risks of improper usage and replaced with `folly::cancellation_token_merge`. This diff finally removes it. Reviewed By: yfeldblum Differential Revision: D78613006 fbshipit-source-id: e85fe562a7c2e4f51ddd2b5a2e0a1d51c7f2510a
1 parent 39d0dec commit f3c4879

File tree

4 files changed

+22
-39
lines changed

4 files changed

+22
-39
lines changed

folly/CancellationToken-inl.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,4 @@ CancellationToken cancellation_token_merge_fn::operator()(
502502
}
503503
}
504504

505-
template <typename... Ts>
506-
inline CancellationToken CancellationToken::merge(Ts&&... tokens) {
507-
return cancellation_token_merge(std::forward<Ts>(tokens)...);
508-
}
509-
510505
} // namespace folly

folly/CancellationToken.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,6 @@ class CancellationToken {
107107
*/
108108
bool canBeCancelled() const noexcept;
109109

110-
/**
111-
* Obtain a CancellationToken linked to any number of other
112-
* CancellationTokens.
113-
*
114-
* This token will have cancellation requested when any of the passed-in
115-
* tokens do.
116-
* This token is cancellable if any of the passed-in tokens are at the time of
117-
* construction.
118-
*/
119-
template <typename... Ts>
120-
static CancellationToken merge(Ts&&... tokens);
121-
122110
/**
123111
* Swaps the underlying state of the cancellation token with the token that is
124112
* passed-in.

folly/test/CancellationTokenBench.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ struct BenchMergeContext {
3737
: t1(s1.getToken()), t2(s2.getToken()), t3(s3.getToken()) {}
3838
template <typename... Ts>
3939
static inline auto merge(Ts&&... ts) { // abbreviation
40-
return CancellationToken::merge(std::forward<Ts>(ts)...);
40+
return cancellation_token_merge(std::forward<Ts>(ts)...);
4141
}
4242
};
4343

@@ -167,9 +167,9 @@ void benchMergeNDistinct(size_t iters) {
167167
folly::doNotOptimizeAway(std::apply(
168168
[&](const auto&... ts) {
169169
if constexpr (RVal) {
170-
return CancellationToken::merge(copy(ts)...);
170+
return cancellation_token_merge(copy(ts)...);
171171
} else {
172-
return CancellationToken::merge(ts...);
172+
return cancellation_token_merge(ts...);
173173
}
174174
},
175175
toks));

folly/test/CancellationTokenTest.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ TEST(CancellationTokenTest, NonCancellableSource) {
266266
TEST(CancellationTokenTest, MergedToken) {
267267
CancellationSource src1, src2;
268268

269-
auto token = CancellationToken::merge(src1.getToken(), src2.getToken());
269+
auto token = cancellation_token_merge(src1.getToken(), src2.getToken());
270270

271271
EXPECT_TRUE(token.canBeCancelled());
272272
EXPECT_FALSE(token.isCancellationRequested());
@@ -287,17 +287,17 @@ TEST(CancellationTokenTest, MergedToken) {
287287
EXPECT_TRUE(callbackExecuted);
288288
EXPECT_TRUE(token.isCancellationRequested());
289289

290-
token = CancellationToken::merge();
290+
token = cancellation_token_merge();
291291
EXPECT_FALSE(token.canBeCancelled());
292292

293-
token = CancellationToken::merge(CancellationToken());
293+
token = cancellation_token_merge(CancellationToken());
294294
EXPECT_FALSE(token.canBeCancelled());
295295
}
296296

297297
TEST(CancellationTokenTest, Merging1TokenIsEfficient) {
298298
CancellationSource src;
299299
CancellationToken tok = src.getToken();
300-
EXPECT_TRUE(tok == CancellationToken::merge(tok));
300+
EXPECT_TRUE(tok == cancellation_token_merge(tok));
301301
}
302302

303303
// The next bunch of `MergedToken_` tests aims to exercise the distinct
@@ -316,7 +316,7 @@ struct TestCallbackExecutedOnExit {
316316
TEST(CancellationTokenTest, MergedToken_LValA_LValB_cancelA) {
317317
CancellationSource srcA, srcB;
318318
auto tokA = srcA.getToken(), tokB = srcB.getToken();
319-
auto merged = CancellationToken::merge(tokA, tokB);
319+
auto merged = cancellation_token_merge(tokA, tokB);
320320
TestCallbackExecutedOnExit testCb{merged};
321321
EXPECT_TRUE(tokA.canBeCancelled());
322322
EXPECT_TRUE(tokB.canBeCancelled());
@@ -327,7 +327,7 @@ TEST(CancellationTokenTest, MergedToken_LValA_LValB_cancelA) {
327327
TEST(CancellationTokenTest, MergedToken_LValA_LValB_cancelB) {
328328
CancellationSource srcA, srcB;
329329
auto tokA = srcA.getToken(), tokB = srcB.getToken();
330-
auto merged = CancellationToken::merge(tokA, tokB);
330+
auto merged = cancellation_token_merge(tokA, tokB);
331331
TestCallbackExecutedOnExit testCb{merged};
332332
srcB.requestCancellation();
333333
EXPECT_TRUE(merged.isCancellationRequested());
@@ -336,7 +336,7 @@ TEST(CancellationTokenTest, MergedToken_LValA_LValB_cancelB) {
336336
TEST(CancellationTokenTest, MergedToken_LValA_RValB_cancelA) {
337337
CancellationSource srcA, srcB;
338338
auto tokA = srcA.getToken(), tokB = srcB.getToken();
339-
auto merged = CancellationToken::merge(tokA, std::move(tokB));
339+
auto merged = cancellation_token_merge(tokA, std::move(tokB));
340340
EXPECT_TRUE(tokA.canBeCancelled());
341341
EXPECT_FALSE(tokB.canBeCancelled());
342342
TestCallbackExecutedOnExit testCb{merged};
@@ -347,7 +347,7 @@ TEST(CancellationTokenTest, MergedToken_LValA_RValB_cancelA) {
347347
TEST(CancellationTokenTest, MergedToken_LValA_RValB_cancelB) {
348348
CancellationSource srcA, srcB;
349349
auto tokA = srcA.getToken(), tokB = srcB.getToken();
350-
auto merged = CancellationToken::merge(tokA, std::move(tokB));
350+
auto merged = cancellation_token_merge(tokA, std::move(tokB));
351351
TestCallbackExecutedOnExit testCb{merged};
352352
srcB.requestCancellation();
353353
EXPECT_TRUE(merged.isCancellationRequested());
@@ -356,7 +356,7 @@ TEST(CancellationTokenTest, MergedToken_LValA_RValB_cancelB) {
356356
TEST(CancellationTokenTest, MergedToken_RValA_RValB_cancelA) {
357357
CancellationSource srcA, srcB;
358358
auto tokA = srcA.getToken(), tokB = srcB.getToken();
359-
auto merged = CancellationToken::merge(std::move(tokA), std::move(tokB));
359+
auto merged = cancellation_token_merge(std::move(tokA), std::move(tokB));
360360
EXPECT_FALSE(tokA.canBeCancelled());
361361
EXPECT_FALSE(tokB.canBeCancelled());
362362
TestCallbackExecutedOnExit testCb{merged};
@@ -370,24 +370,24 @@ TEST(CancellationTokenTest, MergedTokenDeduplication) {
370370

371371
// None of these allocate a "merging state" because there's only one
372372
// nonempty token.
373-
EXPECT_TRUE(CancellationToken::merge(tok1) == tok1);
374-
EXPECT_TRUE(CancellationToken::merge(CancellationToken(), tok1) == tok1);
373+
EXPECT_TRUE(cancellation_token_merge(tok1) == tok1);
374+
EXPECT_TRUE(cancellation_token_merge(CancellationToken(), tok1) == tok1);
375375
EXPECT_TRUE(
376-
CancellationToken::merge(
376+
cancellation_token_merge(
377377
CancellationToken(), tok1, CancellationToken()) == tok1);
378378
EXPECT_TRUE(
379-
CancellationToken::merge(
379+
cancellation_token_merge(
380380
CancellationToken(), tok1, CancellationToken(), tok1) == tok1);
381381

382382
// A new token with the same state is still deduplicated.
383383
EXPECT_TRUE(src1.getToken() == tok1);
384384
EXPECT_TRUE(
385-
CancellationToken::merge(
385+
cancellation_token_merge(
386386
src1.getToken(), tok1, CancellationToken(), tok1) == tok1);
387387

388388
// Combining multiple distinct tokens allocates a new state
389389
auto tok2 = src2.getToken();
390-
auto tok12 = CancellationToken::merge(tok2, tok1, CancellationToken(), tok1);
390+
auto tok12 = cancellation_token_merge(tok2, tok1, CancellationToken(), tok1);
391391
EXPECT_FALSE(tok12 == tok1);
392392
EXPECT_FALSE(tok12 == tok2);
393393
}
@@ -397,7 +397,7 @@ TEST(CancellationTokenTest, MergedTokenDeduplicationNotObservable_RValA_RValA) {
397397
auto tok1 = src.getToken(), tok2 = src.getToken();
398398
EXPECT_TRUE(tok1.canBeCancelled());
399399
EXPECT_TRUE(tok2.canBeCancelled());
400-
auto merged = CancellationToken::merge(std::move(tok1), std::move(tok2));
400+
auto merged = cancellation_token_merge(std::move(tok1), std::move(tok2));
401401
EXPECT_TRUE(src.getToken() == merged);
402402
// Both were moved out, even though only 1 was used.
403403
EXPECT_FALSE(tok1.canBeCancelled());
@@ -410,7 +410,7 @@ TEST(
410410
CancellationSource src;
411411
auto tok1 = src.getToken(), tok2 = src.getToken(), tok3 = src.getToken();
412412
auto merged =
413-
CancellationToken::merge(std::move(tok1), tok2, std::move(tok3));
413+
cancellation_token_merge(std::move(tok1), tok2, std::move(tok3));
414414
EXPECT_TRUE(src.getToken() == merged);
415415
// Both r-values were moved out, even though only 1 was used.
416416
EXPECT_FALSE(tok1.canBeCancelled());
@@ -423,11 +423,11 @@ TEST(CancellationTokenTest, MergedTokenDestroyedViaCallback) {
423423
CancellationSource srcOut;
424424
{
425425
CancellationSource srcIn;
426-
auto merged = CancellationToken::merge(srcOut.getToken(), srcIn.getToken());
426+
auto merged = cancellation_token_merge(srcOut.getToken(), srcIn.getToken());
427427
// This second merging state has a `CancellationCallback` that keeps the
428428
// first merging state alive even after its own callbacks are dead.
429429
// That causes the first state to be destroyed on an atypical branch.
430-
mergedTwice = CancellationToken::merge(merged, srcIn.getToken());
430+
mergedTwice = cancellation_token_merge(merged, srcIn.getToken());
431431
}
432432
EXPECT_TRUE(mergedTwice.canBeCancelled());
433433
}

0 commit comments

Comments
 (0)