@@ -126,16 +126,16 @@ void WaitEvent(TMyEnvBase& env, ui32 eventType, ui32 requiredCount = 1) {
126
126
env->DispatchEvents (options);
127
127
}
128
128
129
- void RestartAndClearCache (TMyEnvBase& env) {
129
+ void RestartAndClearCache (TMyEnvBase& env, ui64 memoryLimit = Max<ui64>() ) {
130
130
env.SendSync (new TEvents::TEvPoison, false , true );
131
131
env->Send (MakeSharedPageCacheId (), TActorId{}, new NMemory::TEvConsumerLimit (0_MB));
132
132
WaitEvent (env, NMemory::EvConsumerLimit);
133
- env->Send (MakeSharedPageCacheId (), TActorId{}, new NMemory::TEvConsumerLimit (8_MB ));
133
+ env->Send (MakeSharedPageCacheId (), TActorId{}, new NMemory::TEvConsumerLimit (memoryLimit ));
134
134
WaitEvent (env, NMemory::EvConsumerLimit);
135
135
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
136
136
}
137
137
138
- void SetupSharedCache (TMyEnvBase& env, NKikimrSharedCache::TReplacementPolicy policy = NKikimrSharedCache::ThreeLeveledLRU, ui64 limit = 8_MB) {
138
+ void SetupSharedCache (TMyEnvBase& env, NKikimrSharedCache::TReplacementPolicy policy = NKikimrSharedCache::ThreeLeveledLRU, ui64 limit = 8_MB, bool resetMemoryLimit = false ) {
139
139
auto request = MakeHolder<NConsole::TEvConsole::TEvConfigNotificationRequest>();
140
140
141
141
auto config = request->Record .MutableConfig ()->MutableSharedCacheConfig ();
@@ -144,6 +144,11 @@ void SetupSharedCache(TMyEnvBase& env, NKikimrSharedCache::TReplacementPolicy po
144
144
145
145
env->Send (MakeSharedPageCacheId (), TActorId{}, request.Release ());
146
146
WaitEvent (env, NConsole::TEvConsole::EvConfigNotificationRequest);
147
+
148
+ if (resetMemoryLimit) {
149
+ env->Send (MakeSharedPageCacheId (), TActorId{}, new NMemory::TEvConsumerLimit (Max<ui64>()));
150
+ WaitEvent (env, NMemory::EvConsumerLimit);
151
+ }
147
152
}
148
153
149
154
Y_UNIT_TEST (Limits) {
@@ -260,7 +265,7 @@ Y_UNIT_TEST(Limits_Config) {
260
265
261
266
SetupSharedCache (env, NKikimrSharedCache::ThreeLeveledLRU, 2_MB);
262
267
LogCounters (counters);
263
- UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB / 3 * 2 ), static_cast <i64 >(1_MB / 3 ));
268
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(2_MB ), static_cast <i64 >(1_MB / 3 ));
264
269
UNIT_ASSERT_VALUES_EQUAL (counters->ActiveLimitBytes ->Val (), 2_MB);
265
270
UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), passiveBytes);
266
271
UNIT_ASSERT_VALUES_EQUAL (counters->ConfigLimitBytes ->Val (), 2_MB);
@@ -275,7 +280,7 @@ Y_UNIT_TEST(Limits_Config) {
275
280
276
281
SetupSharedCache (env, NKikimrSharedCache::ThreeLeveledLRU, 0_MB);
277
282
LogCounters (counters);
278
- UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(1_MB ), static_cast <i64 >(1_MB / 3 ));
283
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(0_MB ), static_cast <i64 >(1_MB / 3 ));
279
284
UNIT_ASSERT_VALUES_EQUAL (counters->ActiveLimitBytes ->Val (), 0_MB);
280
285
UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), passiveBytes);
281
286
UNIT_ASSERT_VALUES_EQUAL (counters->ConfigLimitBytes ->Val (), 0_MB);
@@ -291,7 +296,9 @@ Y_UNIT_TEST(ThreeLeveledLRU) {
291
296
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
292
297
env.SendSync (new NFake::TEvExecute{ new TTxInitSchema () });
293
298
294
- SetupSharedCache (env);
299
+ // set shared cache limit greater than compacted data size
300
+ // to avoid becoming compacted data into passive data and being offloaded after it
301
+ SetupSharedCache (env, NKikimrSharedCache::ThreeLeveledLRU, 20_MB, true );
295
302
296
303
// write 100 rows, each ~100KB (~10MB)
297
304
for (i64 key = 0 ; key < 100 ; ++key) {
@@ -304,13 +311,22 @@ Y_UNIT_TEST(ThreeLeveledLRU) {
304
311
Cerr << " ...waiting until compacted" << Endl;
305
312
env.WaitFor <NFake::TEvCompacted>();
306
313
314
+ LogCounters (counters);
315
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB), static_cast <i64 >(1_MB / 3 ));
316
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), 0 );
317
+
318
+ SetupSharedCache (env, NKikimrSharedCache::ThreeLeveledLRU, 8_MB);
319
+ LogCounters (counters);
320
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
321
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), 0 );
322
+
307
323
TRetriedCounters retried;
308
324
for (i64 key = 99 ; key >= 0 ; --key) {
309
325
env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) });
310
326
}
311
327
LogCounters (counters);
312
328
UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
313
- UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 45 , 5 }));
329
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 20 , 3 , 1 }));
314
330
315
331
RestartAndClearCache (env);
316
332
@@ -392,7 +408,9 @@ Y_UNIT_TEST(S3FIFO) {
392
408
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
393
409
env.SendSync (new NFake::TEvExecute{ new TTxInitSchema () });
394
410
395
- SetupSharedCache (env, NKikimrSharedCache::S3FIFO);
411
+ // set shared cache limit greater than compacted data size
412
+ // to avoid becoming compacted data into passive data and being offloaded after it
413
+ SetupSharedCache (env, NKikimrSharedCache::S3FIFO, 20_MB, true );
396
414
397
415
// write 100 rows, each ~100KB (~10MB)
398
416
for (i64 key = 0 ; key < 100 ; ++key) {
@@ -405,6 +423,15 @@ Y_UNIT_TEST(S3FIFO) {
405
423
Cerr << " ...waiting until compacted" << Endl;
406
424
env.WaitFor <NFake::TEvCompacted>();
407
425
426
+ LogCounters (counters);
427
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB), static_cast <i64 >(1_MB / 3 ));
428
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), 0 );
429
+
430
+ SetupSharedCache (env, NKikimrSharedCache::S3FIFO, 8_MB);
431
+ LogCounters (counters);
432
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
433
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), 131 );
434
+
408
435
TRetriedCounters retried;
409
436
for (i64 key = 99 ; key >= 0 ; --key) {
410
437
env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) });
@@ -429,15 +456,15 @@ Y_UNIT_TEST(S3FIFO) {
429
456
}
430
457
LogCounters (counters);
431
458
UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
432
- UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 19 , 2 }));
459
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 20 , 3 }));
433
460
434
461
retried = {};
435
462
for (i64 key = 99 ; key >= 0 ; --key) {
436
463
env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) }, true );
437
464
}
438
465
LogCounters (counters);
439
466
UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
440
- UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 21 , 2 }));
467
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 23 , 2 }));
441
468
442
469
RestartAndClearCache (env);
443
470
@@ -493,7 +520,9 @@ Y_UNIT_TEST(ClockPro) {
493
520
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
494
521
env.SendSync (new NFake::TEvExecute{ new TTxInitSchema () });
495
522
496
- SetupSharedCache (env, NKikimrSharedCache::ClockPro);
523
+ // set shared cache limit greater than compacted data size
524
+ // to avoid becoming compacted data into passive data and being offloaded after it
525
+ SetupSharedCache (env, NKikimrSharedCache::ClockPro, 20_MB, true );
497
526
498
527
// write 100 rows, each ~100KB (~10MB)
499
528
for (i64 key = 0 ; key < 100 ; ++key) {
@@ -506,13 +535,22 @@ Y_UNIT_TEST(ClockPro) {
506
535
Cerr << " ...waiting until compacted" << Endl;
507
536
env.WaitFor <NFake::TEvCompacted>();
508
537
538
+ LogCounters (counters);
539
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB), static_cast <i64 >(1_MB / 3 ));
540
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), 0 );
541
+
542
+ SetupSharedCache (env, NKikimrSharedCache::ClockPro, 8_MB);
543
+ LogCounters (counters);
544
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
545
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassiveBytes ->Val (), 0 );
546
+
509
547
TRetriedCounters retried;
510
548
for (i64 key = 99 ; key >= 0 ; --key) {
511
549
env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) });
512
550
}
513
551
LogCounters (counters);
514
552
UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB), static_cast <i64 >(1_MB / 3 ));
515
- UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 20 , 2 }));
553
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 19 , 2 }));
516
554
517
555
RestartAndClearCache (env);
518
556
@@ -608,7 +646,7 @@ Y_UNIT_TEST(ReplacementPolicySwitch) {
608
646
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
609
647
env.SendSync (new NFake::TEvExecute{ new TTxInitSchema () });
610
648
611
- SetupSharedCache (env);
649
+ SetupSharedCache (env, NKikimrSharedCache::ThreeLeveledLRU );
612
650
613
651
// write 100 rows, each ~100KB (~10MB)
614
652
for (i64 key = 0 ; key < 100 ; ++key) {
@@ -650,7 +688,7 @@ Y_UNIT_TEST(ReplacementPolicySwitch) {
650
688
UNIT_ASSERT_VALUES_EQUAL (counters->ReplacementPolicySize (NKikimrSharedCache::ThreeLeveledLRU)->Val (), 0 );
651
689
}
652
690
653
- Y_UNIT_TEST (Compaction_BTreeIndex ) {
691
+ Y_UNIT_TEST (BigCache_BTreeIndex ) {
654
692
TMyEnvBase env;
655
693
env->SetLogPriority (NKikimrServices::TABLET_SAUSAGECACHE, NActors::NLog::PRI_TRACE);
656
694
env->SetLogPriority (NKikimrServices::TABLET_EXECUTOR, NActors::NLog::PRI_TRACE);
@@ -661,7 +699,7 @@ Y_UNIT_TEST(Compaction_BTreeIndex) {
661
699
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
662
700
env.SendSync (new NFake::TEvExecute{ new TTxInitSchema () });
663
701
664
- SetupSharedCache (env, NKikimrSharedCache::S3FIFO);
702
+ SetupSharedCache (env, NKikimrSharedCache::S3FIFO, 20_MB, true );
665
703
666
704
// write 100 rows, each ~100KB (~10MB)
667
705
for (i64 key = 0 ; key < 100 ; ++key) {
@@ -675,8 +713,8 @@ Y_UNIT_TEST(Compaction_BTreeIndex) {
675
713
env.WaitFor <NFake::TEvCompacted>();
676
714
677
715
LogCounters (counters);
678
- UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB ), static_cast <i64 >(1_MB / 3 ));
679
- UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 98 );
716
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB ), static_cast <i64 >(1_MB / 3 ));
717
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 118 );
680
718
UNIT_ASSERT_DOUBLES_EQUAL (counters->PassiveBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
681
719
UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 0 );
682
720
UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheHitBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
@@ -689,18 +727,29 @@ Y_UNIT_TEST(Compaction_BTreeIndex) {
689
727
env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) });
690
728
}
691
729
LogCounters (counters);
692
- UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 19 , 2 }));
693
- UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB ), static_cast <i64 >(1_MB / 3 ));
694
- UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 98 );
730
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 }));
731
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB ), static_cast <i64 >(1_MB / 3 ));
732
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 118 );
695
733
UNIT_ASSERT_DOUBLES_EQUAL (counters->PassiveBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
696
734
UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 0 );
697
735
UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheHitBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
698
736
UNIT_ASSERT_VALUES_EQUAL (counters->CacheHitPages ->Val (), 0 );
699
- UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheMissBytes ->Val (), static_cast <i64 >(2_MB), static_cast <i64 >(1_MB / 3 ));
700
- UNIT_ASSERT_VALUES_EQUAL (counters->CacheMissPages ->Val (), 21 );
737
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheMissBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
738
+ UNIT_ASSERT_VALUES_EQUAL (counters->CacheMissPages ->Val (), 0 );
739
+
740
+ RestartAndClearCache (env);
741
+ LogCounters (counters);
742
+ retried = {};
743
+ for (i64 key = 99 ; key >= 0 ; --key) {
744
+ env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) }, true );
745
+ }
746
+ LogCounters (counters);
747
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 100 , 14 , 2 }));
748
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 118 );
749
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 0 );
701
750
}
702
751
703
- Y_UNIT_TEST (Compaction_FlatIndex ) {
752
+ Y_UNIT_TEST (BigCache_FlatIndex ) {
704
753
TMyEnvBase env;
705
754
env->SetLogPriority (NKikimrServices::TABLET_SAUSAGECACHE, NActors::NLog::PRI_TRACE);
706
755
env->SetLogPriority (NKikimrServices::TABLET_EXECUTOR, NActors::NLog::PRI_TRACE);
@@ -711,7 +760,7 @@ Y_UNIT_TEST(Compaction_FlatIndex) {
711
760
env.FireDummyTablet (ui32 (NFake::TDummy::EFlg::Comp));
712
761
env.SendSync (new NFake::TEvExecute{ new TTxInitSchema () });
713
762
714
- SetupSharedCache (env, NKikimrSharedCache::S3FIFO);
763
+ SetupSharedCache (env, NKikimrSharedCache::S3FIFO, 20_MB, true );
715
764
716
765
// write 100 rows, each ~100KB (~10MB)
717
766
for (i64 key = 0 ; key < 100 ; ++key) {
@@ -725,8 +774,8 @@ Y_UNIT_TEST(Compaction_FlatIndex) {
725
774
env.WaitFor <NFake::TEvCompacted>();
726
775
727
776
LogCounters (counters);
728
- UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB ), static_cast <i64 >(1_MB / 3 ));
729
- UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 83 );
777
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB ), static_cast <i64 >(1_MB / 3 ));
778
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 102 );
730
779
UNIT_ASSERT_DOUBLES_EQUAL (counters->PassiveBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
731
780
UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 0 );
732
781
UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheHitBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
@@ -739,18 +788,29 @@ Y_UNIT_TEST(Compaction_FlatIndex) {
739
788
env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) });
740
789
}
741
790
LogCounters (counters);
742
- UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 19 }));
743
- UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(8_MB ), static_cast <i64 >(1_MB / 3 ));
744
- UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 83 );
791
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 }));
792
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->ActiveBytes ->Val (), static_cast <i64 >(10_MB ), static_cast <i64 >(1_MB / 3 ));
793
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 102 );
745
794
UNIT_ASSERT_DOUBLES_EQUAL (counters->PassiveBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
746
795
UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 0 );
747
796
UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheHitBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
748
797
UNIT_ASSERT_VALUES_EQUAL (counters->CacheHitPages ->Val (), 0 );
749
- UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheMissBytes ->Val (), static_cast <i64 >(2_MB), static_cast <i64 >(1_MB / 3 ));
750
- UNIT_ASSERT_VALUES_EQUAL (counters->CacheMissPages ->Val (), 19 );
798
+ UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheMissBytes ->Val (), static_cast <i64 >(0_MB), static_cast <i64 >(1_MB / 3 ));
799
+ UNIT_ASSERT_VALUES_EQUAL (counters->CacheMissPages ->Val (), 0 );
800
+
801
+ RestartAndClearCache (env);
802
+ LogCounters (counters);
803
+ retried = {};
804
+ for (i64 key = 99 ; key >= 0 ; --key) {
805
+ env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) }, true );
806
+ }
807
+ LogCounters (counters);
808
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 100 }));
809
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 102 );
810
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 0 );
751
811
}
752
812
753
- Y_UNIT_TEST (Compaction_ZeroCache_BTreeIndex ) {
813
+ Y_UNIT_TEST (ZeroCache_BTreeIndex ) {
754
814
TMyEnvBase env;
755
815
env->SetLogPriority (NKikimrServices::TABLET_SAUSAGECACHE, NActors::NLog::PRI_TRACE);
756
816
env->SetLogPriority (NKikimrServices::TABLET_EXECUTOR, NActors::NLog::PRI_TRACE);
@@ -798,9 +858,20 @@ Y_UNIT_TEST(Compaction_ZeroCache_BTreeIndex) {
798
858
UNIT_ASSERT_VALUES_EQUAL (counters->CacheHitPages ->Val (), 0 );
799
859
UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheMissBytes ->Val (), static_cast <i64 >(10_MB), static_cast <i64 >(1_MB / 3 ));
800
860
UNIT_ASSERT_VALUES_EQUAL (counters->CacheMissPages ->Val (), 400 );
861
+
862
+ RestartAndClearCache (env);
863
+ LogCounters (counters);
864
+ retried = {};
865
+ for (i64 key = 99 ; key >= 0 ; --key) {
866
+ env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) }, true );
867
+ }
868
+ LogCounters (counters);
869
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 100 , 100 , 100 , 100 }));
870
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 0 );
871
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 1 );
801
872
}
802
873
803
- Y_UNIT_TEST (Compaction_ZeroCache_FlatIndex ) {
874
+ Y_UNIT_TEST (ZeroCache_FlatIndex ) {
804
875
TMyEnvBase env;
805
876
env->SetLogPriority (NKikimrServices::TABLET_SAUSAGECACHE, NActors::NLog::PRI_TRACE);
806
877
env->SetLogPriority (NKikimrServices::TABLET_EXECUTOR, NActors::NLog::PRI_TRACE);
@@ -848,6 +919,17 @@ Y_UNIT_TEST(Compaction_ZeroCache_FlatIndex) {
848
919
UNIT_ASSERT_VALUES_EQUAL (counters->CacheHitPages ->Val (), 0 );
849
920
UNIT_ASSERT_DOUBLES_EQUAL (counters->CacheMissBytes ->Val (), static_cast <i64 >(10_MB), static_cast <i64 >(1_MB / 3 ));
850
921
UNIT_ASSERT_VALUES_EQUAL (counters->CacheMissPages ->Val (), 100 );
922
+
923
+ RestartAndClearCache (env);
924
+ LogCounters (counters);
925
+ retried = {};
926
+ for (i64 key = 99 ; key >= 0 ; --key) {
927
+ env.SendSync (new NFake::TEvExecute{ new TTxReadRow (key, retried) }, true );
928
+ }
929
+ LogCounters (counters);
930
+ UNIT_ASSERT_VALUES_EQUAL (retried, (TVector<ui32>{100 , 100 }));
931
+ UNIT_ASSERT_VALUES_EQUAL (counters->ActivePages ->Val (), 0 );
932
+ UNIT_ASSERT_VALUES_EQUAL (counters->PassivePages ->Val (), 2 );
851
933
}
852
934
853
935
}
0 commit comments