Skip to content

Commit 8e9d441

Browse files
committed
Intermediate changes
1 parent 239d5bd commit 8e9d441

File tree

3 files changed

+17
-30
lines changed

3 files changed

+17
-30
lines changed

yt/yt/core/misc/fair_scheduler-inl.h

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ class TFairScheduler
3434
bucket->Tasks.push(std::move(task));
3535
}
3636

37-
TTask Dequeue() override
37+
std::optional<TTask> TryDequeue() override
3838
{
3939
auto guard = Guard(Lock_);
4040

4141
while (true) {
42-
YT_VERIFY(!BucketHeap_.empty());
42+
if (BucketHeap_.empty()) {
43+
return std::nullopt;
44+
}
4345

4446
auto* bucket = BucketHeap_.front();
4547
YT_ASSERT(bucket->InHeap);
@@ -77,13 +79,6 @@ class TFairScheduler
7779
YT_ABORT();
7880
}
7981

80-
bool IsEmpty() const override
81-
{
82-
auto guard = Guard(Lock_);
83-
84-
return BucketHeap_.empty();
85-
}
86-
8782
void ChargeUser(const std::string& user, TDuration time) override
8883
{
8984
auto guard = Guard(Lock_);

yt/yt/core/misc/fair_scheduler.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ struct IFairScheduler
1111
: public TRefCounted
1212
{
1313
virtual void Enqueue(TTask task, const std::string& user) = 0;
14-
virtual TTask Dequeue() = 0;
15-
16-
virtual bool IsEmpty() const = 0;
14+
virtual std::optional<TTask> TryDequeue() = 0;
1715

1816
virtual void ChargeUser(const std::string& user, TDuration time) = 0;
1917
};

yt/yt/core/misc/unittests/fair_scheduler_ut.cpp

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,17 @@ class TFairSchedulerTest
1313
: public ::testing::Test
1414
{
1515
protected:
16-
IFairSchedulerPtr<TString> Scheduler_ = CreateFairScheduler<TString>();
16+
const IFairSchedulerPtr<TString> Scheduler_ = CreateFairScheduler<TString>();
1717
};
1818

1919
TEST_F(TFairSchedulerTest, Simple)
2020
{
2121
Scheduler_->Enqueue("T1", "John");
2222
Scheduler_->Enqueue("T2", "John");
2323

24-
EXPECT_FALSE(Scheduler_->IsEmpty());
25-
EXPECT_EQ(Scheduler_->Dequeue(), "T1");
26-
EXPECT_FALSE(Scheduler_->IsEmpty());
27-
EXPECT_EQ(Scheduler_->Dequeue(), "T2");
28-
EXPECT_TRUE(Scheduler_->IsEmpty());
24+
EXPECT_EQ(Scheduler_->TryDequeue(), "T1");
25+
EXPECT_EQ(Scheduler_->TryDequeue(), "T2");
26+
EXPECT_EQ(Scheduler_->TryDequeue(), std::nullopt);
2927
}
3028

3129
TEST_F(TFairSchedulerTest, Fairness1)
@@ -36,19 +34,15 @@ TEST_F(TFairSchedulerTest, Fairness1)
3634
Scheduler_->Enqueue("B1", "Bob");
3735
Scheduler_->Enqueue("B2", "Bob");
3836

39-
EXPECT_FALSE(Scheduler_->IsEmpty());
40-
EXPECT_EQ(Scheduler_->Dequeue(), "A1");
37+
EXPECT_EQ(Scheduler_->TryDequeue(), "A1");
4138
Scheduler_->ChargeUser("Alice", TDuration::Seconds(2));
42-
EXPECT_FALSE(Scheduler_->IsEmpty());
43-
EXPECT_EQ(Scheduler_->Dequeue(), "B1");
39+
EXPECT_EQ(Scheduler_->TryDequeue(), "B1");
4440
Scheduler_->ChargeUser("Bob", TDuration::Seconds(2));
45-
EXPECT_FALSE(Scheduler_->IsEmpty());
46-
EXPECT_EQ(Scheduler_->Dequeue(), "A2");
41+
EXPECT_EQ(Scheduler_->TryDequeue(), "A2");
4742
Scheduler_->ChargeUser("Alice", TDuration::Seconds(2));
48-
EXPECT_FALSE(Scheduler_->IsEmpty());
49-
EXPECT_EQ(Scheduler_->Dequeue(), "B2");
43+
EXPECT_EQ(Scheduler_->TryDequeue(), "B2");
5044
Scheduler_->ChargeUser("Bob", TDuration::Seconds(2));
51-
EXPECT_TRUE(Scheduler_->IsEmpty());
45+
EXPECT_EQ(Scheduler_->TryDequeue(), std::nullopt);
5246
}
5347

5448
TEST_F(TFairSchedulerTest, Fairness2)
@@ -59,16 +53,16 @@ TEST_F(TFairSchedulerTest, Fairness2)
5953
Scheduler_->Enqueue(Format("B%v", index), "Bob");
6054
}
6155

62-
EXPECT_EQ(Scheduler_->Dequeue(), "A1");
56+
EXPECT_EQ(Scheduler_->TryDequeue(), "A1");
6357
Scheduler_->ChargeUser("Alice", TDuration::Seconds(100500));
6458

6559
for (int index = 1; index <= 10; ++index) {
66-
EXPECT_EQ(Scheduler_->Dequeue(), Format("B%v", index));
60+
EXPECT_EQ(Scheduler_->TryDequeue(), Format("B%v", index));
6761
Scheduler_->ChargeUser("Bob", TDuration::Seconds(1));
6862
}
6963

7064
for (int index = 2; index <= 10; ++index) {
71-
EXPECT_EQ(Scheduler_->Dequeue(), Format("A%v", index));
65+
EXPECT_EQ(Scheduler_->TryDequeue(), Format("A%v", index));
7266
}
7367
}
7468

0 commit comments

Comments
 (0)