瀏覽代碼

Merge pull request #14908 from shamser/issue25778

HPCC-25778 Update ftslave to use containerized logging

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Merged-by: Gavin Halliday <ghalliday@hpccsystems.com>
Gavin Halliday 4 年之前
父節點
當前提交
986aac019c
共有 3 個文件被更改,包括 32 次插入7 次删除
  1. 6 3
      common/remote/rmtspawn.cpp
  2. 2 2
      common/remote/rmtspawn.hpp
  3. 24 2
      dali/ft/ftslave.cpp

+ 6 - 3
common/remote/rmtspawn.cpp

@@ -277,7 +277,7 @@ CRemoteParentInfo::CRemoteParentInfo()
 }
 
 
-bool CRemoteParentInfo::processCommandLine(int argc, char * argv[], StringBuffer &logdir)
+bool CRemoteParentInfo::processCommandLine(int argc, const char * * argv, StringBuffer &logdir)
 {
     if (argc <= 4)
         return false;
@@ -406,12 +406,13 @@ CRemoteSlave::CRemoteSlave(const char * _name, unsigned _tag, unsigned _version,
     version = _version;
 }
 
-void CRemoteSlave::run(int argc, char * argv[])
+void CRemoteSlave::run(int argc, const char * * argv)
 {
     StringBuffer logFile;
     CRemoteParentInfo info;
 
     bool paramsok = info.processCommandLine(argc, argv, logFile);
+#ifndef _CONTAINERIZED
     if (logFile.length()==0) { // not expected! Caller queries logfile location via getConfigurationDirectory
 #ifdef _WIN32
         logFile.append("c:\\HPCCSystems\\logs\\ftslave");
@@ -427,7 +428,9 @@ void CRemoteSlave::run(int argc, char * argv[])
     attachStandardFileLogMsgMonitor(logFile.str(), 0, MSGFIELD_STANDARD, MSGAUD_all, MSGCLS_all, TopDetail, false, true, true);
     queryLogMsgManager()->removeMonitor(queryStderrLogMsgHandler());        // no point logging output to screen if run remote!
     LOG(MCdebugProgress, unknownJob, "Starting %s %s %s %s %s %s %s",slaveName.get(),(argc>1)?argv[1]:"",(argc>2)?argv[2]:"",(argc>3)?argv[3]:"",(argc>4)?argv[4]:"",(argc>5)?argv[5]:"",(argc>6)?argv[6]:"");
-
+#else
+    setupContainerizedLogMsgHandler();
+#endif
 
     if (paramsok)
     {

+ 2 - 2
common/remote/rmtspawn.hpp

@@ -60,7 +60,7 @@ public:
     CRemoteParentInfo();
 
     ISocket * queryMasterSocket()               { return socket; }
-    bool processCommandLine(int argc, char * argv[], StringBuffer &logdir);
+    bool processCommandLine(int argc, const char * * argv, StringBuffer &logdir);
     void log();
     bool sendReply(unsigned version);
 
@@ -78,7 +78,7 @@ class REMOTE_API CRemoteSlave
 public:
     CRemoteSlave(const char * name, unsigned _tag, unsigned _version, bool _stayAlive);
 
-    void run(int argc, char * argv[]);
+    void run(int argc, const char * * argv);
     virtual bool processCommand(byte action, ISocket * masterSocket, MemoryBuffer & msg, MemoryBuffer & results) = 0;
 
 protected:

+ 24 - 2
dali/ft/ftslave.cpp

@@ -136,12 +136,34 @@ public:
     }
 };
 
-
-int main(int argc, char * argv[])
+static constexpr const char * defaultYaml = R"!!(
+version: "1.0"
+ftslave:
+  name: ftslave
+  logging:
+    detail: 50
+)!!";
+
+int main(int argc, const char * * argv)
 {
     InitModuleObjects();
     setDaliServixSocketCaching(true);
     installDefaultFileHooks(nullptr);
+    try
+    {
+        loadConfiguration(defaultYaml, argv, "ftslave", "FTSLAVE", nullptr, nullptr);
+    }
+    catch (IException * e)
+    {
+        OERRLOG(e);
+        e->Release();
+        return 1;
+    }
+    catch(...)
+    {
+        OERRLOG("Failed to load configuration");
+        return 1;
+    }
     FtSlave slave;
     slave.run(argc, argv);
     return 0;