Browse Source

HPCC-17886 Revise based on the last review

1. Change default timeout to -1; 2. return WUID and Query ID
when available.

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
wangkx 7 years ago
parent
commit
b52e0ae7ff

+ 3 - 1
esp/scm/ws_workunits.ecm

@@ -2128,6 +2128,8 @@ ESPStruct [nil_remove] WUEclDefinitionActionResult
 {
     string EclDefinition;
     string Action;
+    string WUID;
+    string QueryID;
     string Result;
 };
 
@@ -2152,7 +2154,7 @@ ESPrequest [nil_remove] WUEclDefinitionActionRequest
     bool UpdateSuperfiles(false); //Publish
     bool UpdateCloneFrom(false); //Publish
     bool DontAppendCluster(false); //Publish
-    int MsToWait(-2);//default -2 : deploy(-1), publish(10000), and syntaxCheck(60000))
+    int MsToWait(-1);
     int TimeLimit(-1); //Publish
     int WarnTimeLimit(-1); //Publish
 };

+ 15 - 20
esp/services/ws_workunits/ws_workunitsService.cpp

@@ -5510,14 +5510,18 @@ bool CWsWorkunitsEx::readDeployWUResponse(CWUDeployWorkunitResponse* deployRespo
     return isCompiled;
 }
 
