瀏覽代碼

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)
                 {