浏览代码

Merge branch 'candidate-7.12.x'

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 4 年之前
父节点
当前提交
fddb263b0e

+ 19 - 0
.github/workflows/test-eclhelper.yml

@@ -0,0 +1,19 @@
+name: Check that eclhelper interface has not changed
+
+on:
+  pull_request:
+    branches:
+      - "master"
+      - "candidate-*"
+
+jobs:
+  build:
+    name: "Check eclhelper interface"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 2
+      - name: Check eclhelper
+        run: git diff HEAD^ --exit-code -- rtl/include/eclhelper.hpp

+ 0 - 1
common/thorhelper/thorcommon.hpp

@@ -29,7 +29,6 @@
 #include "thorhelper.hpp"
 #include "thorhelper.hpp"
 #include "thorxmlwrite.hpp"
 #include "thorxmlwrite.hpp"
 
 
-static unsigned const defaultDaliResultOutputMax = 2000; // MB
 static unsigned const defaultDaliResultLimit = 10; // MB
 static unsigned const defaultDaliResultLimit = 10; // MB
 static unsigned const defaultMaxCsvRowSize = 10; // MB
 static unsigned const defaultMaxCsvRowSize = 10; // MB
 
 

+ 0 - 13
docs/EN_US/HPCCClientTools/CT_Mods/CT_Overview.xml

@@ -143,19 +143,6 @@
 
 
       <para>An RPM installation package is provided. <programlisting>sudo yum install &lt;rpm file name&gt;</programlisting></para>
       <para>An RPM installation package is provided. <programlisting>sudo yum install &lt;rpm file name&gt;</programlisting></para>
 
 
-      <para><variablelist>
-          <varlistentry>
-            <term>Note:</term>
-
-            <listitem>
-              <para>If you are using CentOS 6 you may need to run the
-              following command to properly enable the installation.</para>
-            </listitem>
-          </varlistentry>
-        </variablelist></para>
-
-      <para><programlisting>sudo wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo</programlisting></para>
-
       <para><emphasis role="bold">Debian-Based Systems
       <para><emphasis role="bold">Debian-Based Systems
       (Ubuntu):</emphasis></para>
       (Ubuntu):</emphasis></para>
 
 

+ 0 - 5
docs/EN_US/HPCCClientTools/CT_Mods/CT_Overview_withoutIDE.xml

@@ -128,11 +128,6 @@
       switch, the U or upgrade will perform an upgrade if a previous version
       switch, the U or upgrade will perform an upgrade if a previous version
       is already installed. <programlisting>sudo rpm -Uvh &lt;rpm file name&gt;</programlisting></para>
       is already installed. <programlisting>sudo rpm -Uvh &lt;rpm file name&gt;</programlisting></para>
 
 
-      <para>If you are using CentOS 6 you may need to run the following
-      command to properly enable the installation.</para>
-
-      <para><programlisting>sudo wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo</programlisting></para>
-
       <para><emphasis role="bold">Debian-Based Systems
       <para><emphasis role="bold">Debian-Based Systems
       (Ubuntu):</emphasis></para>
       (Ubuntu):</emphasis></para>
 
 

+ 82 - 78
docs/EN_US/HPCCMonitoring/HPCCMonitoringAndReporting.xml

@@ -3,7 +3,8 @@
 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
 <book lang="en_US" xml:base="../">
 <book lang="en_US" xml:base="../">
   <bookinfo>
   <bookinfo>
-    <title>HPCC Systems<superscript>®</superscript> Monitoring and Reporting (Technical Preview)</title>
+    <title>HPCC Systems<superscript>®</superscript> Monitoring and Reporting
+    (Technical Preview)</title>
 
 
     <mediaobject>
     <mediaobject>
       <imageobject>
       <imageobject>
@@ -69,9 +70,9 @@
 
 
     <para><emphasis role="bold">Ganglia:</emphasis></para>
     <para><emphasis role="bold">Ganglia:</emphasis></para>
 
 
-    <para>The HPCC Systems monitoring component leverages Ganglia, an open source,
-    scalable, distributed monitoring system to display system information in a
-    graphical manner.</para>
+    <para>The HPCC Systems monitoring component leverages Ganglia, an open
+    source, scalable, distributed monitoring system to display system
+    information in a graphical manner.</para>
 
 
     <para>With the the graphical monitoring component you can: <itemizedlist>
     <para>With the the graphical monitoring component you can: <itemizedlist>
         <listitem>
         <listitem>
@@ -106,13 +107,13 @@
 
 
     <para><emphasis role="bold">Nagios</emphasis></para>
     <para><emphasis role="bold">Nagios</emphasis></para>
 
 
-    <para>The HPCC Systems reporting and alerting component leverages Nagios, a
-    powerful monitoring and notification system, which can help you identify
+    <para>The HPCC Systems reporting and alerting component leverages Nagios,
+    a powerful monitoring and notification system, which can help you identify
     and resolve infrastructure problems before they affect critical
     and resolve infrastructure problems before they affect critical
     processes.</para>
     processes.</para>
 
 
-    <para>With the HPCC Systems reporting and alerting component you can set up alerts
-    to inform of any changes to:</para>
+    <para>With the HPCC Systems reporting and alerting component you can set
+    up alerts to inform of any changes to:</para>
 
 
     <para><itemizedlist>
     <para><itemizedlist>
         <listitem>
         <listitem>
@@ -156,13 +157,13 @@
   <chapter id="Ganglya_Overview">
   <chapter id="Ganglya_Overview">
     <title>Ganglia</title>
     <title>Ganglia</title>
 
 
-    <para>The HPCC Systems monitoring component leverages Ganglia, an open source,
-    scalable, distributed monitoring system, to produce a graphical view of a
-    Roxie cluster's servers. Ganglia leverages widely accepted technologies
-    for data representation. It provides near real-time monitoring and
-    visualizations for performance metrics. If your enterprise already has a
-    Ganglia monitoring server, you can easily add Roxie clusters to its
-    monitoring.</para>
+    <para>The HPCC Systems monitoring component leverages Ganglia, an open
+    source, scalable, distributed monitoring system, to produce a graphical
+    view of a Roxie cluster's servers. Ganglia leverages widely accepted
+    technologies for data representation. It provides near real-time
+    monitoring and visualizations for performance metrics. If your enterprise
+    already has a Ganglia monitoring server, you can easily add Roxie clusters
+    to its monitoring.</para>
 
 
     <sect1 id="Ganglia_Overview">
     <sect1 id="Ganglia_Overview">
       <title>Ganglia Overview</title>
       <title>Ganglia Overview</title>
