Skip to content

Commit 2142e76

Browse files
author
lexeyo
committed
cc core: cleanup wait-all-checked-upgrade experiment
Removes the old WaitAllChecked implementation and cleans up the related experiment. commit_hash:fcd3a1cc43e3858f76fc3f7f172529f01511387c
1 parent 1787e82 commit 2142e76

4 files changed

Lines changed: 15 additions & 77 deletions

File tree

core/include/userver/utils/impl/userver_experiments.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ extern UserverExperiment kJemallocBgThread;
5858
extern UserverExperiment kServerSelectionTimeoutExperiment;
5959
extern UserverExperiment kPgCcExperiment;
6060
extern UserverExperiment kYdbDeadlinePropagationExperiment;
61-
extern UserverExperiment kWaitAllCheckedUpgradeExperiment;
6261
extern UserverExperiment kPgConnlimitWatchdogFallbackExperiment;
6362
extern UserverExperiment kPgConnlimitWatchdogReservationExperiment;
6463

core/src/engine/wait_all_checked.cpp

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -23,54 +23,6 @@ void RethrowError(ContextAccessor& accessor) {
2323
}
2424
}
2525

26-
FutureStatus DoWaitAllCheckedOld(utils::span<ContextAccessor*> targets, Deadline deadline) {
27-
UASSERT_MSG(AreUniqueValues(targets), "Same tasks/futures were detected in WaitAny* call");
28-
auto& current = current_task::GetCurrentTaskContext();
29-
30-
WaitAnyWaitStrategy wait_strategy{targets, current};
31-
while (true) {
32-
bool all_completed = true;
33-
for (auto& target : targets) {
34-
if (!target) {
35-
continue;
36-
}
37-
38-
const bool is_ready = target->IsReady();
39-
if (is_ready) {
40-
auto exception_ptr = target->GetErrorResult();
41-
if (exception_ptr) {
42-
std::rethrow_exception(exception_ptr);
43-
}
44-
target = nullptr;
45-
}
46-
all_completed &= is_ready;
47-
}
48-
if (all_completed) {
49-
break;
50-
}
51-
52-
auto sleep_status = current.Sleep(wait_strategy, deadline);
53-
54-
switch (sleep_status) {
55-
case TaskContext::WakeupSource::kNotify:
56-
break;
57-
case TaskContext::WakeupSource::kDeadlineTimer:
58-
return FutureStatus::kTimeout;
59-
case TaskContext::WakeupSource::kCancelRequest:
60-
return FutureStatus::kCancelled;
61-
case TaskContext::WakeupSource::kNone:
62-
UASSERT_MSG(false, "Unexpected WakeupSource::kNone");
63-
break;
64-
case TaskContext::WakeupSource::kBootstrap:
65-
UASSERT_MSG(false, "Unexpected WakeupSource::kBootstrap");
66-
break;
67-
}
68-
}
69-
70-
UASSERT(std::all_of(targets.begin(), targets.end(), [](auto* target) { return !target; }));
71-
return FutureStatus::kReady;
72-
}
73-
7426
} // namespace
7527

