@@ -786,27 +786,34 @@ class TDqTaskRunner : public IDqTaskRunner {
786
786
}
787
787
788
788
if (Y_LIKELY (CollectBasic ())) {
789
+ auto now = TInstant::Now ();
789
790
switch (runStatus) {
790
791
case ERunStatus::Finished:
791
792
// finished => waiting for nothing
792
- Stats->CurrentWaitInputTime = TDuration ::Zero ();
793
- Stats->CurrentWaitOutputTime = TDuration ::Zero ();
794
- Stats->FinishTs = TInstant::Now () ;
793
+ Stats->CurrentWaitInputStartTime = TInstant ::Zero ();
794
+ Stats->CurrentWaitOutputStartTime = TInstant ::Zero ();
795
+ Stats->FinishTs = now ;
795
796
break ;
796
797
case ERunStatus::PendingInput:
797
798
// output is checked first => not waiting for output
798
- Stats->CurrentWaitOutputTime = TDuration ::Zero ();
799
+ Stats->CurrentWaitOutputStartTime = TInstant ::Zero ();
799
800
if (Y_LIKELY (InputConsumed)) {
800
801
// did smth => waiting for nothing
801
- Stats->CurrentWaitInputTime = TDuration ::Zero ();
802
+ Stats->CurrentWaitInputStartTime = TInstant ::Zero ();
802
803
} else {
803
804
StartWaitingInput ();
805
+ if (Y_LIKELY (!Stats->CurrentWaitInputStartTime )) {
806
+ Stats->CurrentWaitInputStartTime = now;
807
+ }
804
808
}
805
809
break ;
806
810
case ERunStatus::PendingOutput:
807
811
// waiting for output => not waiting for input
808
- Stats->CurrentWaitInputTime = TDuration ::Zero ();
812
+ Stats->CurrentWaitInputStartTime = TInstant ::Zero ();
809
813
StartWaitingOutput ();
814
+ if (Y_LIKELY (!Stats->CurrentWaitOutputStartTime )) {
815
+ Stats->CurrentWaitOutputStartTime = now;
816
+ }
810
817
break ;
811
818
}
812
819
}
@@ -1077,7 +1084,6 @@ class TDqTaskRunner : public IDqTaskRunner {
1077
1084
} else {
1078
1085
Stats->WaitStartTime += delta;
1079
1086
}
1080
- Stats->CurrentWaitInputTime += delta;
1081
1087
}
1082
1088
StartWaitInputTime = now;
1083
1089
}
@@ -1087,7 +1093,6 @@ class TDqTaskRunner : public IDqTaskRunner {
1087
1093
if (Y_LIKELY (StartWaitOutputTime)) {
1088
1094
auto delta = now - *StartWaitOutputTime;
1089
1095
Stats->WaitOutputTime += delta;
1090
- Stats->CurrentWaitOutputTime += delta;
1091
1096
}
1092
1097
StartWaitOutputTime = now;
1093
1098
}
@@ -1101,14 +1106,12 @@ class TDqTaskRunner : public IDqTaskRunner {
1101
1106
} else {
1102
1107
Stats->WaitStartTime += delta;
1103
1108
}
1104
- Stats->CurrentWaitInputTime += delta;
1105
1109
StartWaitInputTime.reset ();
1106
1110
TDuration::Zero ();
1107
1111
}
1108
1112
if (StartWaitOutputTime) {
1109
1113
auto delta = now - *StartWaitOutputTime;
1110
1114
Stats->WaitOutputTime += delta;
1111
- Stats->CurrentWaitOutputTime += delta;
1112
1115
StartWaitOutputTime.reset ();
1113
1116
}
1114
1117
}
0 commit comments