@@ -236,8 +237,8 @@
         <emphasis>/etc/ganglia/conf.d</emphasis> and
         <emphasis>/etc/ganglia/conf.d</emphasis> and
         <emphasis>/etc/ganglia/.pyconf</emphasis> files in place and then add
         <emphasis>/etc/ganglia/.pyconf</emphasis> files in place and then add
         the Roxie nodes you wish to monitor. You can do that by installing the
         the Roxie nodes you wish to monitor. You can do that by installing the
-        Ganglia components and HPCC Systems Monitoring components on to each Roxie
-        node.</para>
+        Ganglia components and HPCC Systems Monitoring components on to each
+        Roxie node.</para>
 
 
         <para>If you do not have Ganglia, or want to install it, read the
         <para>If you do not have Ganglia, or want to install it, read the
         Ganglia documentation provided at the above link, and install it and
         Ganglia documentation provided at the above link, and install it and
@@ -247,13 +248,13 @@
         <sect3 id="Installing-HPCCGanglia" role="brk">
         <sect3 id="Installing-HPCCGanglia" role="brk">
           <title>Installing the HPCC Systems Monitoring component</title>
           <title>Installing the HPCC Systems Monitoring component</title>
 
 
-          <para>The HPCC Systems Monitoring component is available for download. The
-          HPCC Systems Monitoring components leverage the Ganglia monitoring tools,
-          and would only be needed if you do not already have Ganglia
-          monitoring components on your system.</para>
+          <para>The HPCC Systems Monitoring component is available for
+          download. The HPCC Systems Monitoring components leverage the
+          Ganglia monitoring tools, and would only be needed if you do not
+          already have Ganglia monitoring components on your system.</para>
 
 
-          <para>To get the HPCC Systems Monitoring components, find the appropriate
-          package for your system.</para>
+          <para>To get the HPCC Systems Monitoring components, find the
+          appropriate package for your system.</para>
 
 
           <para>Packages are available for download from the HPCC
           <para>Packages are available for download from the HPCC
           Systems<superscript>®</superscript> site:</para>
           Systems<superscript>®</superscript> site:</para>
@@ -269,10 +270,10 @@
           <para>Find and install the appropriate package for your
           <para>Find and install the appropriate package for your
           system.</para>
           system.</para>
 
 
-          <para>For example, if you have a CentOS 6.x system, get the RPM
+          <para>For example, if you have a CentOS 8.x system, get the RPM
           package.</para>
           package.</para>
 
 
-          <programlisting>hpccsystems-ganglia-monitoring-4.2.0-rc1.el6.x86_64.rpm</programlisting>
+          <programlisting>hpccsystems-ganglia-monitoring-7.12.18-rc1.el8.x86_64.rpm</programlisting>
 
 
           <para>Install the monitoring package on the system that you want to
           <para>Install the monitoring package on the system that you want to
           monitor. Optionally, you can look at that installation package
           monitor. Optionally, you can look at that installation package
@@ -286,8 +287,8 @@
       <title>The HPCC Systems Ganglia Viewer</title>
       <title>The HPCC Systems Ganglia Viewer</title>
 
 
       <para>A Ganglia viewer comes preinstalled and configured in the 4.2.x
       <para>A Ganglia viewer comes preinstalled and configured in the 4.2.x
-      (or later) HPCC Systems Virtual Machine. The monitoring provided with the
-      Virtual Machine is set up to monitor Roxie instances on the network.
+      (or later) HPCC Systems Virtual Machine. The monitoring provided with
+      the Virtual Machine is set up to monitor Roxie instances on the network.
       This document introduces the monitoring and describes how to get it
       This document introduces the monitoring and describes how to get it
       working on your system. <figure>
       working on your system. <figure>
           <title>HPCC Systems Monitoring</title>
           <title>HPCC Systems Monitoring</title>
@@ -331,9 +332,9 @@
       implement them on a larger system, is to examine the metrics in
       implement them on a larger system, is to examine the metrics in
       action.</para>
       action.</para>
 
 
-      <para>Ganglia integration is built into the current HPCC Systems Virtual Machine
-      images. Download and start up a virtual image and look at how the
-      monitoring component works.</para>
+      <para>Ganglia integration is built into the current HPCC Systems Virtual
+      Machine images. Download and start up a virtual image and look at how
+      the monitoring component works.</para>
 
 
       <para>This allows you:</para>
       <para>This allows you:</para>
 
 
@@ -391,8 +392,8 @@
         </listitem>
         </listitem>
 
 
         <listitem>
         <listitem>
-          <para>Deploy the monitoring daemon (gmond) and the HPCC Systems Monitoring
-          package to each of the nodes you wish to monitor.</para>
+          <para>Deploy the monitoring daemon (gmond) and the HPCC Systems
+          Monitoring package to each of the nodes you wish to monitor.</para>
         </listitem>
         </listitem>
       </orderedlist>
       </orderedlist>
 
 
@@ -400,9 +401,9 @@
       more Roxie nodes installed anywhere on the same network utilizing
       more Roxie nodes installed anywhere on the same network utilizing
       multi-cast.</para>
       multi-cast.</para>
 
 
-      <para>To add a new Roxie node, install the HPCC Systems Monitoring package on to
-      each Roxie node to monitor. In most basic configurations you may need to
-      add the node(s) IP address(es) to the
+      <para>To add a new Roxie node, install the HPCC Systems Monitoring
+      package on to each Roxie node to monitor. In most basic configurations
+      you may need to add the node(s) IP address(es) to the
       <emphasis>/etc/ganglia/gmetad.conf</emphasis> file. As long as the new
       <emphasis>/etc/ganglia/gmetad.conf</emphasis> file. As long as the new
       Roxie node can communicate with (for example ping) the Monitoring
       Roxie node can communicate with (for example ping) the Monitoring
       component host, the graphs for that will automatically be added to the
       component host, the graphs for that will automatically be added to the
