HPCC-9572 - Fix hash dedup row leak after spill event

When hash dedup spills, it continues to use the bucket hash tables
for dedupping purposes. The memory manager callback to flush
the HT was not protected by a mutex, which meant the reset could
overlap with another thread adding new rows, causing the flush to
in effect lose those newly added rows.

Also, close all bucket spill streams at end of phase (instead of
waiting for each new level to start). Minor significance, but the
output streams will have some buffered rows, and it is better to
close and flush those out upfront, rather than leave them in memory
whilst the other phases are being handled.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Merge pull request #4568 from jakesmith/hpcc-9572

HPCC-9572 - Fix hash dedup row leak after spill event

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
HPCC-9628 Eclcc hangs at end if libarchive dynamically unloaded

In my tests setup, I have the libs directory on my plugins path, meaning that
eclcc will try to load libarchive as a plugin, then unload it when it finds it
is not.

This means that MODEXIT gets called before removeFileHook (due to bugs in the
modexit logic - it should really only be called on the last unload, not on any
unload).

Protect against that event by setting lock ptr to NULL.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-9626 - Clear up various issues spotted by valgrind

A few minor leaks and new/free mismatches

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
HPCC-9633 - Watchdog crash if collects after shutdown

If the watchdog happens to be about to collect progress/stats
when thor is shutting down, it could crash. Check if stopping
after sleep and quit before collecting

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
HPCC-9634 Uninitialized members of ThorDataLinkMetaInfo

If a splitter has a null input (because pruned) the null input
implementation had uninitialized ThorDataLinkMetaInfo members.
I don't think any were of consequence, the critical members
totalRowsMin/Max were initialized.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
HPCC-9635 - Ensure LIMIT rowLimit member is initialized

rowLimit was not initialized until start()
getMetaInfo can be called before start, which would have
led to the wrong totalRowsMax being set

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
HPCC-9636 OUTPUT(module) not outputting DICTIONARY attributes

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #4608 from jakesmith/hpcc-9635

HPCC-9635 - Ensure LIMIT rowLimit member is initialized

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #4606 from jakesmith/hpcc-9633

HPCC-9633 - Watchdog crash if collects after shutdown

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
HPCC-9637 - Uninitialized ENTH counter

The ENTH 'counter' could be left uninitialized by
setInitialCounter, if the numerator was 0
Only side-effect was spurious tracing.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Merge pull request #4610 from jakesmith/hpcc-9637

HPCC-9637 - Uninitialized ENTH counter

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #4607 from jakesmith/hpcc-9634

HPCC-9634 Uninitialized members of ThorDataLinkMetaInfo

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #4609 from richardkchapman/output-module-dictionary

HPCC-9636 OUTPUT(module) not outputting DICTIONARY attributes

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
HPCC-9638 Filter "Clear" does not reset some drop down controls

Fixed TargetSelectWidget to detect "null".
Re-factored Select controls into TargetSelectWidget.

Fixes HPCC-9638

Signed-off-by: Gordon Smith <gordon.smith@lexisnexis.com>
HPCC-9621 IE8 + XP ECL Watch Issues

New ECL Watch does not display in IE 8 + XP.

Fixes HPCC-9621

Signed-off-by: Gordon Smith <gordon.smith@lexisnexis.com>
Merge pull request #4611 from GordonSmith/HPCC-9638

HPCC-9638 Filter "Clear" does not reset some drop down controls

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
HPCC-9631 - KeyedJoin may miss cached IKeyIndex's

Due to an uninitialized 'crc' variable, that the key index cache
uses to form a key for caching IKeyIndex's. KeyedJoin would
probably have been missing cache hits and consequently, creating
extra IKeyIndex's unecessarily

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Merge branch 'hpcc-9631' into candidate-4.0.0

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-9632 - Uninitialized lastCycles

'lastCycles' was left uninitialized until sink processes started
If the progress serialization requested timings before the sink
had started, totalMaxMs/totalMinMs timinigs would be wrong

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>