Skip to content

Commit 51db27a

Browse files
committed
cr fixes
1 parent bcdc4fb commit 51db27a

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

ydb/core/tablet_flat/shared_cache_switchable.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ class TSwitchableCache : public ICacheCache<TPage> {
8181

8282
public:
8383
const ui32 Id; // in [1 .. MaxCachesCount] range
84+
8485
private:
8586
const THolder<ICacheCache<TPage>> Cache;
8687
const TCounterPtr SizeCounter;
@@ -129,12 +130,18 @@ class TSwitchableCache : public ICacheCache<TPage> {
129130
return Caches.back().Touch(page);
130131
}
131132

132-
TIntrusiveList<TPage> evictedList = GetCache(TPageTraits::GetCacheId(page)).Touch(page);
133+
ui32 cacheId = TPageTraits::GetCacheId(page);
134+
if (cacheId > 0 && cacheId != Caches.back().Id) {
135+
// rotate the current page first:
136+
GetCache(cacheId).Erase(page);
137+
}
138+
139+
TIntrusiveList<TPage> evictedList = Caches.back().Touch(page);
133140

134141
RotatePages(evictedList);
135142

136143
while (GetSize() > Limit && Caches.size() > 1) {
137-
Append(evictedList, EvictNext());
144+
evictedList.Append(EvictNext());
138145
}
139146

140147
return evictedList;
@@ -210,21 +217,14 @@ class TSwitchableCache : public ICacheCache<TPage> {
210217

211218
// touch each page multiple times to make it warm
212219
for (ui32 touchTimes = 0; touchTimes < 3; touchTimes++) {
213-
Append(evictedList, Caches.back().Touch(page));
220+
evictedList.Append(Caches.back().Touch(page));
214221
}
215222

216223
rotatedPagesCount++;
217224
}
218225
}
219226
}
220227

221-
void Append(TIntrusiveList<TPage>& left, TIntrusiveList<TPage>&& right) {
222-
while (!right.Empty()) {
223-
TPage* page = right.PopFront();
224-
left.PushBack(page);
225-
}
226-
}
227-
228228
private:
229229
ui64 Limit;
230230
TDeque<TCacheHolder> Caches;

ydb/core/tablet_flat/shared_cache_switchable_ut.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,13 +431,13 @@ Y_UNIT_TEST_SUITE(TSwitchableCache) {
431431

432432
Touch(cache, *pages[23]);
433433
UNIT_ASSERT_VALUES_EQUAL(cache.GetSize(), 50);
434-
UNIT_ASSERT_VALUES_EQUAL(counter1->Val(), 29);
435-
UNIT_ASSERT_VALUES_EQUAL(counter2->Val(), 21);
434+
UNIT_ASSERT_VALUES_EQUAL(counter1->Val(), 28);
435+
UNIT_ASSERT_VALUES_EQUAL(counter2->Val(), 22);
436436

437437
Touch(cache, *pages[7]);
438438
UNIT_ASSERT_VALUES_EQUAL(cache.GetSize(), 50);
439-
UNIT_ASSERT_VALUES_EQUAL(counter1->Val(), 19);
440-
UNIT_ASSERT_VALUES_EQUAL(counter2->Val(), 31);
439+
UNIT_ASSERT_VALUES_EQUAL(counter1->Val(), 18);
440+
UNIT_ASSERT_VALUES_EQUAL(counter2->Val(), 32);
441441
}
442442

443443
Y_UNIT_TEST(Switch_Erase) {
@@ -527,8 +527,8 @@ Y_UNIT_TEST_SUITE(TSwitchableCache) {
527527
cache.UpdateLimit(40);
528528
UNIT_ASSERT_VALUES_EQUAL(Touch(cache, *pages[23]), (TVector<ui32>{21, 22, 24, 25, 26, 27, 28, 29, 30, 31}));
529529
UNIT_ASSERT_VALUES_EQUAL(cache.GetSize(), 40);
530-
UNIT_ASSERT_VALUES_EQUAL(counter1->Val(), 19); // [32 .. 39, 23]
531-
UNIT_ASSERT_VALUES_EQUAL(counter2->Val(), 21); // [50, 0 .. 20]
530+
UNIT_ASSERT_VALUES_EQUAL(counter1->Val(), 18); // [32 .. 49]
531+
UNIT_ASSERT_VALUES_EQUAL(counter2->Val(), 22); // [50, 0 .. 9, 23, 11 .. 20]
532532

533533
cache.UpdateLimit(7);
534534
UNIT_ASSERT_VALUES_EQUAL(Touch(cache, *pages[7]).size(), 33);

0 commit comments

Comments
 (0)