@@ -424,10 +425,10 @@
     <sect1 id="GangliaInECLWatch">
     <sect1 id="GangliaInECLWatch">
       <title>Ganglia in ECL Watch</title>
       <title>Ganglia in ECL Watch</title>
 
 
-      <para>With the Ganglia for HPCC Systems Plugin installed. You can view the
-      Ganglia statistics and graphs right through the ECL Watch interface. The
-      out of the box monitoring displays several key statistics by default.
-      You can customize and configure the views.</para>
+      <para>With the Ganglia for HPCC Systems Plugin installed. You can view
+      the Ganglia statistics and graphs right through the ECL Watch interface.
+      The out of the box monitoring displays several key statistics by
+      default. You can customize and configure the views.</para>
 
 
       <figure>
       <figure>
         <title>Ganglia in ECL Watch</title>
         <title>Ganglia in ECL Watch</title>
@@ -451,8 +452,8 @@
         <para>In order to get the Ganglia in ECL Watch, You need to have
         <para>In order to get the Ganglia in ECL Watch, You need to have
         Ganglia on your HPCC Systems. <orderedlist>
         Ganglia on your HPCC Systems. <orderedlist>
             <listitem>
             <listitem>
-              <para>Install or ensure you have the HPCC Systems Monitoring components
-              on a node where ECL Watch is installed.</para>
+              <para>Install or ensure you have the HPCC Systems Monitoring
+              components on a node where ECL Watch is installed.</para>
             </listitem>
             </listitem>
 
 
             <listitem>
             <listitem>
@@ -502,15 +503,16 @@
   <chapter id="HPCC_Nagios_Chapter">
   <chapter id="HPCC_Nagios_Chapter">
     <title>Nagios</title>
     <title>Nagios</title>
 
 
-    <para>The HPCC Systems Reporting component leverages Nagios, an open source,
-    system and network infrastructure monitoring application to monitor and
-    alert HPCC Systems Administrators. Nagios leverages established and accepted open
-    source technologies to alert users to changes or potential issues. Nagios
-    provides regular periodic system monitoring and reporting.</para>
+    <para>The HPCC Systems Reporting component leverages Nagios, an open
+    source, system and network infrastructure monitoring application to
+    monitor and alert HPCC Systems Administrators. Nagios leverages
+    established and accepted open source technologies to alert users to
+    changes or potential issues. Nagios provides regular periodic system
+    monitoring and reporting.</para>
 
 
-    <para>With the HPCC Systems integration, you can generate Nagios configuration
-    files to monitor HPCC Systems server health. Once the Nagios is configured, you
-    can monitor:<itemizedlist>
+    <para>With the HPCC Systems integration, you can generate Nagios
+    configuration files to monitor HPCC Systems server health. Once the Nagios
+    is configured, you can monitor:<itemizedlist>
         <listitem>
         <listitem>
           <para>Disk Usage</para>
           <para>Disk Usage</para>
         </listitem>
         </listitem>
@@ -569,13 +571,14 @@
       <title>Nagios Introduction</title>
       <title>Nagios Introduction</title>
 
 
       <para>Nagios is a powerful monitoring and notification system, which can
       <para>Nagios is a powerful monitoring and notification system, which can
-      be used with HPCC Systems to help identify and resolve infrastructure problems
-      before they affect critical processes. Nagios hardware notifications can
-      help keep your system highly available and alerts can assist in
-      pre-emptive maintenance for processes which are down or behaving outside
-      expected parameters to ensure system stability, reliability, and uptime.
-      Scripts and tools are provided to extract HPCC Systems platform system metrics
-      and easily integrate that data into Nagios.</para>
+      be used with HPCC Systems to help identify and resolve infrastructure
+      problems before they affect critical processes. Nagios hardware
+      notifications can help keep your system highly available and alerts can
+      assist in pre-emptive maintenance for processes which are down or
+      behaving outside expected parameters to ensure system stability,
+      reliability, and uptime. Scripts and tools are provided to extract HPCC
+      Systems platform system metrics and easily integrate that data into
+      Nagios.</para>
 
 
       <para>Administrators should note that different platforms may not
       <para>Administrators should note that different platforms may not
       support all plugins. The <emphasis>hpcc-nagios-tools</emphasis> utility
       support all plugins. The <emphasis>hpcc-nagios-tools</emphasis> utility
@@ -596,8 +599,8 @@
           </listitem>
           </listitem>
 
 
           <listitem>
           <listitem>
-            <para>Review our HPCC Systems Monitoring and Reporting documentation in
-            its entirety.</para>
+            <para>Review our HPCC Systems Monitoring and Reporting
+            documentation in its entirety.</para>
           </listitem>
           </listitem>
 
 
           <listitem>
           <listitem>
@@ -623,9 +626,9 @@
       implement it on a larger system, is to examine an established session in
       implement it on a larger system, is to examine an established session in
       action.</para>
       action.</para>
 
 
-      <para>Nagios integration is built into the current HPCC Systems Virtual Machine
-      images. Download and start up a virtual image and look at how the
-      monitoring component works.</para>
+      <para>Nagios integration is built into the current HPCC Systems Virtual
+      Machine images. Download and start up a virtual image and look at how
+      the monitoring component works.</para>
 
 
       <para>The Nagios component for HPCC Systems on the VM allows you:</para>
       <para>The Nagios component for HPCC Systems on the VM allows you:</para>
 
 
@@ -746,26 +749,27 @@
       <title>Installation of Nagios</title>
       <title>Installation of Nagios</title>
 
 
       <para>The HPCC Systems Nagios package provides tools and utilities for
       <para>The HPCC Systems Nagios package provides tools and utilities for
-      generating Nagios configurations. These configurations check HPCC Systems and
-      perform some of the HPCC Systems specific checks. HPCC Systems Nagios installation is
-      provided on the HPCC Systems<superscript>®</superscript> portal.</para>
+      generating Nagios configurations. These configurations check HPCC
+      Systems and perform some of the HPCC Systems specific checks. HPCC
+      Systems Nagios installation is provided on the HPCC
+      Systems<superscript>®</superscript> portal.</para>
 
 
       <sect2 id="HPCC_Nagios_Installation">
       <sect2 id="HPCC_Nagios_Installation">
         <title>HPCC Systems Nagios Installation Package</title>
         <title>HPCC Systems Nagios Installation Package</title>
 
 
