@@ -883,9 +883,31 @@ void TStatisticsAggregator::ResetTraversalState(NIceDb::TNiceDb& db) {
883
883
TraversalRound = 0 ;
884
884
}
885
885
886
- template <typename T, typename S>
887
- void PrintContainerStart (const T& container, size_t count, TStringStream& str,
888
- std::function<S(const typename T::value_type&)> extractor)
886
+ TString TStatisticsAggregator::GetNavigateTypeString () const {
887
+ switch (NavigateType) {
888
+ case Analyze:
889
+ return " Analyze" ;
890
+ case Traversal:
891
+ return " Traversal" ;
892
+ }
893
+ }
894
+
895
+ TString TStatisticsAggregator::TForceTraversalTable::GetStatusString () const {
896
+ switch (Status) {
897
+ case EStatus::None:
898
+ return " None" ;
899
+ case EStatus::AnalyzeStarted:
900
+ return " AnalyzeStarted" ;
901
+ case EStatus::AnalyzeFinished:
902
+ return " AnalyzeFinished" ;
903
+ case EStatus::TraversalStarted:
904
+ return " TraversalStarted" ;
905
+ case EStatus::TraversalFinished:
906
+ return " TraversalFinished" ;
907
+ }
908
+ }
909
+
910
+ void PrintContainerStart (const auto & container, size_t count, TStringStream& str, auto extractor)
889
911
{
890
912
if (container.empty ()) {
891
913
return ;
@@ -922,49 +944,46 @@ bool TStatisticsAggregator::OnRenderAppHtmlPage(NMon::TEvRemoteHttpInfo::TPtr ev
922
944
str << " BaseStatistics: " << BaseStatistics.size () << Endl;
923
945
str << " SchemeShards: " << SchemeShards.size () << Endl;
924
946
{
925
- std::function<TSSId (const std::pair<const TSSId, size_t >&)> extr =
926
- [](const auto & x) { return x.first ; };
947
+ auto extr = [](const auto & x) { return x.first ; };
927
948
PrintContainerStart (SchemeShards, 4 , str, extr);
928
949
}
929
950
str << " Nodes: " << Nodes.size () << Endl;
930
951
{
931
- std::function<TNodeId (const std::pair<const TNodeId, size_t >&)> extr =
932
- [](const auto & x) { return x.first ; };
952
+ auto extr = [](const auto & x) { return x.first ; };
933
953
PrintContainerStart (Nodes, 8 , str, extr);
934
954
}
935
955
str << " RequestedSchemeShards: " << RequestedSchemeShards.size () << Endl;
936
956
{
937
- std::function< TSSId ( const TSSId&)> extr = [](const auto & x) { return x; };
957
+ auto extr = [](const auto & x) { return x; };
938
958
PrintContainerStart (RequestedSchemeShards, 4 , str, extr);
939
959
}
940
960
str << " FastCounter: " << FastCounter << Endl;
941
961
str << " FastCheckInFlight: " << FastCheckInFlight << Endl;
942
962
str << " FastSchemeShards: " << FastSchemeShards.size () << Endl;
943
963
{
944
- std::function< TSSId ( const TSSId&)> extr = [](const auto & x) { return x; };
964
+ auto extr = [](const auto & x) { return x; };
945
965
PrintContainerStart (FastSchemeShards, 4 , str, extr);
946
966
}
947
967
str << " FastNodes: " << FastNodes.size () << Endl;
948
968
{
949
- std::function< TNodeId ( const TNodeId&)> extr = [](const auto & x) { return x; };
969
+ auto extr = [](const auto & x) { return x; };
950
970
PrintContainerStart (FastNodes, 8 , str, extr);
951
971
}
952
972
str << " PropagationInFlight: " << PropagationInFlight << Endl;
953
973
str << " PropagationSchemeShards: " << PropagationSchemeShards.size () << Endl;
954
974
{
955
- std::function< TSSId ( const TSSId&)> extr = [](const auto & x) { return x; };
975
+ auto extr = [](const auto & x) { return x; };
956
976
PrintContainerStart (PropagationSchemeShards, 4 , str, extr);
957
977
}
958
978
str << " PropagationNodes: " << PropagationNodes.size () << Endl;
959
979
{
960
- std::function< TNodeId ( const TNodeId&)> extr = [](const auto & x) { return x; };
980
+ auto extr = [](const auto & x) { return x; };
961
981
PrintContainerStart (FastNodes, 8 , str, extr);
962
982
}
963
983
str << " LastSSIndex: " << LastSSIndex << Endl;
964
984
str << " PendingRequests: " << PendingRequests.size () << Endl;
965
985
str << " ProcessUrgentInFlight: " << ProcessUrgentInFlight << Endl << Endl;
966
986
967
- str << " TraversalPathId: " << TraversalPathId << Endl;
968
987
str << " Columns: " << Columns.size () << Endl;
969
988
str << " DatashardRanges: " << DatashardRanges.size () << Endl;
970
989
str << " CountMinSketches: " << CountMinSketches.size () << Endl << Endl;
@@ -973,16 +992,54 @@ bool TStatisticsAggregator::OnRenderAppHtmlPage(NMon::TEvRemoteHttpInfo::TPtr ev
973
992
if (!ScheduleTraversalsByTime.Empty ()) {
974
993
auto * oldestTable = ScheduleTraversalsByTime.Top ();
975
994
str << " oldest table: " << oldestTable->PathId
976
- << " , ordest table update time: " << oldestTable->LastUpdateTime << Endl;
995
+ << " , update time: " << oldestTable->LastUpdateTime . ToStringUpToSeconds () << Endl;
977
996
}
978
997
str << " ScheduleTraversalsBySchemeShard: " << ScheduleTraversalsBySchemeShard.size () << Endl;
979
998
if (!ScheduleTraversalsBySchemeShard.empty ()) {
980
999
str << " " << ScheduleTraversalsBySchemeShard.begin ()->first << Endl;
981
- std::function< TPathId ( const TPathId&)> extr = [](const auto & x) { return x; };
1000
+ auto extr = [](const auto & x) { return x; };
982
1001
PrintContainerStart (ScheduleTraversalsBySchemeShard.begin ()->second , 2 , str, extr);
983
1002
}
984
- str << " TraversalStartTime: " << TraversalStartTime << Endl;
1003
+ str << " ForceTraversals: " << ForceTraversals.size () << Endl;
1004
+ if (!ForceTraversals.empty ()) {
1005
+ auto extr = [](const auto & x) { return x.CreatedAt .ToStringUpToSeconds (); };
1006
+ PrintContainerStart (ForceTraversals, 2 , str, extr);
1007
+ }
1008
+
1009
+ str << Endl;
1010
+ str << " NavigateType: " << GetNavigateTypeString () << Endl;
1011
+ str << " NavigateAnalyzeOperationId: " << NavigateAnalyzeOperationId << Endl;
1012
+ str << " NavigatePathId: " << NavigatePathId << Endl;
1013
+
1014
+ str << Endl;
1015
+ str << " ForceTraversalOperationId: " << ForceTraversalOperationId << Endl;
1016
+ if (ForceTraversalOperationId) {
1017
+ auto forceTraversal = CurrentForceTraversalOperation ();
1018
+ str << " CreatedAt: " << forceTraversal->CreatedAt << Endl;
1019
+ str << " , ReplyToActorId: " << forceTraversal->ReplyToActorId << Endl;
1020
+ str << " , Types: " << forceTraversal->Types << Endl;
1021
+ str << " , Tables size: " << forceTraversal->Tables .size () << Endl;
1022
+ str << " , Tables: " << Endl;
1023
+
1024
+ for (size_t i = 0 ; i < forceTraversal->Tables .size (); ++i) {
1025
+ const TForceTraversalTable& table = forceTraversal->Tables [i];
1026
+ str << " Table[" << i << " ] PathId: " << table.PathId << Endl;
1027
+ str << " Status: " << table.GetStatusString () << Endl;
1028
+ str << " AnalyzedShards size: " << table.AnalyzedShards .size () << Endl;
1029
+ str << " ColumnTags: " << table.ColumnTags << Endl;
1030
+ }
1031
+ }
1032
+
1033
+ str << Endl;
1034
+ str << " TraversalStartTime: " << TraversalStartTime.ToStringUpToSeconds () << Endl;
1035
+ str << " TraversalPathId: " << TraversalPathId << Endl;
1036
+ str << " TraversalIsColumnTable: " << TraversalIsColumnTable << Endl;
1037
+ str << " TraversalStartKey: " << TraversalStartKey.GetBuffer () << Endl;
985
1038
1039
+ str << Endl;
1040
+ str << " GlobalTraversalRound: " << GlobalTraversalRound << Endl;
1041
+ str << " TraversalRound: " << TraversalRound << Endl;
1042
+ str << " HiveRequestRound: " << HiveRequestRound << Endl;
986
1043
}
987
1044
}
988
1045
0 commit comments