From ca9fc9e66881462ef8349bb5aa51501e4b7aec0a Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@u-psud.fr>
Date: Fri, 12 Oct 2018 12:07:40 +0200
Subject: [PATCH] check temporary directory for HTCondor

---
 src/core/tandem_run/tandemcondorprocess.cpp | 42 +++++++++++++++------
 src/core/tandem_run/tandemcondorprocess.h   | 11 ++----
 2 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/src/core/tandem_run/tandemcondorprocess.cpp b/src/core/tandem_run/tandemcondorprocess.cpp
index 23f381de..79b22eeb 100644
--- a/src/core/tandem_run/tandemcondorprocess.cpp
+++ b/src/core/tandem_run/tandemcondorprocess.cpp
@@ -66,9 +66,6 @@ TandemCondorProcess::TandemCondorProcess(MainWindow *p_main_window,
   QString condor_tmp_dir =
     QString("%1/xtpcpp")
       .arg(settings.value("condor/tmp_dir", "/gorgone/pappso/tmp").toString());
-  _p_tmp_dir = new QTemporaryDir(condor_tmp_dir);
-  _p_tmp_dir->setAutoRemove(
-    settings.value("condor/tmp_dir_autoremove", true).toBool());
   _condor_submit_command =
     settings.value("condor/submit", "/usr/bin/condor_submit").toString();
   _condor_q_command =
@@ -86,6 +83,30 @@ TandemCondorProcess::TandemCondorProcess(MainWindow *p_main_window,
                     settings.value("condor/condor_q", "/usr/bin/condor_q"));
   settings.setValue("condor/condor_rm",
                     settings.value("condor/condor_rm", "/usr/bin/condor_rm"));
+}
+
+TandemCondorProcess::~TandemCondorProcess()
+{
+  if(_p_tmp_dir != nullptr)
+    {
+      delete _p_tmp_dir;
+    }
+}
+
+void
+TandemCondorProcess::prepareTemporaryDirectory()
+{
+
+  QSettings settings;
+  QString condor_tmp_dir = QString("%1/xtpcpp");
+  if(_p_tmp_dir != nullptr)
+    {
+      delete _p_tmp_dir;
+      _p_tmp_dir = nullptr;
+    }
+  _p_tmp_dir = new QTemporaryDir(condor_tmp_dir);
+  _p_tmp_dir->setAutoRemove(
+    settings.value("condor/tmp_dir_autoremove", true).toBool());
 
   if(!_p_tmp_dir->isValid())
     {
@@ -95,11 +116,6 @@ TandemCondorProcess::TandemCondorProcess(MainWindow *p_main_window,
           .arg(condor_tmp_dir));
     }
 }
-
-TandemCondorProcess::~TandemCondorProcess()
-{
-  delete _p_tmp_dir;
-}
 unsigned int
 TandemCondorProcess::getCondorJobSize() const
 {
@@ -133,7 +149,10 @@ TandemCondorProcess::prepareXmlDatabaseFile()
 void
 TandemCondorProcess::run()
 {
-  qDebug() << "TandemCondorProcess::run begin ";
+  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
+
+  prepareTemporaryDirectory();
+
   TandemParametersFile orig_parameter_file(_tandem_run_batch._preset_file);
   _preset_file = QString("%1/%2")
                    .arg(_p_tmp_dir->path())
@@ -613,8 +632,9 @@ TandemCondorProcess::setCondorJobStatus(std::int8_t count_status[10])
 {
 
   QString status_message =
-    QString("%1 unexpanded jobs\n%2 idle jobs\n%3 running jobs\n%4 removed "
-            "jobs\n%5 completed jobs\n%6 held jobs\n%7 submission errors")
+    QString(
+      "%1 unexpanded jobs\n%2 idle jobs\n%3 running jobs\n%4 removed "
+      "jobs\n%5 completed jobs\n%6 held jobs\n%7 submission errors")
       .arg(count_status[0])
       .arg(count_status[1])
       .arg(count_status[2])
diff --git a/src/core/tandem_run/tandemcondorprocess.h b/src/core/tandem_run/tandemcondorprocess.h
index 2f89daba..58a7390a 100644
--- a/src/core/tandem_run/tandemcondorprocess.h
+++ b/src/core/tandem_run/tandemcondorprocess.h
@@ -23,13 +23,9 @@
  *     You should have received a copy of the GNU General Public License
  *     along with XTPcpp.  If not, see <http://www.gnu.org/licenses/>.
  *
- * Contributors:
- *     Olivier Langella <olivier.langella@u-psud.fr> - initial API and
- *implementation
  ******************************************************************************/
 
-#ifndef TANDEMCONDORPROCESS_H
-#define TANDEMCONDORPROCESS_H
+#pragma once
 
 #include "tandembatchprocess.h"
 #include <QTemporaryDir>
@@ -54,9 +50,10 @@ class TandemCondorProcess : public TandemBatchProcess
   void getCondorJobState();
   void parseCondorQueue(QString &condor_q_xml);
   void condorRemoveJob();
+  void prepareTemporaryDirectory();
 
   private:
-  QTemporaryDir *_p_tmp_dir;
+  QTemporaryDir *_p_tmp_dir = nullptr;
   QString _condor_submit_command;
   QString _condor_q_command;
   QString _condor_rm_command;
@@ -67,5 +64,3 @@ class TandemCondorProcess : public TandemBatchProcess
   unsigned int _condor_status_timer_millisecond = 1000;
   unsigned int _condor_completed_jobs           = 0;
 };
-
-#endif // TANDECONDORPROCESS_H
-- 
GitLab