-        <para>To get the HPCC Systems Nagios monitoring on your system you need the
-        Installation package. Download the installation package from the HPCC
-        Systems portal.</para>
+        <para>To get the HPCC Systems Nagios monitoring on your system you
+        need the Installation package. Download the installation package from
+        the HPCC Systems portal.</para>
 
 
         <para>The HPCC Systems<superscript>®</superscript> web portal is where
         <para>The HPCC Systems<superscript>®</superscript> web portal is where
-        you can find HPCC Systems resources, downloads, plugins, as well as helpful
-        information.</para>
+        you can find HPCC Systems resources, downloads, plugins, as well as
+        helpful information.</para>
 
 
         <para><ulink
         <para><ulink
         url="http://hpccsystems.com/download/free-community-edition/monitoring">http://hpccsystems.com/</ulink></para>
         url="http://hpccsystems.com/download/free-community-edition/monitoring">http://hpccsystems.com/</ulink></para>
 
 
-        <para>You can find the HPCC Systems Monitoring and Reporting Installation
-        packages at:</para>
+        <para>You can find the HPCC Systems Monitoring and Reporting
+        Installation packages at:</para>
 
 
         <para><ulink
         <para><ulink
         url="http://hpccsystems.com/download/free-community-edition/monitoring">http://hpccsystems.com/download/free-community-edition/monitoring</ulink></para>
         url="http://hpccsystems.com/download/free-community-edition/monitoring">http://hpccsystems.com/download/free-community-edition/monitoring</ulink></para>
@@ -777,8 +781,8 @@
       <sect2 id="HPCC_InstallNagios" role="brk">
       <sect2 id="HPCC_InstallNagios" role="brk">
         <title>Install Nagios</title>
         <title>Install Nagios</title>
 
 
-        <para>To Install Nagios for HPCC Systems, you must have HPCC Systems platform
-        installed and also have the open-source Nagios package
+        <para>To Install Nagios for HPCC Systems, you must have HPCC Systems
+        platform installed and also have the open-source Nagios package
         installed.</para>
         installed.</para>
 
 
         <para><orderedlist>
         <para><orderedlist>
@@ -789,8 +793,8 @@
               Nagios monitoring must have network connectivity to all the
               Nagios monitoring must have network connectivity to all the
               monitored nodes.</para>
               monitored nodes.</para>
 
 
-              <para>With the hpcc-nagios tools installed, you have HPCC Systems check
-              utilities in:</para>
+              <para>With the hpcc-nagios tools installed, you have HPCC
+              Systems check utilities in:</para>
 
 
               <para><programlisting> /usr/lib/nagios/plugins/ </programlisting></para>
               <para><programlisting> /usr/lib/nagios/plugins/ </programlisting></para>
             </listitem>
             </listitem>
@@ -804,9 +808,9 @@
               configurations. The generated configurations can be modified
               configurations. The generated configurations can be modified
               with optional flags to fit the environment that is being
               with optional flags to fit the environment that is being
               monitored. The default package also provides some utilities to
               monitored. The default package also provides some utilities to
-              monitor HPCC Systems processes such as Roxies, ESP Services by node and
-              port, Dali, and dafilesrv. Other processes could also be
-              monitored if a check utility is provided and the generated
+              monitor HPCC Systems processes such as Roxies, ESP Services by
+              node and port, Dali, and dafilesrv. Other processes could also
+              be monitored if a check utility is provided and the generated
               config file is modified (find/replace all would probably
               config file is modified (find/replace all would probably
               suffice).</para>
               suffice).</para>
             </listitem>
             </listitem>

+ 2 - 25
docs/EN_US/Installing_and_RunningTheHPCCPlatform/Installing_and_RunningTheHPCCPlatform.xml

@@ -157,7 +157,7 @@
           Scripts</link>) to make starting larger multi-node systems
           Scripts</link>) to make starting larger multi-node systems
           easier.</para>
           easier.</para>
 
 
-          <para>CentOS 6, Ubuntu 14.04, and other System V users see <link
+          <para>System V users please refer to <link
           linkend="hpcc-init">Appendix: hpcc-init</link>.</para>
           linkend="hpcc-init">Appendix: hpcc-init</link>.</para>
         </listitem>
         </listitem>
 
 
@@ -293,27 +293,7 @@
           using the -Uvh options), however then you would have to negotiate
           using the -Uvh options), however then you would have to negotiate
           installing any additional dependencies.</para>
           installing any additional dependencies.</para>
 
 
-          <para><variablelist>
-              <varlistentry>
-                <term>Note:</term>
 
 
-                <listitem>
-                  <para>If you are using CentOS 6 you may need to run the
-                  following command to properly enable the
-                  installation.</para>
-                </listitem>
-              </varlistentry>
-            </variablelist></para>
-
-          <para><programlisting>sudo wget \
- http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo</programlisting></para>
-
-          <para>This will add the devtools-2.repo file to your system. Verify
-          that the following information is in the devtools-2.repo file for
-          the yum installation to work. <programlisting>[testing-devtools-2-centos-6]
-name=testing 2 devtools for CentOS 6 
-baseurl=http://people.centos.org/tru/devtools-2/6/$basearch/RPMS
-gpgcheck=0</programlisting></para>
         </sect3>
         </sect3>
 
 
         <sect3 id="Installing_Ubuntu-Debian">
         <sect3 id="Installing_Ubuntu-Debian">
@@ -1999,7 +1979,7 @@ init_start_thor--></property></para>
     <sect1 id="hpcc-init">
     <sect1 id="hpcc-init">
       <title>hpcc-init</title>
       <title>hpcc-init</title>
 
 
-      <para>CentOS 6 and other System V based operating systems do not support
+      <para>Systems utilizing System V based init systems do not support
       the systemd calls utilized by HPCC Systems. We will continue to support
       the systemd calls utilized by HPCC Systems. We will continue to support
       the old System V style init.d calls.</para>
       the old System V style init.d calls.</para>
 
 