7628
class WaitAllCheckedContext final {
@@ -189,9 +141,6 @@ void WaitAllCheckedContext::Impl::DoNotify(
189141
}
190142

191143
FutureStatus DoWaitAllChecked(std::vector<ContextAccessor*>&& targets, Deadline deadline) {
192-
if (!utils::impl::kWaitAllCheckedUpgradeExperiment.IsEnabled()) {
193-
return DoWaitAllCheckedOld(targets, deadline);
194-
}
195144
UASSERT_MSG(AreUniqueValues(targets), "Same tasks/futures were detected in WaitAny* call");
196145
WaitAllCheckedContext context{std::move(targets)};
197146
return context.WaitUntil(deadline);

core/src/engine/wait_all_checked_test.cpp

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,7 @@ engine::TaskWithResult<int> FastSuccessfulTask(int i) {
4343

4444
} // namespace
4545

46-
class WaitAllChecked : public ::testing::Test {
47-
public:
48-
void SetUp() override { scope_.Set(utils::impl::kWaitAllCheckedUpgradeExperiment, true); }
49-
50-
private:
51-
utils::impl::UserverExperimentsScope scope_;
52-
};
53-
54-
UTEST_F(WaitAllChecked, JustWorksVectorTasks) {
46+
UTEST(WaitAllChecked, JustWorksVectorTasks) {
5547
static constexpr std::size_t kTaskCount = 4;
5648

5749
std::vector<engine::TaskWithResult<void>> tasks;
@@ -69,7 +61,7 @@ UTEST_F(WaitAllChecked, JustWorksVectorTasks) {
6961
}
7062
}
7163

72-
UTEST_F(WaitAllChecked, JustWorksVariadicTasks) {
64+
UTEST(WaitAllChecked, JustWorksVariadicTasks) {
7365
static constexpr std::size_t kTaskCount = 3;
7466

7567
std::vector<engine::TaskWithResult<void>> tasks;
@@ -87,7 +79,7 @@ UTEST_F(WaitAllChecked, JustWorksVariadicTasks) {
8779
}
8880
}
8981

90-
UTEST_F_MT(WaitAllChecked, EarlyThrow, 4) {
82+
UTEST_MT(WaitAllChecked, EarlyThrow, 4) {
9183
std::vector<engine::TaskWithResult<void>> tasks;
9284
tasks.reserve(GetThreadCount() + 1);
9385

@@ -99,13 +91,13 @@ UTEST_F_MT(WaitAllChecked, EarlyThrow, 4) {
9991
UEXPECT_THROW(engine::WaitAllChecked(tasks), std::runtime_error);
10092
}
10193

102-
UTEST_F(WaitAllChecked, InvalidTask) {
94+
UTEST(WaitAllChecked, InvalidTask) {
10395
std::vector<engine::TaskWithResult<void>> tasks;
10496
tasks.emplace_back();
10597
UEXPECT_NO_THROW(engine::WaitAllChecked(tasks));
10698
}
10799

108-
UTEST_F(WaitAllChecked, ValidAndInvalidTasks) {
100+
UTEST(WaitAllChecked, ValidAndInvalidTasks) {
109101
std::vector<engine::TaskWithResult<void>> tasks;
110102
tasks.push_back(FastSuccessfulTask());
111103
for (std::size_t i = 0; i < 3; ++i) {
@@ -116,7 +108,7 @@ UTEST_F(WaitAllChecked, ValidAndInvalidTasks) {
116108
EXPECT_TRUE(tasks[0].IsFinished());
117109
}
118110

119-
UTEST_F(WaitAllChecked, Cancellation) {
111+
UTEST(WaitAllChecked, Cancellation) {
120112
constexpr std::size_t kTaskCount = 3;
121113

122114
std::vector<engine::TaskWithResult<void>> tasks;
@@ -130,7 +122,7 @@ UTEST_F(WaitAllChecked, Cancellation) {
130122
UEXPECT_THROW(engine::WaitAllChecked(tasks), engine::WaitInterruptedException);
131123
}
132124

133-
UTEST_F(WaitAllChecked, SequentialWakeups) {
125+
UTEST(WaitAllChecked, SequentialWakeups) {
134126
constexpr std::size_t kTaskCount = 10;
135127

136128
engine::SingleConsumerEvent events[kTaskCount];
@@ -149,7 +141,7 @@ UTEST_F(WaitAllChecked, SequentialWakeups) {
149141
engine::WaitAllChecked(tasks);
150142
}
151143

152-
UTEST_F(WaitAllChecked, TaskWithResult) {
144+
UTEST(WaitAllChecked, TaskWithResult) {
153145
constexpr std::size_t kTaskCount = 10;
154146

155147
std::vector<engine::TaskWithResult<int>> tasks;
@@ -167,7 +159,7 @@ UTEST_F(WaitAllChecked, TaskWithResult) {
167159
}
168160
}
169161

170-
UTEST_F(WaitAllChecked, HeterogenousWait) {
162+
UTEST(WaitAllChecked, HeterogenousWait) {
171163
constexpr int kExpectedValue = 42;
172164

173165
auto task = FastSuccessfulTask();
@@ -187,40 +179,39 @@ UTEST_F(WaitAllChecked, HeterogenousWait) {
187179
EXPECT_EQ(future.get(), kExpectedValue);
188180
}
189181

190-
UTEST_F(WaitAllChecked, DeadlineSuccess) {
182+
UTEST(WaitAllChecked, DeadlineSuccess) {
191183
auto task = FastSuccessfulTask();
192184
EXPECT_EQ(engine::WaitAllCheckedFor(utest::kMaxTestWaitTime, task), engine::FutureStatus::kReady);
193185
EXPECT_TRUE(task.IsFinished());
194186
}
195187

196-
UTEST_F(WaitAllChecked, DeadlineTimeout) {
188+
UTEST(WaitAllChecked, DeadlineTimeout) {
197189
auto task = SlowSuccessfulTask();
198190
EXPECT_EQ(engine::WaitAllCheckedFor(10ms, task), engine::FutureStatus::kTimeout);
199191
EXPECT_FALSE(task.IsFinished());
200192
}
201193

202-
UTEST_F(WaitAllChecked, DeadlineCancelled) {
194+
UTEST(WaitAllChecked, DeadlineCancelled) {
203195
auto task = SlowSuccessfulTask();
204196
engine::current_task::SetDeadline(engine::Deadline::FromDuration(10ms));
205197
EXPECT_EQ(engine::WaitAllCheckedFor(utest::kMaxTestWaitTime, task), engine::FutureStatus::kCancelled);
206198
}
207199

208-
UTEST_F(WaitAllChecked, DeadlineCancelledBefore) {
200+
UTEST(WaitAllChecked, DeadlineCancelledBefore) {
209201
auto task = SlowSuccessfulTask();
210202
engine::current_task::SetDeadline(engine::Deadline::Passed());
211203
EXPECT_EQ(engine::WaitAllCheckedFor(utest::kMaxTestWaitTime, task), engine::FutureStatus::kCancelled);
212204
}
213205

214-
UTEST_F(WaitAllChecked, DeadlineTimeoutUntil) {
206+
UTEST(WaitAllChecked, DeadlineTimeoutUntil) {
215207
auto task = SlowSuccessfulTask();
216208
EXPECT_EQ(
217209
engine::WaitAllCheckedUntil(std::chrono::steady_clock::now() + 10ms, task),
218210
engine::FutureStatus::kTimeout
219211
);
220212
}
221213

222-
UTEST_F_MT(WaitAllChecked, ExceptionStressTest, 16) {
223-
ASSERT_TRUE(utils::impl::kWaitAllCheckedUpgradeExperiment.IsEnabled());
214+
UTEST_MT(WaitAllChecked, ExceptionStressTest, 16) {
224215
for (auto _ : utest::StressLoop()) {
225216
const std::size_t task_count = utils::RandRange(100u, 500u);
226217
const std::size_t failing = utils::RandRange(std::size_t{0}, task_count);

core/src/utils/impl/userver_experiments.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ UserverExperiment kJemallocBgThread{"jemalloc-bg-thread"};
9494
UserverExperiment kServerSelectionTimeoutExperiment{"mongo-server-selection-timeout"};
9595
UserverExperiment kPgCcExperiment{"pg-cc"};
9696
UserverExperiment kYdbDeadlinePropagationExperiment{"ydb-deadline-propagation"};
97-
UserverExperiment kWaitAllCheckedUpgradeExperiment{"wait-all-checked-upgrade"};
9897
UserverExperiment kPgConnlimitWatchdogFallbackExperiment{"pg-connlimit-watchdog-new-fallback"};
9998
UserverExperiment kPgConnlimitWatchdogReservationExperiment{"pg-connlimit-watchdog-new-reservation"};
10099

0 commit comments

Comments
 (0)