소스 검색

HPCC-11477 Activities are being reset excessively

An activity with two outputs (typically a splitter) can be reset on one arm,
then (because of the stopSink issue where resets occur without stops), can be
stopped then reset on the other. The stop() causes the state no longer to be
reset, so the reset of the upstream activity tree is repeated.

When splitters are inputs to other splitters this can result in an exponential
explosion of calls to reset.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 년 전
부모
커밋
65b0024d15
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      roxie/ccd/ccdserver.cpp

+ 2 - 1
roxie/ccd/ccdserver.cpp

@@ -1235,7 +1235,8 @@ public:
             CriticalBlock cb(statecrit);
             if (state != STATEstopped)
             {
-                state=STATEstopped;
+                if (state != STATEreset)
+                    state=STATEstopped;
 #ifdef TRACE_STARTSTOP
                 if (traceStartStop)
                 {