浏览代码

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