@@ -2404,9 +2384,6 @@ add1(10);
 
 
             <para><emphasis role="bold">RPM-based systems:</emphasis></para>
             <para><emphasis role="bold">RPM-based systems:</emphasis></para>
 
 
-            <para>JavaScript support is available for CentOS 6.x or later (not
-            available for CentOS 5.x).</para>
-
             <para>On an RPM-based system (CentOS/Red Hat) install <emphasis
             <para>On an RPM-based system (CentOS/Red Hat) install <emphasis
             role="bold">v8embed.</emphasis></para>
             role="bold">v8embed.</emphasis></para>
 
 

+ 14 - 0
ecl/eclagent/eclagent.cpp

@@ -1876,6 +1876,20 @@ void EclAgent::doProcess()
                 throw makeStringException(0, "Attempting to execute a workunit that hasn't been compiled");
                 throw makeStringException(0, "Attempting to execute a workunit that hasn't been compiled");
             if (checkVersion && ((eclccCodeVersion > ACTIVITY_INTERFACE_VERSION) || (eclccCodeVersion < MIN_ACTIVITY_INTERFACE_VERSION)))
             if (checkVersion && ((eclccCodeVersion > ACTIVITY_INTERFACE_VERSION) || (eclccCodeVersion < MIN_ACTIVITY_INTERFACE_VERSION)))
                 failv(0, "Workunit was compiled for eclagent interface version %d, this eclagent requires version %d..%d", eclccCodeVersion, MIN_ACTIVITY_INTERFACE_VERSION, ACTIVITY_INTERFACE_VERSION);
                 failv(0, "Workunit was compiled for eclagent interface version %d, this eclagent requires version %d..%d", eclccCodeVersion, MIN_ACTIVITY_INTERFACE_VERSION, ACTIVITY_INTERFACE_VERSION);
+            if (checkVersion && eclccCodeVersion == 652)
+            {
+                // Any workunit compiled using eclcc 7.12.0-7.12.18 is not compatible
+                StringBuffer buildVersion, eclVersion;
+                w->getBuildVersion(StringBufferAdaptor(buildVersion), StringBufferAdaptor(eclVersion));
+                const char *version = strstr(buildVersion, "7.12.");
+                if (version)
+                {
+                    const char *point = version + strlen("7.12.");
+                    unsigned pointVer = atoi(point);
+                    if (pointVer <= 18)
+                        failv(0, "Workunit was compiled by eclcc version %s which is not compatible with this runtime", buildVersion.str());
+                }
+            }
             if(noRetry && (w->getState() == WUStateFailed))
             if(noRetry && (w->getState() == WUStateFailed))
                 throw MakeStringException(0, "Ecl agent started in 'no retry' mode for failed workunit, so failing");
                 throw MakeStringException(0, "Ecl agent started in 'no retry' mode for failed workunit, so failing");
             w->setState(WUStateRunning);
             w->setState(WUStateRunning);

+ 4 - 0
ecl/hqlcpp/hqlcerrors.hpp

@@ -225,6 +225,8 @@
 #define HQLERR_CannotInterpretRecord            4213
 #define HQLERR_CannotInterpretRecord            4213
 #define HQLERR_NoVirtualAndAlien                4214
 #define HQLERR_NoVirtualAndAlien                4214
 #define HQLERR_CannotFilterLimitInsideActivity  4215
 #define HQLERR_CannotFilterLimitInsideActivity  4215
+#define HQLERR_OutputLimitMaxExceeded           4216
+#define HQLERR_OutputLimitFutureMaxExceeded     4217
 
 
 //Warnings....
 //Warnings....
 #define HQLWRN_PersistDataNotLikely             4500
 #define HQLWRN_PersistDataNotLikely             4500
@@ -533,6 +535,8 @@
 #define HQLERR_CannotInterpretRecord_Text       "This dataset contains deprecated record formats and virtual fields.  Remove the alien data types, or temporarily add __OPTION__(LEGACY) to the table definition"
 #define HQLERR_CannotInterpretRecord_Text       "This dataset contains deprecated record formats and virtual fields.  Remove the alien data types, or temporarily add __OPTION__(LEGACY) to the table definition"
 #define HQLERR_NoVirtualAndAlien_Text           "GenericDiskReads: VIRTUAL fields are not currently supported with ALIEN types"
 #define HQLERR_NoVirtualAndAlien_Text           "GenericDiskReads: VIRTUAL fields are not currently supported with ALIEN types"
 #define HQLERR_CannotFilterLimitInsideActivity_Text "Cannot filter a non keyed limit within a compound activity"
 #define HQLERR_CannotFilterLimitInsideActivity_Text "Cannot filter a non keyed limit within a compound activity"
+#define HQLERR_OutputLimitMaxExceeded_Text      "Dali result outputs are restricted to an absolute maximum of %u MB (%u MB specified by option). A huge dali result usually indicates the ECL needs altering."
+#define HQLERR_OutputLimitFutureMaxExceeded_Text "In the next platform version dali result outputs will be restricted to an absolute maximum of %u MB (%u MB specified by option). A huge dali result usually indicates the ECL needs altering."
 
 
 //Warnings.
 //Warnings.
 #define HQLWRN_CannotRecreateDistribution_Text  "Cannot recreate the distribution for a persistent dataset"
 #define HQLWRN_CannotRecreateDistribution_Text  "Cannot recreate the distribution for a persistent dataset"

+ 6 - 0
ecl/hqlcpp/hqlcpp.cpp

