瀏覽代碼

HPCC-9882 Check and return exception message from removeEntry()

This fix is based on the fix in pull request 4968 which allows the
removeEntry() to send out exception message to caller. This fix sets
the throwException flag to true when WsDFU calls the removeEntry(). If
an exception is catched, the existing code will sent the exception
message to EclWatch to display.
Kevin Wang 11 年之前
父節點
當前提交
6bf039be10
共有 2 個文件被更改,包括 7 次插入2 次删除
  1. 4 1
      esp/services/ws_dfu/ws_dfuService.cpp
  2. 3 1
      esp/smc/SMCLib/LogicFileWrapper.cpp

+ 4 - 1
esp/services/ws_dfu/ws_dfuService.cpp

@@ -1181,8 +1181,11 @@ bool CWsDfuEx::DFUDeleteFiles(IEspContext &context, IEspDFUArrayActionRequest &r
                         superFileNames.append(filename);
                     }
                 }
-                if (!fdir.removeEntry(filename, userdesc, NULL, REMOVE_FILE_SDS_CONNECT_TIMEOUT))
+                if (!fdir.removeEntry(filename, userdesc, NULL, REMOVE_FILE_SDS_CONNECT_TIMEOUT, true))
+                {
+                    filesCannotBeDeleted.append(filename);//Add the file to the 'CannotBeDeleted' list for future use
                     returnStr.appendf("<Message><Value>Failed to delete %s</Value></Message>", filename);
+                }
                 else
                 {
                     PROGLOG("Deleted Logical File: %s by: %s\n",filename, username.str());

+ 3 - 1
esp/smc/SMCLib/LogicFileWrapper.cpp

@@ -26,6 +26,8 @@
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
 
+#define REMOVE_FILE_SDS_CONNECT_TIMEOUT (1000*15)  // 15 seconds
+
 LogicFileWrapper::LogicFileWrapper()
 {
 
@@ -77,7 +79,7 @@ bool LogicFileWrapper::doDeleteFile(const char* logicalName,const char *cluster,
             }
         }
 
-        if (!fdir.removeEntry(cname.str(), udesc))
+        if (!fdir.removeEntry(cname.str(), udesc, NULL, REMOVE_FILE_SDS_CONNECT_TIMEOUT, true))
             returnStr.appendf("<Message><Value>Failed to delete %s</Value></Message>", cname.str());
         else
         {