-void CWsWorkunitsEx::addEclDefinitionActionResult(const char *eclDefinition, const char *result,
-    const char* strAction, bool logResult, IArrayOf<IConstWUEclDefinitionActionResult> &results)
+void CWsWorkunitsEx::addEclDefinitionActionResult(const char *eclDefinition, const char *result, const char *wuid,
+    const char *queryID, const char* strAction, bool logResult, IArrayOf<IConstWUEclDefinitionActionResult> &results)
 {
     Owned<IEspWUEclDefinitionActionResult> res = createWUEclDefinitionActionResult();
     if (!isEmptyString(eclDefinition))
         res->setEclDefinition(eclDefinition);
     res->setAction(strAction);
     res->setResult(result);
+    if (!isEmptyString(wuid))
+        res->setWUID(wuid);
+    if (!isEmptyString(queryID))
+        res->setQueryID(queryID);
     results.append(*res.getClear());
     if (logResult)
         PROGLOG("%s", result);
@@ -5546,7 +5550,7 @@ void CWsWorkunitsEx::checkEclDefinitionSyntax(IEspContext &context, const char *
         result.append(" timed out.");
 
     gatherWUException(cw->getExceptions(), result);
-    addEclDefinitionActionResult(eclDefinition, result.str(), "SyntaxCheck", true, results);
+    addEclDefinitionActionResult(eclDefinition, result.str(), wuid.str(), NULL, "SyntaxCheck", true, results);
     cw.clear();
 
     if (wuTimeout)
@@ -5554,7 +5558,7 @@ void CWsWorkunitsEx::checkEclDefinitionSyntax(IEspContext &context, const char *
     if (!factory->deleteWorkUnit(wuid.str()))
     {
         result.setf(" Workunit %s cannot be deleted now. You may delete it when its status changes.", wuid.str());
-        addEclDefinitionActionResult(eclDefinition, result.str(), "SyntaxCheck", true, results);
+        addEclDefinitionActionResult(eclDefinition, result.str(), wuid.str(), NULL, "SyntaxCheck", true, results);
     }
 }
 
@@ -5579,7 +5583,7 @@ void CWsWorkunitsEx::deployEclDefinition(IEspContext &context, const char *targe
 {
     StringBuffer wuid, finalResult;
     deployEclDefinition(context, target, eclDefinition, msToWait, wuid, finalResult);
-    addEclDefinitionActionResult(eclDefinition, finalResult.str(), "Deploy", true, results);
+    addEclDefinitionActionResult(eclDefinition, finalResult.str(), wuid.str(), NULL, "Deploy", true, results);
 }
 
 void CWsWorkunitsEx::publishEclDefinition(IEspContext &context, const char *target,  const char *eclDefinition,
@@ -5589,7 +5593,7 @@ void CWsWorkunitsEx::publishEclDefinition(IEspContext &context, const char *targ
     if (priorityReq.trim().length() && !isValidPriorityValue(priorityReq.str()))
     {
         VStringBuffer msg("Invalid Priority: %s", priorityReq.str());
-        addEclDefinitionActionResult(eclDefinition, msg.str(), "Publish", true, results);
+        addEclDefinitionActionResult(eclDefinition, msg.str(), NULL, NULL, "Publish", true, results);
         return;
     }
 
@@ -5597,7 +5601,7 @@ void CWsWorkunitsEx::publishEclDefinition(IEspContext &context, const char *targ
     if (memoryLimitReq.trim().length() && !isValidMemoryValue(memoryLimitReq.str()))
     {
         VStringBuffer msg("Invalid MemoryLimit: %s", memoryLimitReq.str());
-        addEclDefinitionActionResult(eclDefinition, msg.str(), "Publish", true, results);
+        addEclDefinitionActionResult(eclDefinition, msg.str(), NULL, NULL, "Publish", true, results);
         return;
     }
 
@@ -5608,13 +5612,13 @@ void CWsWorkunitsEx::publishEclDefinition(IEspContext &context, const char *targ
     StringBuffer wuid, finalResult;
     if (!deployEclDefinition(context, target, eclDefinition, msToWait, wuid, finalResult))
     {
-        addEclDefinitionActionResult(eclDefinition, finalResult.str(), "Publish", true, results);
+        addEclDefinitionActionResult(eclDefinition, finalResult.str(), wuid.str(), NULL, "Publish", true, results);
         return;
     }
     int timeLeft = msToWait - (time(&timenow) - startTime);
     if (timeLeft <= 0)
     {
-        addEclDefinitionActionResult(eclDefinition, "Timed out after deployment", "Publish", true, results);
+        addEclDefinitionActionResult(eclDefinition, "Timed out after deployment", wuid.str(), NULL, "Publish", true, results);
         return;
     }
 
@@ -5680,7 +5684,7 @@ void CWsWorkunitsEx::publishEclDefinition(IEspContext &context, const char *targ
         gatherExceptionMessage(me, finalResult);
 
     gatherQueryFileCopyErrors(publishResponse->getFileErrors(), finalResult);
-    addEclDefinitionActionResult(eclDefinition, finalResult.str(), "Publish", true, results);
+    addEclDefinitionActionResult(eclDefinition, finalResult.str(), wuid.str(), id, "Publish", true, results);
 }
 
 bool CWsWorkunitsEx::onWUEclDefinitionAction(IEspContext &context, IEspWUEclDefinitionActionRequest &req, IEspWUEclDefinitionActionResponse &resp)
@@ -5698,18 +5702,9 @@ bool CWsWorkunitsEx::onWUEclDefinitionAction(IEspContext &context, IEspWUEclDefi
         if (target.trim().isEmpty())
             throw MakeStringException(ECLWATCH_INVALID_INPUT,"Target not defined in onWUEclDefinitionAction.");
 
-        int msToWait = req.getMsToWait();
-        if (msToWait == -2) //default: consistent with WUPublishWorkunit/WUDeployWorkunit/WUSyntaxCheckECL
-        {
-            if (action == CEclDefinitionActions_SyntaxCheck)
-                msToWait = 60000;
-            else if (action == CEclDefinitionActions_Deploy)
-                msToWait = -1;
-            else
-                msToWait = 10000;
-        }
         IArrayOf<IConstWUEclDefinitionActionResult> results;
         StringArray &eclDefinitions = req.getEclDefinitions();
+        int msToWait = req.getMsToWait();
         for (aindex_t i = 0; i < eclDefinitions.length(); i++)
         {
             StringBuffer eclDefinitionName = eclDefinitions.item(i);

+ 2 - 2
esp/services/ws_workunits/ws_workunitsService.hpp

@@ -304,8 +304,8 @@ private:
     const char* gatherExceptionMessage(const IMultiException &me, StringBuffer &exceptionMsg);
     const char* gatherWUException(IConstWUExceptionIterator &it, StringBuffer &exceptionMsg);
     const char* gatherECLException(IArrayOf<IConstECLException> &exceptions, StringBuffer &exceptionMsg);
-    void addEclDefinitionActionResult(const char *eclDefinition, const char *result, const char* strAction, bool logResult,
-        IArrayOf<IConstWUEclDefinitionActionResult> &results);
+    void addEclDefinitionActionResult(const char *eclDefinition, const char *result, const char *wuid,
+        const char *queryID, const char* strAction, bool logResult, IArrayOf<IConstWUEclDefinitionActionResult> &results);
 
     unsigned awusCacheMinutes;
     StringBuffer queryDirectory;