@@ -1539,6 +1539,12 @@ void HqlCppTranslator::checkAbort()
 // Without this restriction it becomes much easier.
 // Without this restriction it becomes much easier.
 void HqlCppTranslator::cacheOptions()
 void HqlCppTranslator::cacheOptions()
 {
 {
+    size32_t outputLimit = wu()->getDebugValueInt("outputLimitMb", 0);
+    if (outputLimit > daliResultOutputMax)
+        throwError2(HQLERR_OutputLimitMaxExceeded, daliResultOutputMax, outputLimit);
+    if (outputLimit > futureResultOutputMax)
+        WARNING2(CategoryDeprecated, HQLERR_OutputLimitFutureMaxExceeded, futureResultOutputMax, outputLimit);
+
     SCMStringBuffer targetText;
     SCMStringBuffer targetText;
     wu()->getDebugValue("targetClusterType", targetText);
     wu()->getDebugValue("targetClusterType", targetText);
     ClusterType clusterType = getClusterType(targetText.s.str());
     ClusterType clusterType = getClusterType(targetText.s.str());

+ 2 - 2
ecl/hthor/hthor.cpp

@@ -6313,8 +6313,8 @@ void CHThorWorkUnitWriteActivity::execute()
     size32_t outputLimit = agent.queryWorkUnit()->getDebugValueInt(OPT_OUTPUTLIMIT, agent.queryWorkUnit()->getDebugValueInt(OPT_OUTPUTLIMIT_LEGACY, defaultDaliResultLimit));
     size32_t outputLimit = agent.queryWorkUnit()->getDebugValueInt(OPT_OUTPUTLIMIT, agent.queryWorkUnit()->getDebugValueInt(OPT_OUTPUTLIMIT_LEGACY, defaultDaliResultLimit));
     if (flags & POFmaxsize)
     if (flags & POFmaxsize)
         outputLimit = helper.getMaxSize();
         outputLimit = helper.getMaxSize();
-    if (outputLimit>defaultDaliResultOutputMax)
-        throw MakeStringException(0, "Dali result outputs are restricted to a maximum of %d MB, the current limit is %d MB. A huge dali result usually indicates the ECL needs altering.", defaultDaliResultOutputMax, defaultDaliResultLimit);
+    if (outputLimit>daliResultOutputMax)
+        throw MakeStringException(0, "Dali result outputs are restricted to a maximum of %d MB, the current limit is %d MB. A huge dali result usually indicates the ECL needs altering.", daliResultOutputMax, defaultDaliResultLimit);
     assertex(outputLimit<=0x1000); // 32bit limit because MemoryBuffer/CMessageBuffers involved etc.
     assertex(outputLimit<=0x1000); // 32bit limit because MemoryBuffer/CMessageBuffers involved etc.
     outputLimit *= 0x100000;
     outputLimit *= 0x100000;
     MemoryBuffer rowdata;
     MemoryBuffer rowdata;

+ 3 - 20
esp/bindings/http/client/httpclient.cpp

@@ -402,15 +402,8 @@ HttpClientErrCode CHttpClient::sendRequest(const char* method, const char* conte
     {
     {
         StringBuffer uidpair;
         StringBuffer uidpair;
         uidpair.append(m_userid.get()).append(":").append(m_password.get());
         uidpair.append(m_userid.get()).append(":").append(m_password.get());
-        StringBuffer result;
-        JBASE64_Encode(uidpair.str(), uidpair.length(), result, false);
         StringBuffer authhdr("Basic ");
         StringBuffer authhdr("Basic ");
-
-        //Remove the \n from the end of the encoded string.
-        //Should it even be there??
-        result.setCharAt(result.length() - 1,0);
-
-        authhdr.append(result.str());
+        JBASE64_Encode(uidpair.str(), uidpair.length(), authhdr, false);
         httprequest->addHeader("Authorization", authhdr.str());
         httprequest->addHeader("Authorization", authhdr.str());
     }
     }
     if(m_realm.length() > 0)
     if(m_realm.length() > 0)
@@ -707,11 +700,8 @@ HttpClientErrCode CHttpClient::sendRequest(IProperties *headers, const char* met
     {
     {
         StringBuffer uidpair;
         StringBuffer uidpair;
         uidpair.append(m_userid.get()).append(":").append(m_password.get());
         uidpair.append(m_userid.get()).append(":").append(m_password.get());
-        StringBuffer result;
-        JBASE64_Encode(uidpair.str(), uidpair.length(), result, false);
         StringBuffer authhdr("Basic ");
         StringBuffer authhdr("Basic ");
-
-        authhdr.append(result.str());
+        JBASE64_Encode(uidpair.str(), uidpair.length(), authhdr, false);
         httprequest->addHeader("Authorization", authhdr.str());
         httprequest->addHeader("Authorization", authhdr.str());
     }
     }
     if(m_realm.length() > 0)
     if(m_realm.length() > 0)
@@ -894,15 +884,8 @@ HttpClientErrCode CHttpClient::postRequest(ISoapMessage &req, ISoapMessage& resp
     {
     {
         StringBuffer uidpair;
         StringBuffer uidpair;
         uidpair.append(m_userid.get()).append(":").append(m_password.get());
         uidpair.append(m_userid.get()).append(":").append(m_password.get());
-        StringBuffer result;
-        JBASE64_Encode(uidpair.str(), uidpair.length(), result, false);
         StringBuffer authhdr("Basic ");
         StringBuffer authhdr("Basic ");
-
-        //Remove the \n from the end of the encoded string.
-        //Should it even be there??
-        result.setCharAt(result.length() - 1,0);
-
-        authhdr.append(result.str());
+        JBASE64_Encode(uidpair.str(), uidpair.length(), authhdr, false);
         httprequest->addHeader("Authorization", authhdr.str());
         httprequest->addHeader("Authorization", authhdr.str());
         if(m_proxy.length())
         if(m_proxy.length())
             httprequest->addHeader("Proxy-Authorization", authhdr.str());
             httprequest->addHeader("Proxy-Authorization", authhdr.str());

+ 6 - 1
esp/services/ws_fs/ws_fsService.cpp

@@ -2367,6 +2367,7 @@ bool CFileSprayEx::onDespray(IEspContext &context, IEspDespray &req, IEspDespray
         IDFUfileSpec *source = wu->queryUpdateSource();
         IDFUfileSpec *source = wu->queryUpdateSource();
         IDFUfileSpec *destination = wu->queryUpdateDestination();
         IDFUfileSpec *destination = wu->queryUpdateDestination();
         IDFUoptions *options = wu->queryUpdateOptions();
         IDFUoptions *options = wu->queryUpdateOptions();
+        bool preserveFileParts = req.getWrap();
 
 
         source->setLogicalName(srcname);
         source->setLogicalName(srcname);
 
 
@@ -2379,6 +2380,10 @@ bool CFileSprayEx::onDespray(IEspContext &context, IEspDespray &req, IEspDespray
 
 
             StringBuffer destfileWithPath, umask;
             StringBuffer destfileWithPath, umask;
             getDropZoneInfoByIP(version, destip, destfile, destfileWithPath, umask);
             getDropZoneInfoByIP(version, destip, destfile, destfileWithPath, umask);
+            //Ensure the filename is dependent on the file part if parts are being preserved
+            if (preserveFileParts && !strstr(destfileWithPath, "$P$"))
+                destfileWithPath.append("._$P$_of_$N$");
+
             rfn.setPath(ep, destfileWithPath.str());
             rfn.setPath(ep, destfileWithPath.str());
             if (umask.length())
             if (umask.length())
                 options->setUMask(umask.str());
                 options->setUMask(umask.str());
@@ -2419,7 +2424,7 @@ bool CFileSprayEx::onDespray(IEspContext &context, IEspDespray &req, IEspDespray
         if(req.getNorecover())
         if(req.getNorecover())
             options->setNoRecover(true);
             options->setNoRecover(true);
 
 
-        if (req.getWrap()) {
+        if (preserveFileParts) {
             options->setPush();             // I think needed for a despray
             options->setPush();             // I think needed for a despray
             destination->setWrap(true);
             destination->setWrap(true);
         }
         }

+ 14 - 0
roxie/ccd/ccdquery.cpp

@@ -1784,6 +1784,20 @@ unsigned checkWorkunitVersionConsistency(const IConstWorkUnit *wu)
         throw makeStringException(ROXIE_MISMATCH, "Attempting to execute a workunit that hasn't been compiled");
         throw makeStringException(ROXIE_MISMATCH, "Attempting to execute a workunit that hasn't been compiled");
     if (wuVersion > ACTIVITY_INTERFACE_VERSION || wuVersion < MIN_ACTIVITY_INTERFACE_VERSION)
     if (wuVersion > ACTIVITY_INTERFACE_VERSION || wuVersion < MIN_ACTIVITY_INTERFACE_VERSION)
         throw MakeStringException(ROXIE_MISMATCH, "Workunit was compiled for eclhelper interface version %d, this roxie requires version %d..%d", wuVersion, MIN_ACTIVITY_INTERFACE_VERSION, ACTIVITY_INTERFACE_VERSION);
         throw MakeStringException(ROXIE_MISMATCH, "Workunit was compiled for eclhelper interface version %d, this roxie requires version %d..%d", wuVersion, MIN_ACTIVITY_INTERFACE_VERSION, ACTIVITY_INTERFACE_VERSION);
+    if (wuVersion == 652)
+    {
+        // Any workunit compiled using eclcc 7.12.0-7.12.18 is not compatible
+        StringBuffer buildVersion, eclVersion;
+        wu->getBuildVersion(StringBufferAdaptor(buildVersion), StringBufferAdaptor(eclVersion));
+        const char *version = strstr(buildVersion, "7.12.");
+        if (version)
+        {
+            const char *point = version + strlen("7.12.");
+            unsigned pointVer = atoi(point);
+            if (pointVer <= 18)
+                throw MakeStringException(ROXIE_MISMATCH, "Workunit was compiled by eclcc version %s which is not compatible with this runtime", buildVersion.str());
+        }
+    }
     return wuVersion;
     return wuVersion;
 }
 }
 
 

+ 2 - 2
roxie/ccd/ccdserver.cpp

@@ -21357,8 +21357,8 @@ public:
                 // In absense of OPT_OUTPUTLIMIT check pre 5.2 legacy name OPT_OUTPUTLIMIT_LEGACY
                 // In absense of OPT_OUTPUTLIMIT check pre 5.2 legacy name OPT_OUTPUTLIMIT_LEGACY
                 outputLimit = workunit->getDebugValueInt(OPT_OUTPUTLIMIT, workunit->getDebugValueInt(OPT_OUTPUTLIMIT_LEGACY, defaultDaliResultLimit));
                 outputLimit = workunit->getDebugValueInt(OPT_OUTPUTLIMIT, workunit->getDebugValueInt(OPT_OUTPUTLIMIT_LEGACY, defaultDaliResultLimit));
             }
             }
-            if (outputLimit>defaultDaliResultOutputMax)
-                throw MakeStringException(0, "Dali result outputs are restricted to a maximum of %d MB, the current limit is %d MB. A huge dali result usually indicates the ECL needs altering.", defaultDaliResultOutputMax, defaultDaliResultLimit);
+            if (outputLimit>daliResultOutputMax)
+                throw MakeStringException(0, "Dali result outputs are restricted to a maximum of %d MB, the current limit is %d MB. A huge dali result usually indicates the ECL needs altering.", daliResultOutputMax, defaultDaliResultLimit);
             assertex(outputLimit<=0x1000); // 32bit limit because MemoryBuffer/CMessageBuffers involved etc.
             assertex(outputLimit<=0x1000); // 32bit limit because MemoryBuffer/CMessageBuffers involved etc.
             outputLimitBytes = outputLimit * 0x100000;
             outputLimitBytes = outputLimit * 0x100000;
         }
         }

+ 5 - 6
rtl/eclrtl/rtldynfield.cpp

@@ -41,17 +41,16 @@ extern ECLRTL_API RecordTranslationMode getTranslationMode(const char *val, bool
     else if (strieq(val, "alwaysDisk") || strieq(val, "disk"))
     else if (strieq(val, "alwaysDisk") || strieq(val, "disk"))
     {
     {
         if (!isLocal)
         if (!isLocal)
-            throw makeStringException(0, "alwaysDisk translation mode can only be set via HINT");
+            WARNLOG("alwaysDisk translation mode should only ever be used via a HINT");
         return RecordTranslationMode::AlwaysDisk;
         return RecordTranslationMode::AlwaysDisk;
     }
     }
     else if (strieq(val, "alwaysECL") || strieq(val, "ecl"))
     else if (strieq(val, "alwaysECL") || strieq(val, "ecl"))
     {
     {
-        if (!isLocal)
-            throw makeStringException(0, "alwaysECL translation mode can only be set via HINT");
-        return RecordTranslationMode::AlwaysECL;
+        if (isLocal)
+            return RecordTranslationMode::AlwaysECL;
+        WARNLOG("Unsupported alwaysECL translation mode used globally, translation disabled - use with HINT to set locally.");
     }
     }
-    else
-        return RecordTranslationMode::None;
+    return RecordTranslationMode::None;
 }
 }
 
 
 extern ECLRTL_API const char *getTranslationModeText(RecordTranslationMode val)
 extern ECLRTL_API const char *getTranslationModeText(RecordTranslationMode val)

+ 4 - 1
rtl/include/eclhelper.hpp

@@ -173,7 +173,6 @@ interface IRecordSize : public IInterface
 interface IXmlWriter : public IInterface
 interface IXmlWriter : public IInterface
 {
 {
 public:
 public:
-    virtual void flushContent(bool close) = 0;
     virtual void outputQuoted(const char *text) = 0;
     virtual void outputQuoted(const char *text) = 0;
     virtual void outputString(unsigned len, const char *field, const char *fieldname) = 0;
     virtual void outputString(unsigned len, const char *field, const char *fieldname) = 0;
     virtual void outputBool(bool field, const char *fieldname) = 0;
     virtual void outputBool(bool field, const char *fieldname) = 0;
@@ -196,6 +195,7 @@ public:
     virtual void outputInlineXml(const char *text) = 0; //for appending raw xml content
     virtual void outputInlineXml(const char *text) = 0; //for appending raw xml content
     virtual void outputXmlns(const char *name, const char *uri) = 0;
     virtual void outputXmlns(const char *name, const char *uri) = 0;
     inline void outputCString(const char *field, const char *fieldname) { outputString((size32_t)strlen(field), field, fieldname); }
     inline void outputCString(const char *field, const char *fieldname) { outputString((size32_t)strlen(field), field, fieldname); }
+    virtual void flushContent(bool close) = 0;
 };
 };
 
 
 interface IFieldProcessor : public IInterface
 interface IFieldProcessor : public IInterface
@@ -2966,6 +2966,9 @@ protected:
     Owned<IColumnProvider> cur;
     Owned<IColumnProvider> cur;
 };
 };
 
 
+constexpr unsigned daliResultOutputMax = 2000; // MB
+constexpr unsigned futureResultOutputMax = 100; // MB
+
 #ifdef STARTQUERY_EXPORTS
 #ifdef STARTQUERY_EXPORTS
 #define STARTQUERY_API DECL_EXPORT
 #define STARTQUERY_API DECL_EXPORT
 #else
 #else

+ 2 - 2
thorlcr/activities/wuidwrite/thwuidwrite.cpp

@@ -80,8 +80,8 @@ public:
         CMasterActivity::init();
         CMasterActivity::init();
         // In absense of OPT_OUTPUTLIMIT check pre 5.2 legacy name OPT_OUTPUTLIMIT_LEGACY
         // In absense of OPT_OUTPUTLIMIT check pre 5.2 legacy name OPT_OUTPUTLIMIT_LEGACY
         workunitWriteLimit = activityMaxSize ? activityMaxSize : getOptInt(OPT_OUTPUTLIMIT, getOptInt(OPT_OUTPUTLIMIT_LEGACY, defaultDaliResultLimit));
         workunitWriteLimit = activityMaxSize ? activityMaxSize : getOptInt(OPT_OUTPUTLIMIT, getOptInt(OPT_OUTPUTLIMIT_LEGACY, defaultDaliResultLimit));
-        if (workunitWriteLimit>defaultDaliResultOutputMax)
-            throw MakeActivityException(this, 0, "Configured max result size, %d MB, exceeds absolute max limit of %d MB. A huge Dali result usually indicates the ECL needs altering.", workunitWriteLimit, defaultDaliResultOutputMax);
+        if (workunitWriteLimit>daliResultOutputMax)
+            throw MakeActivityException(this, 0, "Configured max result size, %d MB, exceeds absolute max limit of %d MB. A huge Dali result usually indicates the ECL needs altering.", workunitWriteLimit, daliResultOutputMax);
         assertex(workunitWriteLimit<=0x1000); // 32bit limit because MemoryBuffer/CMessageBuffers involved etc.
         assertex(workunitWriteLimit<=0x1000); // 32bit limit because MemoryBuffer/CMessageBuffers involved etc.
         workunitWriteLimit *= 0x100000;
         workunitWriteLimit *= 0x100000;
     }
     }

