Browse Source

Merge branch 'candidate-5.4.0'

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 9 years ago
parent
commit
94a069634b

+ 1 - 2
common/workunit/workunit.cpp

@@ -5533,12 +5533,12 @@ bool parseGraphScope(const char *scope, StringAttr &graphName, unsigned & graphN
         return false;
 
     graphNum = atoi(scope + CONST_STRLEN(GraphScopePrefix));
+    subGraphId = 0;
 
     const char * colon = strchr(scope, ':');
     if (!colon)
     {
         graphName.set(scope);
-        subGraphId = 0;
         return true;
     }
 
@@ -5546,7 +5546,6 @@ bool parseGraphScope(const char *scope, StringAttr &graphName, unsigned & graphN
     graphName.set(scope, (size32_t)(colon - scope));
     if (MATCHES_CONST_PREFIX(subgraph, SubGraphScopePrefix))
         subGraphId = atoi(subgraph+CONST_STRLEN(SubGraphScopePrefix));
-
     return true;
 }
 

+ 2 - 2
docs/ECLLanguageReference/ECLR_mods/Templ-OPTION.xml

@@ -391,7 +391,7 @@
             </row>
 
             <row>
-              <entry><emphasis>AllowAutoSwitchQueue</emphasis></entry>
+              <entry><emphasis>AllowAutoQueueSwitch</emphasis></entry>
 
               <entry>Default: false</entry>
 
@@ -1224,7 +1224,7 @@
             <row>
               <entry><emphasis>maxCompileThreads</emphasis></entry>
 
-              <entry>Default 4 for eclccserver and 1 for eclcc </entry>
+              <entry>Default 4 for eclccserver and 1 for eclcc</entry>
 
               <entry>Number of compiler instances to compile the c++</entry>
             </row>

+ 18 - 10
docs/HPCCDataHandling/DH-Mods/DH-Mod1.xml

@@ -357,8 +357,8 @@
                   </row>
 
                   <row>
-                    <entry><emphasis role="bold">Name
-                    Prefix</emphasis></entry>
+                    <entry><emphasis role="bold">Target
+                    Scope</emphasis></entry>
 
                     <entry>The prefix for the logical file</entry>
                   </row>
@@ -488,8 +488,8 @@
                   </row>
 
                   <row>
-                    <entry><emphasis role="bold">Name
-                    Prefix</emphasis></entry>
+                    <entry><emphasis role="bold">Target
+                    Scope</emphasis></entry>
 
                     <entry>The prefix for the logical file</entry>
                   </row>
@@ -664,8 +664,8 @@
                   </row>
 
                   <row>
-                    <entry><emphasis role="bold">Name
-                    Prefix</emphasis></entry>
+                    <entry><emphasis role="bold">Target
+                    Scope</emphasis></entry>
 
                     <entry>The prefix for the logical file</entry>
                   </row>
@@ -806,8 +806,8 @@
                   </row>
 
                   <row>
-                    <entry><emphasis role="bold">Name
-                    Prefix</emphasis></entry>
+                    <entry><emphasis role="bold">Target
+                    Scope</emphasis></entry>
 
                     <entry>The prefix for the logical file</entry>
                   </row>
@@ -951,8 +951,8 @@
                   </row>
 
                   <row>
-                    <entry><emphasis role="bold">Name
-                    Prefix</emphasis></entry>
+                    <entry><emphasis role="bold">Target
+                    Scope</emphasis></entry>
 
                     <entry>The prefix for the logical file</entry>
                   </row>
@@ -1346,6 +1346,14 @@
                   <entry>Check this box to retain the superfile
                   structure.</entry>
                 </row>
+
+                <row>
+                  <entry><emphasis role="bold">Preserve
+                  Compression</emphasis></entry>
+
+                  <entry>Check this box to preserve the compression of the
+                  original file when copying</entry>
+                </row>
               </tbody>
             </tgroup>
           </informaltable>

+ 6 - 6
docs/HPCCDataTutorial/DataTutorial.xml

@@ -29,8 +29,8 @@
       <para>LexisNexis and the Knowledge Burst logo are registered trademarks
       of Reed Elsevier Properties Inc., used under license.</para>
 
-      <para>HPCC Systems<superscript>®</superscript> is a registered trademark of LexisNexis Risk Data
-      Management Inc.</para>
+      <para>HPCC Systems<superscript>®</superscript> is a registered trademark
+      of LexisNexis Risk Data Management Inc.</para>
 
       <para>Other products and services may be trademarks or registered
       trademarks of their respective companies.</para>
@@ -272,8 +272,8 @@
 
         <orderedlist>
           <listitem>
-            <para>Download the sample data file from the HPCC Systems<superscript>®</superscript>
-            portal.</para>
+            <para>Download the sample data file from the HPCC
+            Systems<superscript>®</superscript> portal.</para>
 
             <para>The data file is available from links found on <ulink
             url="http://hpccsystems.com/community/docs/data-tutorial-guide">http://hpccsystems.com/community/docs/data-tutorial-guide</ulink>.
@@ -483,7 +483,7 @@
           </listitem>
 
           <listitem>
-            <para>Fill in the <emphasis role="bold">Name Prefix</emphasis>
+            <para>Fill in the <emphasis role="bold">Target Scope</emphasis>
             using the naming convention described earlier: <emphasis
             role="bold">tutorial::</emphasis><emphasis
             role="bold">YN</emphasis> (remember, <emphasis
@@ -801,7 +801,7 @@ COUNT(TutorialYourName.File_OriginalPerson);
             <para><emphasis role="bold">Note: </emphasis>The modified portion
             is shown in <emphasis role="bold">bold</emphasis>.</para>
 
-            <para> </para>
+            <para></para>
           </listitem>
 
           <listitem>

+ 1 - 1
docs/IMDB/IMDB.xml

@@ -424,7 +424,7 @@ Blankline</programlisting></para>
           </listitem>
 
           <listitem>
-            <para>Complete the Name prefix <emphasis
+            <para>Complete the Target Scope <emphasis
             role="bold">~thor::in::IMDB</emphasis></para>
           </listitem>
 

+ 1 - 1
docs/Installing_and_RunningTheHPCCPlatform/Installing_and_RunningTheHPCCPlatform.xml

@@ -1610,7 +1610,7 @@ OUTPUT(L);</programlisting></para>
           </listitem>
 
           <listitem>
-            <para>Complete the Name Prefix as<emphasis>
+            <para>Complete the Target Scope as<emphasis>
             thor</emphasis>.</para>
           </listitem>
 

+ 3 - 3
docs/InstantCloud/InstantCloud.xml

@@ -29,7 +29,7 @@
       message.</para>
 
       <para>LexisNexis and the Knowledge Burst logo are registered trademarks
-      of Reed Elsevier Properties Inc., used under license. </para>
+      of Reed Elsevier Properties Inc., used under license.</para>
 
       <para>HPCC Systems is a registered trademark of LexisNexis Risk Data
       Management Inc.</para>
@@ -40,7 +40,7 @@
       countries.</para>
 
       <para>Other products, logos, and services may be trademarks or
-      registered trademarks of their respective companies. </para>
+      registered trademarks of their respective companies.</para>
 
       <para>All names and example data used in this manual are fictitious. Any
       similarity to actual persons, living or dead, is purely
@@ -1200,7 +1200,7 @@ OUTPUT(L);</programlisting></para>
           </listitem>
 
           <listitem>
-            <para>Complete the Name Prefix as<emphasis>
+            <para>Complete the Target Scope as<emphasis>
             thor</emphasis>.</para>
           </listitem>
 

+ 1 - 1
docs/RunningHPCCinaVirtualMachine/RunningHPCCinaVirtualMachine.xml

@@ -1441,7 +1441,7 @@ OUTPUT(L);</programlisting></para>
             </listitem>
 
             <listitem>
-              <para>Complete the Name Prefix as<emphasis>
+              <para>Complete the Target Scope as<emphasis>
               thor</emphasis>.</para>
             </listitem>
 

BIN
docs/images/GSSprayDict.jpg


BIN
docs/images/IMDB_01.jpg


BIN
docs/images/LZimg002.jpg


+ 1 - 1
ecl/hqlcpp/hqlcpp.cpp

@@ -1755,7 +1755,7 @@ void HqlCppTranslator::cacheOptions()
         DebugOption(options.alwaysUseGraphResults,"alwaysUseGraphResults",false),
         DebugOption(options.noConditionalLinks,"noConditionalLinks",false),
         DebugOption(options.reportAssertFilenameTail,"reportAssertFilenameTail",false),        
-        DebugOption(options.newBalancedSpotter,"newBalancedSpotter",true),
+        DebugOption(options.newBalancedSpotter,"newBalancedSpotter",false),
         DebugOption(options.keyedJoinPreservesOrder,"keyedJoinPreservesOrder",true),
         DebugOption(options.expandSelectCreateRow,"expandSelectCreateRow",false),
         DebugOption(options.obfuscateOutput,"obfuscateOutput",false),

+ 2 - 2
esp/eclwatch/ws_XSLT/dfu_search.xslt

@@ -182,12 +182,12 @@
 
                                 if (first)
                                 {
-                                    url += "?ClusterName=" + cluster;
+                                    url += "?NodeGroup=" + cluster;
                                     first = false;
                                 }
                                 else
                                 {
-                                    url += "&ClusterName=" + cluster;
+                                    url += "&NodeGroup=" + cluster;
                                 }
                             }
 

+ 1 - 1
esp/services/ws_smc/ws_smcService.cpp

@@ -2103,7 +2103,7 @@ inline const char *controlCmdMessage(int cmd)
     case CRoxieControlCmd_DETACH:
         return "<control:lockDali/>";
     case CRoxieControlCmd_RELOAD:
-        return "<control:reload/>";
+        return "<control:reload forceRetry='1' />";
     case CRoxieControlCmd_STATE:
         return "<control:state/>";
     default:

+ 1 - 0
esp/services/ws_workunits/ws_workunitsHelpers.cpp

@@ -808,6 +808,7 @@ void WsWuInfo::getGraphTimingData(IArrayOf<IConstECLTimingData> &timingData, uns
             g->setName(name.str());
             g->setGraphNum(graphNum);
             g->setSubGraphNum(subGraphId); // Use the Id - the number is not known
+            g->setGID(subGraphId);
             g->setMS(time);
             g->setMin(time/60000);
             timingData.append(*g.getClear());

+ 2 - 1
esp/src/eclwatch/ESPQuery.js

@@ -119,7 +119,8 @@ define([
                 request:{
                     QueryId: this.Id,
                     QuerySet: this.QuerySetId,
-                    IncludeSuperFiles: 1
+                    IncludeSuperFiles: 1,
+                    IncludeStateOnClusters: 1
                 }
             }).then(function (response) {
                 if (lang.exists("WUQueryDetailsResponse", response)) {

+ 4 - 1
esp/src/eclwatch/HelpersWidget.js

@@ -64,7 +64,6 @@ define([
                     case "res":
                         params = "/WUFile/res.txt?Wuid=" + this.wu.Wuid + "&Type=" + item.Orig.Type;
                         break;
-                    case "ThorLog":
                     case "EclAgentLog":
                         params = "/WUFile/" + item.Type + "?Wuid=" + this.wu.Wuid + "&Process=" + item.Orig.PID + "&Name=" + item.Orig.Name + "&Type=" + item.Orig.Type;
                         break;
@@ -88,6 +87,10 @@ define([
                         if (option !== undefined)
                             params = "/WUFile?Wuid=" + this.wu.Wuid + "&Name=" + item.Orig.Name + "&IPAddress=" + item.Orig.IPAddress + "&Description=" + item.Orig.Description + "&Type=" + item.Orig.Type;
                         break;
+                    default:
+                        if (item.Type.indexOf("ThorLog") === 0)
+                            params = "/WUFile/" + item.Type + "?Wuid=" + this.wu.Wuid + "&Process=" + item.Orig.PID + "&Name=" + item.Orig.Name + "&Type=" + item.Orig.Type;
+                        break;
                 }
 
                 return ESPRequest.getBaseURL() + params + (option ? "&Option=" + option : "&Option=1");

+ 8 - 1
esp/src/eclwatch/LZBrowseWidget.js

@@ -78,6 +78,7 @@ define([
         templateString: template,
         baseClass: "LZBrowseWidget",
         i18n: nlsHPCC,
+        firstLoad: true,
 
         postCreate: function (args) {
             this.inherited(arguments);
@@ -555,8 +556,13 @@ define([
                     }),
                     displayName: tree({
                         label: this.i18n.Name,
-                        collapseOnRefresh: true,
                         sortable: false,
+                        shouldExpand: function (row, level, previouslyExpanded) {
+                            if (context.firstLoad === true) {
+                                return true;
+                            }
+                            return previouslyExpanded;
+                        },
                         formatter: function (_name, row) {
                             var img = "";
                             var name = _name;
@@ -688,6 +694,7 @@ define([
         },
 
         refreshGrid: function (clearSelection) {
+            this.firstLoad = false;
             this.landingZonesGrid.set("query", {
                 id: "*"
             });

+ 1 - 1
esp/src/eclwatch/LogWidget.js

@@ -231,7 +231,7 @@ define([
         refreshGrid: function (clearSelection) {
             this.rawText.setText(this.i18n.loadingMessage);
             var filter = lang.mixin(this.getFilter(), {
-                Name: this.params.getLogDirectory() + "/" + this.logTargetSelect.get("value"),
+                Name: "//" + this.params.getNetaddress()+this.params.getLogDirectory() + "/" + this.logTargetSelect.get("value"),
                 Type: "tpcomp_log",
                 LoadData: 1
             });

+ 24 - 6
esp/src/eclwatch/QuerySetDetailsWidget.js

@@ -88,6 +88,7 @@ define([
             this.librariesUsedTab = registry.byId(this.id + "_LibrariesUsed");
             this.workunitsTab = registry.byId(this.id + "_Workunit");
             this.testPagesTab = registry.byId(this.id + "_TestPages");
+            this.suspended = registry.byId(this.id + "Suspended");
         },
 
         //  Hitched actions  ---
@@ -236,13 +237,20 @@ define([
             } else if (name === "SuperFiles") {
                 if (lang.exists("SuperFile.length", newValue)) {
                     this.superFilesTab.set("title", this.i18n.SuperFiles + " (" + newValue.SuperFile.length + ")");
-                    var tooltip = "";
+                    var superFileToolTip = "";
+                    var logicalFileToolTip = "";
                     for (var i = 0; i < newValue.SuperFile.length; ++i) {
-                        if (tooltip != "")
-                            tooltip += "\n";
-                        tooltip += newValue.SuperFile[i];
+                        if (superFileToolTip != "")
+                            superFileToolTip += "\n";
+                        superFileToolTip += newValue.SuperFile[i].Name;
                     }
-                    this.superFilesTab.set("tooltip", tooltip);
+                    this.superFilesTab.set("tooltip", superFileToolTip);
+                    for (var i = 0; i < newValue.SuperFile.length; ++i) {
+                        if (logicalFileToolTip != "")
+                            logicalFileToolTip += "\n";
+                        logicalFileToolTip += newValue.SuperFile[i].SubFiles.File;
+                    }
+                    this.logicalFilesTab.set("tooltip", logicalFileToolTip);
                 }
                 var count = 0;
                 arrayUtil.forEach(context.query.SuperFiles.SuperFile, function (item, idx) {
@@ -262,6 +270,16 @@ define([
                 this.librariesUsedTab.set("tooltip", tooltip);
             } else if (name === "Clusters") {
                 if (lang.exists("ClusterQueryState.length", newValue)) {
+                    var checkIfSuspended = false;
+                    if (newValue.ClusterQueryState[0].MixedNodeStates === true) {
+                        dom.byId(this.id + "SuspendCluster").src = dojoConfig.getImageURL("mixwarn.png");
+                        checkIfSuspended = true;
+                    } else if (newValue.ClusterQueryState[0].State === "Suspended") {
+                        dom.byId(this.id + "SuspendCluster").src = dojoConfig.getImageURL("errwarn.png");
+                        checkIfSuspended = true;
+                    }
+                    this.suspended.set("checked", checkIfSuspended);
+                    this.suspended.set("readOnly", checkIfSuspended);
                     this.errorsTab.set("title", this.i18n.ErrorsStatus + " (" + newValue.ClusterQueryState.length + ")");
                     var tooltip = "";
                     for (var i = 0; i < newValue.ClusterQueryState.length; ++i) {
@@ -274,4 +292,4 @@ define([
             }
         }
     });
-});
+});

+ 0 - 3
esp/src/eclwatch/WsTopology.js

@@ -214,9 +214,6 @@ define([
         },
         TpGetComponentFile: function (params) {
             params.handleAs = "text";
-            if (params.request.CompType === "EclAgentProcess") {
-                params.request.CompType = "AgentExecProcess";
-            }
             return ESPRequest.send("WsTopology", "TpGetComponentFile", params);
         },
         TpLogFile: function (params) {

+ 1 - 0
esp/src/eclwatch/templates/DFUQueryWidget.html

@@ -67,6 +67,7 @@
                                         <input id="${id}CopyTargetWrap" title="${i18n.Wrap}:" name="Wrap" data-dojo-type="dijit.form.CheckBox" />
                                         <input id="${id}CopyTargetRetainSuperfileStructure" title="${i18n.RetainSuperfileStructure}:" name="superCopy" data-dojo-type="dijit.form.CheckBox" />
                                         <input id="${id}CopyPreserveCompression" title="${i18n.PreserveCompression}:" checked="true" name="preserveCompression" data-dojo-type="dijit.form.CheckBox" />
+                                        <input id="${id}CopyTargetReplicate" title="${i18n.Replicate}:" name="replicate" data-dojo-type="dijit.form.CheckBox" />
                                     </div>
                                 </div>
                                 <div class="dijitDialogPaneActionBar">

+ 1 - 0
esp/src/eclwatch/templates/LFDetailsWidget.html

@@ -28,6 +28,7 @@
                                         <input id="${id}CopyTargetCompress" title="${i18n.Compress}:" name="compress" data-dojo-type="dijit.form.CheckBox" />
                                         <input id="${id}CopyTargetWrap" title="${i18n.Wrap}:" name="Wrap" data-dojo-type="dijit.form.CheckBox" />
                                         <input id="${id}CopyTargetRetainSuperfileStructure" title="${i18n.RetainSuperfileStructure}:" name="superCopy" data-dojo-type="dijit.form.CheckBox" />
+                                        <input id="${id}CopyPreserveCompression" title="${i18n.PreserveCompression}:" checked="true" name="preserveCompression" data-dojo-type="dijit.form.CheckBox" />
                                     </div>
                                 </div>
                                 <div class="dijitDialogPaneActionBar">

+ 6 - 2
system/jlib/jptree.cpp

@@ -7226,9 +7226,13 @@ IPropertyTree *createPTreeFromHttpParameters(const char *name, IProperties *para
     Owned<IPropertyIterator> props = parameters->getIterator();
     ForEach(*props)
     {
-        const char *key = props->getPropKey();
+        StringBuffer key = props->getPropKey();
+        if (!key.length() || key.charAt(key.length()-1)=='!')
+            continue;
+        if (skipLeadingDotParameters && key.charAt(0)=='.')
+            continue;
         const char *value = parameters->queryProp(key);
-        if (skipLeadingDotParameters && key && *key=='.')
+        if (!value || !*value)
             continue;
         ensureHttpParameter(pt, key, value);
     }