@@ -388,13 +388,13 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
388
388
}
389
389
390
390
void ProcessOutputsImpl (ERunStatus status) {
391
- ProcessOutputsState.LastRunStatus = status;
392
-
393
391
CA_LOG_T (" ProcessOutputsState.Inflight: " << ProcessOutputsState.Inflight );
394
392
if (ProcessOutputsState.Inflight == 0 ) {
395
393
ProcessOutputsState = TProcessOutputsState ();
396
394
}
397
395
396
+ ProcessOutputsState.LastRunStatus = status;
397
+
398
398
for (auto & entry : OutputChannelsMap) {
399
399
const ui64 channelId = entry.first ;
400
400
TOutputChannelInfo& outputChannel = entry.second ;
@@ -459,7 +459,7 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
459
459
return ;
460
460
}
461
461
462
- if (status != ERunStatus::Finished ) {
462
+ if (status == ERunStatus::PendingInput ) {
463
463
for (auto & [id, inputTransform] : InputTransformsMap) {
464
464
if (!inputTransform.Buffer ->Empty ()) {
465
465
ContinueExecute (EResumeSource::CAPendingInput);
@@ -1462,7 +1462,7 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
1462
1462
}
1463
1463
}
1464
1464
1465
- void PollAsyncInput () {
1465
+ void PollAsyncInput (bool continueExecuteOnFull = true ) {
1466
1466
if (!Running) {
1467
1467
CA_LOG_T (" Skip polling inputs and sources because not running" );
1468
1468
return ;
@@ -1471,7 +1471,9 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
1471
1471
CA_LOG_T (" Poll inputs" );
1472
1472
for (auto & [inputIndex, transform] : InputTransformsMap) {
1473
1473
if (auto resume = transform.PollAsyncInput (MetricsReporter, WatermarksTracker, RuntimeSettings.AsyncInputPushLimit )) {
1474
- ContinueExecute (*resume);
1474
+ if (*resume != EResumeSource::CAPollAsyncNoSpace || continueExecuteOnFull) {
1475
+ ContinueExecute (*resume);
1476
+ }
1475
1477
}
1476
1478
}
1477
1479
@@ -1484,7 +1486,9 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
1484
1486
CA_LOG_T (" Poll sources" );
1485
1487
for (auto & [inputIndex, source] : SourcesMap) {
1486
1488
if (auto resume = source.PollAsyncInput (MetricsReporter, WatermarksTracker, RuntimeSettings.AsyncInputPushLimit )) {
1487
- ContinueExecute (*resume);
1489
+ if (*resume != EResumeSource::CAPollAsyncNoSpace || continueExecuteOnFull) {
1490
+ ContinueExecute (*resume);
1491
+ }
1488
1492
}
1489
1493
}
1490
1494
}
@@ -2051,6 +2055,7 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
2051
2055
bool AllOutputsFinished = true ;
2052
2056
ERunStatus LastRunStatus = ERunStatus::PendingInput;
2053
2057
bool LastPopReturnedNoData = false ;
2058
+ bool IsFull = false ;
2054
2059
};
2055
2060
TProcessOutputsState ProcessOutputsState;
2056
2061
0 commit comments