|
@@ -2024,9 +2024,8 @@ public:
|
|
distributor->disconnect(true);
|
|
distributor->disconnect(true);
|
|
distributor->join();
|
|
distributor->join();
|
|
}
|
|
}
|
|
- stopInput();
|
|
|
|
instrm.clear();
|
|
instrm.clear();
|
|
- dataLinkStop();
|
|
|
|
|
|
+ PARENT::stop();
|
|
}
|
|
}
|
|
virtual void kill() override
|
|
virtual void kill() override
|
|
{
|
|
{
|
|
@@ -2178,7 +2177,7 @@ public:
|
|
}
|
|
}
|
|
out->flush();
|
|
out->flush();
|
|
sz = out->getPosition();
|
|
sz = out->getPosition();
|
|
- activity->stop();
|
|
|
|
|
|
+ activity->stopInput(0);
|
|
}
|
|
}
|
|
ret.setown(createRowStream(tempfile, activity, rwFlags));
|
|
ret.setown(createRowStream(tempfile, activity, rwFlags));
|
|
}
|
|
}
|
|
@@ -2894,10 +2893,15 @@ public:
|
|
if (!inputstopped)
|
|
if (!inputstopped)
|
|
{
|
|
{
|
|
SpinBlock b(stopSpin);
|
|
SpinBlock b(stopSpin);
|
|
- PARENT::stop();
|
|
|
|
|
|
+ PARENT::stopInput(0);
|
|
inputstopped = true;
|
|
inputstopped = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ virtual void stop() override
|
|
|
|
+ {
|
|
|
|
+ stopInput();
|
|
|
|
+ PARENT::stop();
|
|
|
|
+ }
|
|
void kill()
|
|
void kill()
|
|
{
|
|
{
|
|
ActPrintLog("kill");
|
|
ActPrintLog("kill");
|
|
@@ -3435,11 +3439,6 @@ public:
|
|
: HashDedupSlaveActivityBase(container, true)
|
|
: HashDedupSlaveActivityBase(container, true)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
- void stop()
|
|
|
|
- {
|
|
|
|
- ActPrintLog("stopping");
|
|
|
|
- stopInput();
|
|
|
|
- }
|
|
|
|
void getMetaInfo(ThorDataLinkMetaInfo &info)
|
|
void getMetaInfo(ThorDataLinkMetaInfo &info)
|
|
{
|
|
{
|
|
initMetaInfo(info);
|
|
initMetaInfo(info);
|
|
@@ -3449,6 +3448,8 @@ public:
|
|
|
|
|
|
class GlobalHashDedupSlaveActivity : public HashDedupSlaveActivityBase, implements IStopInput
|
|
class GlobalHashDedupSlaveActivity : public HashDedupSlaveActivityBase, implements IStopInput
|
|
{
|
|
{
|
|
|
|
+ typedef HashDedupSlaveActivityBase PARENT;
|
|
|
|
+
|
|
mptag_t mptag;
|
|
mptag_t mptag;
|
|
CriticalSection stopsect;
|
|
CriticalSection stopsect;
|
|
IHashDistributor *distributor;
|
|
IHashDistributor *distributor;
|
|
@@ -3471,11 +3472,6 @@ public:
|
|
distributor->Release();
|
|
distributor->Release();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- void stopInput()
|
|
|
|
- {
|
|
|
|
- CriticalBlock block(stopsect); // can be called async by distribute
|
|
|
|
- HashDedupSlaveActivityBase::stopInput();
|
|
|
|
- }
|
|
|
|
virtual void init(MemoryBuffer &data, MemoryBuffer &slaveData)
|
|
virtual void init(MemoryBuffer &data, MemoryBuffer &slaveData)
|
|
{
|
|
{
|
|
HashDedupSlaveActivityBase::init(data, slaveData);
|
|
HashDedupSlaveActivityBase::init(data, slaveData);
|
|
@@ -3504,6 +3500,7 @@ public:
|
|
distributor->join();
|
|
distributor->join();
|
|
}
|
|
}
|
|
stopInput();
|
|
stopInput();
|
|
|
|
+ PARENT::stop();
|
|
}
|
|
}
|
|
virtual void abort()
|
|
virtual void abort()
|
|
{
|
|
{
|
|
@@ -3517,6 +3514,13 @@ public:
|
|
info.canStall = true;
|
|
info.canStall = true;
|
|
info.unknownRowsOutput = true;
|
|
info.unknownRowsOutput = true;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// IStopInput
|
|
|
|
+ virtual void stopInput() override
|
|
|
|
+ {
|
|
|
|
+ CriticalBlock block(stopsect); // can be called async by distribute
|
|
|
|
+ HashDedupSlaveActivityBase::stopInput();
|
|
|
|
+ }
|
|
};
|
|
};
|
|
|
|
|
|
//===========================================================================
|
|
//===========================================================================
|
|
@@ -3669,7 +3673,7 @@ public:
|
|
CriticalBlock b(joinHelperCrit);
|
|
CriticalBlock b(joinHelperCrit);
|
|
joinhelper.clear();
|
|
joinhelper.clear();
|
|
}
|
|
}
|
|
- dataLinkStop();
|
|
|
|
|
|
+ PARENT::stop();
|
|
}
|
|
}
|
|
void kill()
|
|
void kill()
|
|
{
|
|
{
|