+ 14 - 0
thorlcr/master/thgraphmanager.cpp

@@ -429,6 +429,20 @@ bool CJobManager::execute(IConstWorkUnit *workunit, const char *wuid, const char
             throw makeStringException(0, "Attempting to execute a workunit that hasn't been compiled");
             throw makeStringException(0, "Attempting to execute a workunit that hasn't been compiled");
         if ((workunit->getCodeVersion() > ACTIVITY_INTERFACE_VERSION) || (workunit->getCodeVersion() < MIN_ACTIVITY_INTERFACE_VERSION))
         if ((workunit->getCodeVersion() > ACTIVITY_INTERFACE_VERSION) || (workunit->getCodeVersion() < MIN_ACTIVITY_INTERFACE_VERSION))
             throw MakeStringException(0, "Workunit was compiled for eclagent interface version %d, this thor requires version %d..%d", workunit->getCodeVersion(), MIN_ACTIVITY_INTERFACE_VERSION, ACTIVITY_INTERFACE_VERSION);
             throw MakeStringException(0, "Workunit was compiled for eclagent interface version %d, this thor requires version %d..%d", workunit->getCodeVersion(), MIN_ACTIVITY_INTERFACE_VERSION, ACTIVITY_INTERFACE_VERSION);
+        if (workunit->getCodeVersion() == 652)
+        {
+            // Any workunit compiled using eclcc 7.12.0-7.12.18 is not compatible
+            StringBuffer buildVersion, eclVersion;
+            workunit->getBuildVersion(StringBufferAdaptor(buildVersion), StringBufferAdaptor(eclVersion));
+            const char *version = strstr(buildVersion, "7.12.");
+            if (version)
+            {
+                const char *point = version + strlen("7.12.");
+                unsigned pointVer = atoi(point);
+                if (pointVer <= 18)
+                    throw MakeStringException(0, "Workunit was compiled by eclcc version %s which is not compatible with this runtime", buildVersion.str());
+            }
+        }
 
 
         if (debugListener)
         if (debugListener)
         {
         {